目录
1、单体架构
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
单体架构的优缺点:
优点:
-
架构简单
-
部署成本低
缺点:
-
耦合度高(维护困难、升级困难)
2、分布式架构
分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
分布式架构的优缺点:
优点:
-
降低服务耦合
-
有利于服务升级和拓展
缺点:
-
服务调用关系错综复杂
3、什么是集群、分布式、微服务?
3.1、集群
集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。我们可以利用一些廉价的符合工业标准的硬件构造高扩展、高性能、低成本、高可用的系统,简单的来说就是同一个业务,部署在多个服务器上。
3.2、分布式
分布式服务是指多台服务器集中在一起,服务是分散部署在不同的机器上;每台机器都实现总体中的不同业务,做不同的事情;一个服务可能负责几个功能,是一种面向SOA的架构;各分开部署的部分彼此通过各种通讯协议交互信息,并且每台服务器都缺一不可,如果某台服务器故障,则部分功能确实,或者导致整体无法运行;分布式存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。
3.3、微服务
微服务的概念和分布式比较相似,微服务是一种架构风格;简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能;每个微服务仅关注于完成一件任务并很好地完成该任务,这个服务可以单独部署运行;各个服务之间是松耦合的,服务之间可以通过RPC来相互交互;微服务与分布式还有一点区别是:微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器。
微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,敏捷性也更高;但服务微服务化后带来的挑战也是显而易见的,例如服务力度小,数量大,后期运维难度增大等。
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
可以认为微服务是一种经过良好架构设计的分布式架构方案 。
分布式:不同服务器做不同的业务(提高效率) 集群:多个服务器做相同的业务(提高并发量)
3.4、集群、分布式、微服务的联系
(1)、分布式是以缩短单个任务的执行时间来提升效率,而集群则是通过提高单位时间内执行的任务数来提升效率;但分布式需要做好事务管理
(2)、集群模式是不同服务器部署同一套服务对外访问,实现服务的负载均衡;区别集群的方式是根据部署多台服务器业务是否相同,分布式中的每个阶段,都可以做集群;而集群并不一定就是分布式的;注意:集群需要做好Session共享,也就是接口要具有无状态特征,确保在不同服务器切换的过程中不会因为没有获取到Session而引起服务终止。
(3)、分布式与微服务的架构很相似,只是部署方式不一样而已;生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的。
(4)、在设计与开发中我们可以将分布式与集群的分开吗?
分布式的主要功能是将我们的系统模块化,将系统进行解耦,方便维护和开发;但并不能解决系统的并发性和高可用性问题;而集群恰好弥补了分布式的缺陷,一方面可以解决或者说改善系统的并发问题,另一方可以解决服务器如果出现宕机后,系统仍然可以正常运转;好的设计应该是分布式和集群相结合,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署。
4、微服务的拆分原则
原则:
-
不同微服务,不要重复开发相同业务
-
微服务数据独立,不要访问其它微服务的数据库
-
微服务可以将自己的业务暴露为接口,供其它微服务调用