首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

微服务架构与单体架构相比,有哪些优势?

软件架构发展至今,经历了单体结构、垂直架构、SOA架构,再到现在的微服务架构,不断升级、迭代。其中,与微服务架构相对应的就是传统单体架构。

单体架构,就是将整个应用程序作为一个单一的、可部署的单元进行开发、测试和部署。简单来说,就是一个程序里包含了一个系统/产品的所有业务功能

比如综合办公系统,将大量功能都堆积到同一个架构中,把业务流程固化在应用系统内

单体架构通常具有以下优点

1、简单易懂。由于整个应用程序被组织在一个单一的代码库中,开发人员可以更容易地理解和维护代码。

2、开发迅速。在单体架构中,各个功能模块可以共享代码和数据库,这样可以减少代码的重复编写,提高开发效率。

3、部署简单。整个应用程序是一个单一的、可部署的单元,因此部署过程相对简单,不需要考虑各个模块之间的依赖关系。

但单体架构的缺点也比较明显:

1、紧耦合。

2、系统复杂,牵一发而动全身。

3、重复制造各种轮子:OS、DB、Middleware。

4、完全封闭的框架。

从需求变化上说,单体架构之下,即使是一个小的改动,比如业务流程发生变化,整个单块应用都需要被重新构建和部署。随着业务需求的快速变化和不断发展,一体化应用的复杂性也不断增加。

从可维护性上说,采用单体架构,所有代码都共享在一个进程空间,导致代码冲突加剧、模块耦合严重,一次上线涉及人员太多,代码质量无法保证、协作效率低下,每次开发、测试都要花费几周甚至几个月,维护成本也会随之增加。而且,当需要部署新的功能或者升级应用程序时,整个应用程序就需要停止运行,可能会导致应用程序长时间不可用,影响业务的顺利展开。

从弹性和可扩展性上说,单体架构扩展性不足、并发能力有限,应用程序运行一旦发生故障(如宕机、过载等等),整个程序的运行都会受到影响。

微服务架构将一个应用程序拆分成一组小型、独立的服务单元。这些服务单元都专注于执行一项特定的业务功能,并通过轻量级的通信机制(如RESTful API)与其他服务单元进行交互,服务之间相互协调、互相配合,最终形成大型应用系统,为用户提供最终价值。

微服务全景架构图

相比单体架构,无论是从系统构建、维护难度还是从投入成本来看,微服务架构有着明显的优势,比如:更高的灵活性和可靠性、更好的可扩展性和可维护性,以及更短的交付周期和更低的应用维护成本。

1、松耦合:微服务架构中的服务单元是独立的。它们不会直接依赖于其他服务单元的内部实现细节,从而实现服务之间的松耦合。

2、可组合性:由于每个服务单元都专注于执行一项特定的业务功能,因此它们可以被组合成更大的业务功能,从而实现可组合性。

3、可替换性:由于每个服务单元都是独立的,因此可以轻松地将其替换为新的服务单元,从而实现可替换性。

4、可伸缩性:由于每个服务单元都是独立的,因此可以对每个服务单元进行独立的伸缩,从而实现了可伸缩性。

5、可维护性:由于每个服务单元都是独立的,因此可以对每个服务单元进行独立的维护,从而实现可维护性。

6、增强的韧性:由于微服务架构中的服务单元是独立的,因此一个服务单元出现故障时,不会影响到其他服务单元的运行,从而提高应用的韧性。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OQnO04rts3SX51mFC_n3FGKQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券