什么是微服务?

简介: 浅谈微服务、SOA

b8fb0989fa7459fe2c1138c7c14658e6154ce32a


8dc0a3dfc16b7023947e595c5865fba526c9ce3e

a53d4f00f9e81347527f46e3466496f45bec1259

97ef115d29323498b242d55f4fb152bbfedc2a70


8d47a767d5383302b65c2aaeff391e44d5cb7a07

1e456604a02ef93ab489d8ff74d021003a1dc9ae


缺点一:项目过于臃肿


当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。


缺点二:资源无法隔离


就像刚刚小灰的经历一样,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。


缺点三:无法灵活扩展


当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群:

04a30bc45fbd2ee2eb0e36066e021c7e936be313

但是这种扩展并非灵活的扩展。比如我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,这一点在单体系统是做不到的。


d4207f0dce9479eefd1eaac93e50a83a6871f5ea



什么是微服务?


微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。


究竟什么是微服务呢?我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:

c705ce4f897d94777f95bd210a0c0f4ce405db06


In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.



谷歌翻译如下:


简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。



说了这么多概念,微服务有什么样的具体特点呢?


1.独立部署,灵活扩展


传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。


用一张经典的图来表现,就是下面这个样子:

e0103db9b9201d0b2073f0cb100c3cfd28559ca4


图中左边是单体架构的集群,右边是微服务集群。


什么意思呢?比如根据每个服务的吞吐量不同,支付服务需要部署20台机器,用户服务需要部署30台机器,而商品服务只需要部署10台机器。这种灵活部署只有微服务架构才能实现。


而近几年流行的Docker,为微服务架构提供了有效的容器。



2.资源的有效隔离


微服务设计的原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

9321ad792241081206bf064b815373ea9a056358



同时,由于每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离。



3.团队组织架构的调整


微服务设计的思想也改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端有前端的团队,后端有后端的团队,DBA有DBA的团队,测试有测试的团队。

4b96d2ec18e0f2504eeff98a8e182f218a686cbc


而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。

448324a448399dc958890a4077c7ff67a649a33f



当然,这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对



微服务与面向服务架构SOA的区别

c8776f39dc358abda87c6fde2e7c844c1241d3f0


SOA是什么样子呢?可以是下面这样的Web Service:

10a3c95d582484e6779c5170f69dde7991d69f63


也可以是下面这样的ESB企业服务总线:

23317d98774fa297869d5b734d2f662ab60adf78


总之,SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署。

919d7ff024b0613bc290ccdb650b4021bb249e85

微服务架构的不足

021d33f6adc34ae33a2a9b5caf4af9824bdc69e2


本文转自公众号:程序员小灰



目录
相关文章
|
5月前
|
存储 弹性计算 固态存储
2026年阿里云服务器4核8G配置收费标准与活动价格,最优购买方案与价格对比
2026年阿里云4核8G云服务器提供多样化实例选择,价格跨度显著。经济型e实例年费约1477元起,适配个人网站、开发测试等轻量场景;通用算力型u2a实例年费约898元起,以高性价比支撑企业通用业务;计算型c9i实例年费约3147元起,聚焦高性能计算场景。用户可通过新客专属折扣、九代实例年付6.4折、领券满减等策略降低成本,结合带宽降配+CDN加速、弹性云盘等技巧进一步优化成本,适配小型网站、电商后台、在线游戏等多场景需求。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型应用:医疗视角看脑电图新应用:大模型让脑电波直观的表达.79
本文介绍脑电图(EEG)与大模型融合的前沿应用:无需开刀,仅通过头皮电极采集脑电信号,即可实时解码“想喝水”“想说话”等大脑意图,并转换为自然语言文字。该技术突破传统诊断边界,已在渐冻症沟通、神经康复和脑机交互中落地,兼具无创性、实时性与临床实用性。
235 17
|
6月前
|
人工智能 自然语言处理 API
全面认识MCP:大模型连接真实世界的“USB-C接口”
MCP(模型上下文协议)是AI时代的“万能接口”,由Anthropic提出,旨在统一大模型与工具、数据源的连接标准。它简化集成、提升任务处理能力,推动AI智能体从对话走向行动,重塑AI应用生态。
|
2月前
|
人工智能 算法 自动驾驶
数字孪生驱动的智慧交通系统技术架构与实现
本文提出基于融合仿真引擎的智慧交通数字孪生系统,构建五层架构,深度融合IoT、大数据、AI与数字孪生技术,实现交通流实时感知、信号自适应优化、公交智能调度、停车引导及自动驾驶仿真等核心能力,推动交通治理从“被动响应”迈向“主动预见”。(239字)
|
2月前
|
人工智能 自然语言处理 JavaScript
【含新版安装包】无需命令行 OpenClaw 一键部署操作教程
OpenClaw v2.6.0 是专为 Windows 设计的 AI 聊天网关一键部署工具(虾壳云),全程可视化操作,无需命令行或手动配置环境。内置 Python/Node.js/Git 等全部依赖,5 分钟快速安装,支持键鼠模拟与自动化办公。新手友好,仅需关闭杀软、选纯英文路径即可轻松上手。(239字)
|
5月前
|
存储 人工智能 自然语言处理
免费的智能客服系统推荐(2026年1月最新)
2026年,智能客服加速普及,但中小企面临成本高、部署难、准确率低等痛点。瓴羊Quick Service推出永久免费基础版,依托通义千问大模型,意图识别准确率达92%,5分钟零代码部署,支持全渠道接入与安全合规,助力企业降本增效、提升30%客户满意度。(239字)
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
迁移学习:让小数据也能驱动AI大模型
迁移学习:让小数据也能驱动AI大模型
476 99
|
6月前
|
人工智能 监控 Kubernetes
「测试面试官手记」:那些让我眼前一亮的候选人
作为面试官,我想对测试工程师说:面试不是考试,而是技术思维的共鸣。看重的不仅是技能,更是沟通、思考与成长潜力。别让简历成“八股”,用真实项目展现解决问题的能力。别怕问题不会,要会结构化表达。从执行者走向设计者,主动思考质量优化,才能脱颖而出。AI时代,持续学习者赢未来。
|
6月前
|
jenkins Java 持续交付
Jenkins前置配置
本文介绍Jenkins与GitLab集成的完整配置流程:包括GitLab账号创建、SSH密钥配置、API Token生成,Jenkins中GitLab连接、凭据管理、全局Git信息设置,以及节点服务器环境搭建(JDK、Maven、Node、Docker等),并详细说明Jenkins节点通过SSH方式接入的步骤,实现自动化拉取代码、构建打包与持续集成。