6.1 网站架构的伸缩性设计
6.2 应用服务器集群的伸缩性设计
6.3 分布式缓存集群的伸缩性设计
6.4 数据存储服务器集群的伸缩性设计
6.5 小结
网站伸缩性设计分类:(1.按功能进行物理分割实现伸缩,2.单一功能通过集群实现伸缩)
按功能进行物理分割实现伸缩:纵向分离,横向分离
单一功能通过集群实现伸缩(集群):应用服务器集群伸缩性,数据服务器集群伸缩性
数据服务器集群伸缩性:缓存数据服务器集群,存储服务器集群
负载均衡:(HTTP请求重定向负载均衡,DNS域名解析负载均衡,
反向代理负载均衡,IP负载均衡,数据链路层负载均衡)
负载均衡算法:轮询(RR),加权轮询(WRR),随机(Random),最少连接,源地址散列
分布式缓存集群的伸缩性设计的主要目标:因为分布式缓存服务器集群中,不同服务器缓存的数据不同,
缓存访问请求不可以在缓存服务器集群中的任意一台处理。必须让新加入的缓存服务器对整个分布式缓存集群影响最小,
也就是说新加入缓存服务器后应使整个缓存服务器集群中已经存在的缓存数据尽可能的被访问到。
应用程序通过 Memcached 客户端访问 Memcached 服务器集群。
Memcached 客户端:API ,Memcached 服务器集群路由算法,Memcached 服务器集群列表,通信模块
API 输入给 路由模块,路由算法根据 key 和服务器集群列表,得到机器的 IP地址和端口,接着,API
通过调用通信模块和服务器通信。
Memcached 路由算法(很重要):余数 Hash,一致性Hash
一致性Hash(node0,node1,node2,如果加入 node3 在node1 旁边,分担了node1的负载(50%),
node0,node2的负载就是 node1,node3的2倍。所以有负载不均衡的问题,使用虚拟层,
key 在环上先找到虚拟节点,再找到对应的物理节点)
数据存储服务器集群伸缩性:关系型数据库集群的伸缩性,NoSQL数据库的伸缩性
关系型数据库集群的伸缩性(数据复制功能):主从分离,业务分割(不同业务数据表部署在不同数据库即数据分库,
缺点垮库的表不能join),数据分片(分表,分在不同数据库,Cobar)
Cobar(分布式关系数据库访问代理):介于应用服务器和数据服务之间,Cobar根据SQL和分库规则分解 SQL,
分发到MySQL集群不同数据库实例上执行。
Cobar 服务器组成:前端通信模块=>SQL解析模块=>SQL路由模块=>SQL执行代理模块=>后端通信模块=>
MySQL=>后端通信模块=>SQL执行代理模块=>结果合并模块=>前端通信模块
Cobar如何做集群伸缩:Cobar服务器集群伸缩,MySQL集群伸缩