📜  博客 |从单体到微服务(1)

📅  最后修改于: 2023-12-03 15:07:21.214000             🧑  作者: Mango

博客 | 从单体到微服务

简介

单体应用(Monolithic Application)是一种传统的软件开发模式,所有的功能模块以及业务逻辑都被打包在一个单独的代码库和部署单元中。这种开发模式通常包含多个业务功能,各部分之间相互依赖,整个应用运行在一个进程中。随着业务的发展以及交互的需求增加,单体应用也逐渐显现出了不足。为了更好地拆解业务逻辑、提高服务可用性以及灵活性,逐渐发展出了微服务架构。

微服务(Microservice Architecture)是一种将应用程序拆解成多个独立组件的方法,这些组件可以单独构建、部署和扩展。每个组件通常只关注一个业务领域,并通过定义明确的界面,来支持与其它组件进行通信。这种架构使得开发和部署变得更加容易,且允许每个组件相互独立地升级和扩展。

单体应用的问题

在单体应用中,所有的业务功能都在同一个代码库中维护,因此此种应用的规模和复杂度都随着业务增长而不断增加。这种形式会导致以下问题:

  • 难以扩展:随着业务的发展,应用程序将变得越来越复杂,开发人员必须不断地更新代码库。这样做需要良好的编程技巧和开发经验,才能避免代码膨胀,同时又保持代码质量;
  • 部署效率低下:大规模的应用部署通常需要进行良好的规划和预测,同时需要保证资源的充足。这样做导致了部署效率比较低下,需要更多的开发人员去维护其开发和运维工作。除此之外,为了解决更大规模的业务问题,可能需要增加更多的资源,这就极大地增加了投入成本;
  • 缺乏灵活性:由于单体应用中所有的业务模块都在同一个代码库中维护,因此代码更新和维护通常需要先停止整个应用,这样做对于持续更新和灵活性可能产生限制。

这种形式导致整个应用有一个“单点故障”,如果一个模块或者组件出现问题,那么整个应用都将受到影响。

微服务解决问题

微服务是将应用程序拆解成多个独立组件的方法,这些组件可以单独构建、部署和扩展。每个组件通常只关注一个业务领域,并通过定义明确的界面,来支持与其它组件进行通信。这种架构使得开发和部署变得更加容易,且允许每个组件相互独立地升级和扩展。

微服务架构的特点:

  • 每个服务都是独立的: 由于每个服务都可以独立建立,因此没有它们之间的耦合关系。
  • 每个服务都可以独立部署: 每个服务都可以独立地部署和运维,这使得扩展和升级更加容易。
  • 服务可以使用不同的技术栈: 对于每个服务来说,使用最适合其目标环境的技术是很常见的。按照类似的方式,每个服务可以使用最适合其目标环境的技术栈和编程语言。

由于微服务的设计理念和特点,因此它也带来了一些优点:

  • 更易于扩展: 由于每个服务都是独立的,因此可以根据需要增加或减少服务的数量,在部署和运维方面更加灵活。
  • 更易于组织: 在一个独立的服务中,能够聚焦于特定问题领域,这使得开发和测试更加容易。
  • 提高了可靠性和可用性: 因为服务是分开处理的,因此即使其中一个服务失败,其余的服务仍然可以正常运行,系统整体稳定性更高。
参考资料
  1. 什么是微服务?
  2. 从微服务谈架构演化