
什么是单体架构
单体架构示例图

整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。
随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式使用它。
随着代码的增加,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低,从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。
单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。
单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。由于单体架构的缺陷日益明显,所以越来越多的公司采用微服务架构解决上面提到的单体架构中的问题。不同于构建单一、庞大的应用,微服务架构将应用拆分为一套小且互相关联的服务。

Service-Oriented Architecture
的英文缩写,就是面向服务的架构。这里的服务可以理解为service层业务服务。
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
总结:dubbo不仅可以对服务进行治理,而且还可以对服务进行调用。
微服务架构示例图
微服务架构的特性
全自动的部署机制
微服务架构的优势
一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对比较简单,整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控状态;
单个微服务代码量较少,所以启动会比较快;
单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;
在微服务中,我们可以结合项目业务及团队的特点,合理地选择技术栈
微服务架构的挑战
更多的服务意味着更多的运维投入。在单体架构中只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,带来了巨大的挑战;
使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都带来了巨大的挑战;
微服务之间通过接口进行通信。如果修改某个微服务的API,可能所有使用了该接口的微服务都需要做调整;
很多服务可能都会使用到相同的功能。而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,导致代码重复。
微服务设计原则
服务自治原则
轻量级通信原则
接口明确原则

分布式-微服务-集群的区别
区别分布式的方式是根据不同机器不同业务。
集群模式
区别集群的方式是根据部署多台服务器业务是否相同。
分布式是否属于微服务?
微服务架构
微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
未经允许不得转载:大自然的搬运工 » 单体,SOA,微服务,分布式,集群架构知识来喽