-
Notifications
You must be signed in to change notification settings - Fork 22
企业级的高可用技术
文件系统
内网高可⽤用
HTTP/APP Server
自管理的服务集群
七层的LB和CS
DNS轮训
1、客户参与
Failover 友好的错误提示
2、客户不参与
High Available
重点Raid 0/1/5
https://zh.wikipedia.org/wiki/RAID
eg.
(1)WINRAR 一个冗余包
(2)HBA Cache +电池 突然断电保存Data
(1)Time Machine 时光机
可以回到过去的任意一个时刻
方案:snapshot +变更历史
Eg.svn
(2)基于块级别的备份
速度VS空间
备份、冗余都要做
交换机相互检查,PC相互访问
电信、联通根据网速智能切换
注意线程池被耗尽
Eg.
(1)读取Web.config20万次
只读:内存里只有一份
Write:马上复制出20万份
(2)违禁词检查
发布新服务
在某一时间点以前的请求,用旧服务完成;
在某一时间点以后的请求,用新服务完成;
所有旧服务的请求执行完成之后,再释放旧服务
(1)Master write完成之后,返回结果给Client(大多数)
(2)Master和Slave write完成之后,返回结果给Client
Master和Master之间互为Slave
缺点:
PKID 自增链会挂
解决方案:
M1的PKID全为奇数,M2的PKID全为偶数
http://blog.jobbole.com/98733/
Client 知道IP和端口号
Server List[IP1:80,IP2:90…]
底层HASH算法,key-value(get XXX)
Eg.利用哈希算法,动态分配存储
key=AA存IP1,AA=2
IP1挂了
key=AA存IP2,AA=3
之后IP1又好了
->产生脏数据
解决方案:
(1)IP1挂了之后,使用其他服务
旧服务
新服务(实际存储数据)
DB
(2)IP1好了之后,清空IP1的数据
——基于选举和一致性的集群
http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changed
数据一致性(C)
对数据更新具备高可用性(A)
能容忍网络分区(P)
Eg.
(1)集群
(2)DB time server
Eg.微博生成PKID
Eg.微博热门
http://blog.jobbole.com/96952/
主要运作方式是反向代理
比DNS轮训更可控,响应时间更短
针对大量链接场景做了优化(BigIP无理论连接上限)
后端链接复用(端截),提升效率
后端健康检查(私有TCP协议就比较困难)
兼职防火墙和WAF
可以通过排队机制保护后台服务
SSL OffLoad
http协议方便
503要注意检查
https证书推荐 https://letsencrypt.org/
解密在负载均衡上,内网使用http协议
TLS优于HTTP