程序架构的演变
-
单体架构(monolithic structure):整个项目就是一个工程,所有的业务模块都在一个工程下,只有一个对应的启动类,所有数据表都在一个数据库内;项目部署时,需要所有模块一起编译,打包;
-
优点:对于小型项目,开发简单,部署方便
-
缺点:随着项目的规模越来越大,团队开发人员也不断增加,单体架构就呈现出越来越多的问题:
①.团队协作成本高:由于所有模块都在一个工程中,最终要把所有模块代码合并到一个分支,代码冲突率增加,团队协作成本增加。
②系统发布效率低:任何模块变更都需要发布整个系统,任何一处出现问题都会导致发布失败。
③.扩展困难,在单体架构中,所有功能紧密集成,这意味着当某一部分(如订单处理)需要更多资源时,整个系统必须一起扩展。例如,在双十一期间订单量激增,不仅订单接口需要更多支持,支付接口也是如此。但由于采用了单体架构,我们不能单独扩展这些服务,而是需要增加整个系统的资源或者部署更多服务器节点,这可能会导致其他部分资源的浪费。
-
-
分布式架构:是指将应用程序的不同组件或服务分散到多个计算节点(例如服务器、虚拟机、容器等)上,这些节点通过网络互相通信与协作。每个节点可以运行自己的操作系统和应用程序,甚至可以使用不同的技术栈。分布式架构常常用于处理大量用户请求和数据,适应高并发、高可用性和弹性需求;
-
优点:
①.各个子模块功能相对单一,代码量小,沟通成本低;
②.容错高:模块之间相互独立,只有不发生网络通信,就不会出错,通信出错也不会影响其他模块的运行;
③.扩展性高:由于各模块分开部署,所有可以对不同的模块,单独进行水平扩展;
-
缺点:
1️⃣.系统复杂度高
2️⃣.开发、维护成功大
3️⃣.网络通信会造成不稳定性太高
4️⃣.等等
-
-
微服务架构:属于分布式架构的一种,但是它基于分布式架构进行了一定的优化,解决了一下问题;
- 1️⃣.更细粒度的服务划分:将系统拆分为一组更小、更独立的服务,每个服务专注于完成一个特定的功能或业务逻辑;
- 2️⃣.无耦合,每个微服务是完全独立的,拥有自己的数据库和技术栈,减少了服务之间的依赖,这也是提出微服务思想时希望实现的目的;
- 其他的优缺点基本与分布式架构一致