当前位置: 首页 > news >正文

单体架构,分布式系统的差别在哪里?


目录


文章目录


前言


一、单体架构是什么?


二、分布式系统(微服务)是什么?


三、总结

前言



随着技术日新月异的发展,最近几年微服务和分布式技术成为主流。每一个好的解决方案不一定是直接设计出来的,但每一个优秀的架构都必须承受得住业务的考验和需求驱动的积累。最初我们开发系统都是在单个的应用上进行开发、测试、部署和运维等。每次新的需求迭代都将可能涉及到整个系统的修改,尤其是庞大而臃肿的业务系统需要进行大量的数据增删改查操作,开发起来变得非常麻烦。为了应对更高的并发和业务需求,解决单个应用的缺点,把庞大复杂的单体应用按照业务拆分成多个子业务模块,可进行垂直拆分或水平拆分,从而达到更高效的开发、更好的管理和维护的目的,这就是所谓的分布式系统。


一、单体架构是什么?



1.1 定义


一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。


1.2 单体应用举例
单体应用集成了前端页面和后端接口服务及业务逻辑和数据操作于一体的单个完整系统,Struts1、Struts2及SSH、SSM架构的系统等,单个应用囊括了所有业务模块。

1.3 单体架构示意图
![](https://i-blog.csdnimg.cn/blog_migrate/4d489b98f2d9229d85fae97aad813c64.png)


1.4 单体应用优缺点
1.4.1 优点

- 易于集中式开发、测试、管理、部署。
- 无需考虑跨语言。
- 能避免功能重复开发(相对分布式)。

1.4.2 缺点

- 团队合作困难
- 代码的维护、重构、部署都比较难。
- 稳定性、可用性(停机维护)、扩展性不高。

当用户规模越来越大时,单体应用可以通过集群来应对。如通过DNS、Nginx或硬件F5分配集群中的服务器来提供服务。它的缺点(开发效率低、可维护差稳定性查)导致需要对单体应用进行拆分,垂直拆分或水平拆分。


二、分布式系统(微服务)是什么?



2.1 微服务定义


微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。


2.2 微服务举例


市面上目前典型主流的微服务架构有SpringBoot、SpringCloud、Dubbo,微服务兴起的时代,除了官方几个代表的框架外,各大厂商也开始了各自开源的分布式框架。除了上面说的Dubbo外,还有腾讯的Tars,京东的JSF,新浪的Motan等。


2.3 示意图


![](https://i-blog.csdnimg.cn/blog_migrate/eb32ddc4a941334e8e364ee7749cebdc.png)


2.4 优缺点


2.4.1 优点

- 每个业务模块独立开发、测试、部署和管理。
- 每个业务模块之间相互的影响小,按需分配资源。
- 所有业务模块既是独立,又组成一个完整整体。
- 可通过配置进行上游调用的升级或降级。
- 支持高并发、高扩展、高可用等大型系统。

2.4.2 缺点

- 资源耗用相对单体应用增大,每个业务模块需单独部署。
- 分布式数据一致性问题(CAP)。
- 系统维护成本加大,需要更多的人工介入。
- 业务间耦合度变高,调用关系错综复杂。

尽管分布式微服务给开发人员带来极大的使用便利性和系统性能上的优越性。但也暴露了分布式难以解决的一些问题,著名的CAP理论就是其中的一个典型。不过整体来说还是利大于弊,选择分布式微服务架构是未来的趋势,也是淘汰旧技术的必经之路。

三、总结



从单体架构到分布式微服务架构,我们可以把单体应用简单分为水平拆分或垂直拆分两种方式。如一个电商系统,包含:商品模块、会员模块、物流模块、支付模块、订单模块几个核心模块。水平拆分,单体应用把所有这些模块集中在一个电商系统里面,水平拆分后分为:商品系统、会员系统、物流系统、支付系统、订单系统。垂直拆分,会员系统可按会员等级分为:普通用户、VIP用户、超级VIP用户等。


 


更多系统架构发展讨论详见另一篇:细数Java技术架构这些年的发展史

http://www.jsqmd.com/news/772276/

相关文章:

  • 基于fortbot框架的Python量化交易机器人开发实战指南
  • SpringCloud分布式配置中心浅谈
  • 无名入库,有名成器,老子这句话放进 SAP HANA 开发里,是一套从混沌数据到可信模型的修炼法
  • 2026年5月苏州昆山发电机租赁最新排行榜:实测top4家出租服务商合规资质与服务对比 - 奋斗者888
  • 终极OpenVINO AI插件指南:30分钟让Audacity变身专业音频工作站
  • Next.js全栈开发最佳实践:从TypeScript到Tailwind CSS的完整工具链
  • 别再手动切换方向了!盘点ADI和TI那几款能自动换向的RS485芯片(附选型避坑指南)
  • 2026年线下相亲平台口碑排行分析:主流合规平台核心能力解析与适配指南 - 产业观察网
  • GCP Vertex AI代理搭建:无缝对接Anthropic客户端,实现零改造迁移
  • 分布式集群Session缓存丢失问题
  • BitRouter:为AI智能体构建高性能智能路由与安全代理层
  • 3分钟上手ChanlunX:零基础实现缠论自动化分析的终极方案
  • 超强项目脚手架Cookiecutter:告别重复代码编写的终极指南
  • Lime3DS游戏截图与录像功能:高质量游戏内容创作终极指南
  • 彻底搞懂最小生成树算法:从概念到实战的完整指南
  • **靠谱的餐饮线上营销怎么选2026指南,本地生活平台精准引流与私域复购率提升策略** - 品牌企业推荐师(官方)
  • Ripes终极指南:如何通过可视化仿真彻底掌握RISC-V处理器架构
  • 终极指南:electron-react-boilerplate架构设计揭秘,打造企业级跨平台桌面应用的最佳实践
  • 如何用MobileSAM与Inpaint-Anything实现高效图像修复:完整实战指南
  • SpringCloud+MyBatis(oracle)逆向工程自动生成代码
  • River时间序列预测终极指南:从Holt-Winters到SNARIMAX的完整教程
  • 2026深圳黄金回收避坑指南:认准这几家正规门店最放心 - 品牌企业推荐师(官方)
  • ComfyUI IPAdapter Plus终极实战:专业级多模型图像生成方案
  • 3分钟解锁Android TV遥控器新姿势:免费虚拟鼠标工具终极指南
  • 谱华检测|成都CMA权威第三方,用精准数据守护蓉城呼吸健康 - 品牌企业推荐师(官方)
  • 如何用MTKClient拯救变砖的联发科设备:从诊断到修复的实战指南
  • CookieCutter命令行工具:所有参数用法详解终极指南
  • 极简信息聚合器Nas4146/brief:用Python+Docker打造你的私人简报机器人
  • 终极指南:使用homemade-machine-learning实现机器学习系统健康监测与异常检测
  • JSP页面+Servlet乱码问题解决方法