在说这个之前需要了解什么是分布式?
分布式系统就是将一个系统按照业务模块拆分为各个子系统,并且分开部署。分布式首先是分,如何的做好拆分是一个关键,比如用户服务、订单服务、库存服务。其次才是分布,这一步要思考如何更合理,更高效的部署资源,比如订单服务分配多少资源。
分布式系统的优点
- 业务相对独立,模块升级,不用升级整个系统。小步快跑。
- 能够承接更复杂的业务流程,更高的系统性能要求。
- 单个模块压力较大情况,可以针对单个模块进行扩展,灵活性更好。
a. 这里做个解释:如果单体应用所有功能耦合在一起,那么在扩展的时候需要的资源就更多,且对于压力较小的功能来说有冗余。 - 服务器挂掉,整个系统不可用。
分布式系统的缺点
- 系统复杂,多服务,多机房,运维成本太高。
- 各个子模块之间无法完全解耦,依然存在依赖,相互调用较为复杂,且锁、事务实现技术成本越来越高。
- 调用链路很长,服务器很多,出现问题排查难度大。
- 需要一群专业的人,而不是一个专业的人!
什么情况下需要分布式
这个时候可以做一些设想。
以上三个可以看做一个系统的演进:初期小团队就能搞定,做完核心功能即可上线使用。好的产品往往能够吸引越来越多的用户,用户量多了以后,单系统多部署几台服务器,通过Nginx反向代理并做好负载便能解决问题。当用户越来越多,需求也越来越深入,此时业务便会越来越复杂,此时往往不是一个小团队就能Cover住的,哪怕是从头跟到现在的老人,或者核心设计者也不一定能够有那么多的精力和时间来负责的面面俱到,那么此时便到了分布式架构出场的时候。
也就是说只有当一个业务系统足够复杂,复杂到短时间内不是一个小团队能够解决的了的情况下,便可以使用分布式了,团队之间的分工与合作才能将分布式系统的优点最大化。