1.正对单体架构的不足,演化出了集群
2. 集群就是单体架构的多实例
(1)多个服务器上部署多个服务,每个服务就是一个节点
(2)每个节点就是一个单体架构的服务
(3)部署N个节点,处理业务的能力就提升 N倍(大约)
(4)这些节点的集合就叫做集群
3.单体架构使用服务器集群
(1)随着业务的发展,大多数公司会将单体应用进行集群部署,井增加负载均衡服务器(例如Nginx 等〉
(2)还需要增加集群部署的缓存服务器和文件服务器
<1>缓存服务器(redis,eheach等):提高服务响应时间,减轻后端数据库访问压力
<2>文件服务器(FTP,NFS等):系统上传文件到服务器,服务器存储上传文件,从服务器下载文件
(3)将数据库读写分离,以应对用户量的增加而带来的高并发访问量
<1>当有大量的读写操作时,将数据库进行读写分离
<2>MySQL的主从热备份,通过配置可以将主数据库服务器的数据同步到从数据库服务器, 实现数据库的读写分离
<3>读写分离能够改善数据库的负载能力。
(4)负载均衡服务器分发高并发的网络请求,用户的访问被分派到不同的应用服务器,应用服务器的负载不再成为瓶颈
<1>用户量增加时,添加应用服务器即可
<2>通过添加缓存服务器来缓解数据库的数据以及数据库读取数据的压力
<3>大多数的读取操作是由缓存完成的,但是仍然有少数读操作是从数据库读取的,例如缓存失效、实时数据等
4.单体架构使用:服务器集群,数据库读写分离,负载均衡,缓存服务器,文件服务器等技术
(1)数据库读写分离、缓存服务器、文件服务器等技术是通用技术,任何服务都可以使用
(2)负载均衡使用与搭建了集群的服务系统
5.单体架构的集群优缺点
(1)优点:
<1>有一定的处理高并发的能力
<2>能应对一定复杂的业务需求,改善了系统的性能
(2)缺点:
<1>每一个集群服务器依然没有改变系统为单体架构的事实,代码的可读性和可维护性依然很差
<2>每个节点负载相同(耦合度高),每个具体业务的访问量可能差异很大,造成资源浪费
<3>面对海量的用户,数据库将会成为瓶颈,解决方案将使用分布式数据库,也就是将数据库进行分库分表
<4>持续交付能力差,业务越复杂,代码越多,修改代码和添加代码所需的时间越长