Skip to content

企业级的高可用技术

L edited this page Nov 27, 2017 · 4 revisions

FROM DOWN TO TOP

文件系统
内网高可⽤用
HTTP/APP Server
自管理的服务集群
七层的LB和CS
DNS轮训

高可用

1、客户参与
Failover 友好的错误提示
2、客户不参与
High Available

单机数据安全

Raid 文件系统

重点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空间
备份、冗余都要做

内网高可用

端口聚合

VIP 虚拟IP + HA Node 节点检查

1

虚拟网关

交换机相互检查,PC相互访问

OSPF

电信、联通根据网速智能切换
2

HTTP/APP Server

多线程 并发

注意线程池被耗尽

EventDriven 性能

Copy-On-Write 性能

Eg.
(1)读取Web.config20万次
只读:内存里只有一份
Write:马上复制出20万份
(2)违禁词检查

Graceful Restar 平滑升级

发布新服务
3
在某一时间点以前的请求,用旧服务完成;
在某一时间点以后的请求,用新服务完成;
所有旧服务的请求执行完成之后,再释放旧服务

常见集群自管理的服务集群

Master Slave 写-同步

4 (1)Master write完成之后,返回结果给Client(大多数)
(2)Master和Slave write完成之后,返回结果给Client

发展:Master Master

5 Master和Master之间互为Slave
缺点:
PKID 自增链会挂
解决方案:
M1的PKID全为奇数,M2的PKID全为偶数

Memcached  客户端参与+Consistent Hash

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的数据

Paxos/Raft算法

——基于选举和一致性的集群

Brain Split

CAP

http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changed
数据一致性(C)
对数据更新具备高可用性(A)
能容忍网络分区(P)

事务日志:一致性的保证

Eg. (1)集群
6 (2)DB time server 
Eg.微博生成PKID

确保集群中PC压力对等

7 Eg.微博热门

7层负载均衡

http://blog.jobbole.com/96952/
8 主要运作方式是反向代理
比DNS轮训更可控,响应时间更短
针对大量链接场景做了优化(BigIP无理论连接上限)
后端链接复用(端截),提升效率
后端健康检查(私有TCP协议就比较困难)
兼职防火墙和WAF
可以通过排队机制保护后台服务
SSL OffLoad

链接复用(端截)

后端健康检查

http协议方便
503要注意检查

SSL OffLoad

https证书推荐  https://letsencrypt.org/
解密在负载均衡上,内网使用http协议
TLS优于HTTP

Clone this wiki locally