单体项目与分布式项目两种架构设计思想?-灵析社区

D_Y_大师

## 事务的功能削减 因为在微服务系统中,数据库往往不是一个,因为使用同一个数据库就容易出现数据库事务死锁。 假设用户下单需要经过三个系统:用户系统、订单系统、钱包系统,三个系统共用一个数据库。假设有新手偷懒,在钱包系统中直接查询了订单数据也使用了事务。 于是在用户下单时候,订单系统为了保障库存的扣除启用了订单事务,经过钱包系统时候,扣除余额也 使用了事务。两个系统的事务就造成了死锁,接口直接崩溃。 所以从一开始应该从根本上直接避免这个情况,而且分库优点也有很多。 1. 稳定;多个数据库服务器,防止个体服务造成的数据库崩溃引起的大范围雪崩 2. 性能;数据分为多个数据库,可以根据服务的重要性分到不同的云服务器,自然获得更好的性能 3. 安全;各自项目使用各自的数据库,自然不会出现数据安全问题 ## 单体应用与分布式项目的设计思想。 ### 单体应用优缺点 单体应用最出色的应该就是Java的那套了。优点很多: 1. 代码复用方便 2. 运维系统复杂度低 3. 无服务间的网络开销即性能更好 缺点一样多: 4. 屎山越堆越高 5. 代码越多,复杂性越高,开发人员要求越高 ### 微服务项目优缺点 优点: 1. 由于单个服务的代码量小,所以单个服务的复杂度很低,开发容易,代码优化(重构)方便。 2. 对普通开发人员要求低,对核心开发要求高。 3. 扩展容易、功能复用性高。 缺点: 4. 性能一定会削减,毕竟有网络开销 5. 系统维护复杂度高,有Kubernetes后容易了很多 6. 系统Debug难度高,途径系统太多,没有好的监控系统不好排查问题。需要加入链路追踪增强 7. 系统开发难度对核心开发人员要求高,需要有高级开发带领开发需求,跨服务建设。

阅读量:1

点赞量:0

问AI