单点系统架构可用性与性能优化

1. 缘起

单点master的设计会大大简化系统设计,何况有时候避免不了单点。

先看一个典型互联网高可用架构:

(1)客户端层:是浏览器或App,第一步先访问DNS-server,由域名拿到nginx的外网IP;

(2)负载均衡层:nginx是整个服务端的入口,负责反向代理与负责均衡工作;

(3)站点层:web-server层,典型的是tomcat或apache;

(4)服务层:service层,典型的是dubbo或thrift等提供RPC调用的后端服务;

(5)数据层:包含cache和db,典型的是主从复制读写分离的db架构。

在这个互联网架构中,站点层、服务层、数据库的从库都可以通过冗余的方式来保证高可用,但至少:

(1)nginx层是一个潜在的单点

(2)数据库写库master也是一个潜在的单点

2. 单点架构存在的问题

单点系统一般来说存在两个很大的问题:

(1)非高可用:既然是单点,master一旦发生故障,服务就会收到影响;

(2)性能瓶颈:既然是单点,不具备良好的扩展性,服务性能总有一个上线,这个单点的性能上限往往就是整个系统的性能上限。

3. 解决单点高可用

3.1 shadow-master

shadow-master(影子master)是一种很常见的解决单点高可用问题的技术方案。

shadow-master:顾名思义,服务正常时,它只是单点master的一个影子,在master出现故障时,shadow-master会自动变成master,继续提供服务。

shadow-master它能够解决高可用的问题,并且故障的转移是自动的,不需要人工介入,但不足是它使服务资源的利用率降为50%,业内经常使用keepalived+vip的方式实现这类单点的高可用。

猜你喜欢

转载自www.cnblogs.com/lujiango/p/9509920.html