一.单体架构的局限性
复杂性高
技术债务(需求变更和人员更迭)
部署评论低
可靠性差(应用崩溃导致整个系统死掉)
扩展能力受限(不同模块对硬件的要求不一样)
阻碍技术创新(不能多语言开发,切换框架成本巨大)
二.微服务架构
1.介绍
一系列微小的服务共同组成
跑在自己的进程里
每个服务为独立的业务开发
独立部署
分布式管理
2.优点
易于开发和维护
单个微服务启动较快
局部修改容易部署
技术栈不受限
按需伸缩扩展
3.缺点
运维成本高
分布式的复杂性(容错,网络延迟,事务)
接口调整成本高(修改接口可能牵一发动全身)
代码重复率高(共享库对于可能需要修改的功能比如vo是不实际的,并且对多语言开发也不实用)
三.微服务架构和分布式的理解(人话)
1.什么是微服务架构
        在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统(微服务),各自负责各自功能,这就是微服务架构。

2.什么是微服务
        微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过Rest/RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。

3.什么是分布式架构
        分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

4.微服务和分布式的区别
        微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难

补充:

分布式是一个应用程序,拆分成多个模块来部署,各个模块负责不同的功能。
集群是指一个应用程序部署在多台服务器上。
举个例子:一个厨房有两个人,一个洗菜,一个做菜就是分布式。两个都做菜就是集群。