保存成功
订阅成功
保存失败,请重试
提交成功

互联网高可用架构技术实践

“架构师之路”公众号作者,58到家高级总监,技术委员会主席。前百度高工,58同城高架,技委主席。
查看本场Chat

一、什么是高可用

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com能不能访问来判断“网络的连通性”,百度高可用的服务让人留下啦“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这其实是对百度HA最高的褒奖。

二、如何保障系统的高可用

我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。

保证系统高可用,架构设计的核心准则是:冗余。有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。接下来我们看下典型互联网架构中,如何通过冗余+自动故障转移来保证系统的高可用特性。

互动评论
评论
胡玉洋3 年前
图都看不了了
评论
vjack.c4 年前
请问有什么好用的高可用db connection pool?
评论
NULL3 年前
druid
评论
mooshine4 年前
这样设计的话,那么keepalived检测程序,以及db-connection-pool检测程序等是不是就成了这类分布式系统的瓶颈了,如果他们挂了,那么整个系统不就都不能访问了,那这样的话,分布式系统的可用性是不是就是看这些检测程序的可用性的乘积啊?那这样的话,可用性跟单web-server,单server系统的可用性在硬件级别上是相同的,这样做是不是就并不能提供服务的可用性了。 还是说这些检测程序是部署在各个服务器上面的,并不是再各层之间相连接的,如果是这样的话,那么系统的可用性就只有网络是否畅通这一个瓶颈了。
评论
Wilson4 年前
按照userid来划分的情况下,有用户的关联表是怎么处理的?比如用户发帖,其他用户回帖,既要查询用户发了多少贴,又要查询用户回了哪些帖,恰好这两个用户被分配到不同的库中了
评论
刘杰jamie4 年前
读扩散或写扩散
评论
zhongxn🍼👶💻🇨🇳5 年前
为什么数据库的读写高可用使用方式不一样(读用连接池保障,写用keepalived检测)?两种检测方式各有什么不同?
评论
查看更多