美团2面:5个9高可用99.999%,如何实现?

这篇具有很好参考价值的文章主要介绍了美团2面:5个9高可用99.999%,如何实现?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说在前面

在40岁老架构师 尼恩的读者社区(50+)中,最近有小伙伴拿到了一线互联网企业如网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:

问题1:你们系统,高可用怎么实现?

问题2: 4个9高可用99.99%,如何实现?

注意,最近一个小伙伴美团2面,又遇到了这个问题: 5个9高可用99.999%,如何实现?

尼恩提示,高可用的问题,是架构的核心知识,又是线上的重点难题。

所以,这里尼恩给大家做一下系统化、体系化的线程池梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”

也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典》V63版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

最新《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》的PDF,请到公号【技术自由圈】获取

架构设计的3高原则

现如今,开发一个软件系统,对其要求越来越高,如果你了解一些「架构设计」的要求,就知道一个好的软件架构应该遵循以下 3 个原则:

  1. 高性能
  2. 高并发
  3. 高可用

高性能意味着系统拥有更大流量的处理能力,更低的响应延迟。

例如 1 秒可处理 10W 并发请求,接口响应时间 5 ms 等等。

高并发表示系统在迭代新功能时,能以最小的代价去扩展,系统遇到流量压力时,可以在不改动代码的前提下,去扩容系统。

高可用通常用 2 个指标来衡量:

  • 平均故障间隔 MTBF(Mean Time Between Failure):表示两次故障的间隔时间,也就是系统「正常运行」的平均时间,这个时间越长,说明系统稳定性越高
  • 故障恢复时间 MTTR(Mean Time To Repair):表示系统发生故障后「恢复的时间」,这个值越小,故障对用户的影响越小

可用性与这两者的关系:

可用性(Availability)= MTBF / (MTBF + MTTR) * 100%

这个公式得出的结果是一个「比例」,通常我们会用「N 个 9」来描述一个系统的可用性。

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

从这张图你可以看到,要想达到 4 个 9 以上的可用性,一年的不可以时间为 52分钟,平均每天故障时间必须控制在 10 秒以内。

系统发生故障其实是不可避免的,尤其是规模越大的系统,发生问题的概率也越大。

3个9的架构–通用架构

在阿里云平台上,对于中小型企业,业务量不是特别大,对异地容灾要求不是特别强烈,

则可采用以下高可用方案(如下图:图六),

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

可以在同一地域下选择购买云产品。

建议在VPC网络环境下,选择同一可用区或者同地域不同可用区的云产品。

同时建议ECS服务器至少两台,避免单点故障,在前端购买SLB,提供负载功能,这样当后端ECS资源使用紧张时可以直接横向扩展,对业务无影响。

另外,数据库业务尽量不要和应用服务部署在同一台ECS上。

防止不同服务之间资源抢占,同时方便日常管理和后期扩容。数据库服务器推荐直接购买RDS产品,数据安全有保障,同时也不需要花太多精力去运维管理。

高可用SLB 组件介绍

阿里云SLB组件使用开源软件LVS+keeplived实现4层的负载均衡。

7层采用淘宝的Tengine实现7层的负载均衡。

所有负载均衡均采用集群部署,集群之间实时会话同步,以消除服务器单点,提升冗余,保证服务稳定。在各个地域采用多物理机房部署,实现同城容灾。

SLB在整体设计上让其可用性高达99.99%。

且能够根据应用负载进行弹性扩容,在任意一台SLB故障或流量波动等情况下都能做到不中断对外服务。

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

什么是多可用区?

云产品的可用区指的是一套独立的基础设施,不同的可用区之间基础设施(网络,电力和空调等)相互独立,即一个可用区出现基础设施故障不影响另外一个可用区。

为了向广大用户提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域(Region)部署了多可用区以实现同地域下的跨机房。

当主可用区的机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(约30秒)切换到另外一个备可用区的机房并恢复服务的能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区的机房提供服务。

关于负载均衡主备可用区,请注意:

  • SLB支持跨可用区挂载后端ECS,即只要ECS和SLB实例在同一个地域即可。SLB可以同时将流量分发至不同可用区的ECS上。
  • 正常情况下,备可用区的SLB实例处于待机状态。您不可以手动切换SLB实例的主备工作状态,只有当阿里云检测到整个可用区不可用时如如机房整体断电、机房出口光缆中断等,负载均衡才会切换到备可用区。而并非某个实例出现故障,就切换到备可用区。
  • SLB和ECS是不同的集群。可用区A的SLB不可用时,ECS并不一定不可用,因此如果仅因为SLB集群故障导致的SLB主备倒换,备可用区的SLB依然可以将流量分发至不同可用区的ECS。但当整个可用区的所有集群断电或光缆中断时,那么可用区的所有服务(包括但不限于SLB、ECS等)就都无法正常工作了。

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

主备可用区列表

下表列举了阿里云各地域的主备可用区,您也可以通过DescribeZones接口查询可用的主备可用区。

下表列举了各地域的主备可用区,您也可以通过DescribeZones接口查询可用的主备可用区。

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

4个9的高可用架构—同城容灾

对中大型用户来说,希望业务系统要求具备同城容灾的能力,可以考虑在同城不同可用区之间对原有应用架构做一套完整的备份。

如果某个可以去出现像IDC机房断电或者火灾等故障时,可以通过前端切换DNS来及时恢复业务。

如下图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

5个9的高可用架构—异地容灾

对于一些大型企业在业务安全全性、服务可用性和数据可靠性方面既要求具备同城容灾又要求具备异地容灾时,可以采用这种容灾架构方式既可以解决单机房故障也可以应对像地震等灾难性故障。

不同地域之间可以采用阿里云的高速通道进行私网通信,保障数据库之间的数据实时同步,将数据传输延迟降到最低。

故障发生时可以通过前端DNS实现秒级切换,及时恢复业务。

如下图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

虚拟专用网络(VPC)进行实现不同地域互通

当ECS位于不同地域时,如何实现它们之间的内网互通呢?

首先,ECS之间的内网互通可以通过虚拟专用网络(VPC)进行实现。

VPC是阿里云提供的一种高度可定制化的网络隔离环境,用户可以在VPC内创建自己的私有网络,并通过VPC内网连接不同地域的ECS和RDS实例。

其次,用户可以通过VPC间对等连接方式实现地域之间的内网互通。通过创建对等连接,不同地域的VPC可以直接通信,从而使得位于不同地域的ECS和RDS实例能够通过内网进行互访。对等连接提供了低延迟、高带宽的网络通信,保障了数据的安全和速度。

除了VPC对等连接,用户还可以选择使用阿里云的内网专线接入(VBR)服务。通过VBR,用户可以自建专线连接不同地域的私有网络,实现ECS和RDS之间的内网互通。这种方式适用于需要大量数据传输或对网络可靠性有更高要求的场景。

另外,为了加强内网互通的安全性,用户可以使用安全组和访问控制列表(ACL)进行网络访问控制。

安全组可以定义入站和出站规则,控制对ECS和RDS的访问权限;ACL可以根据源和目标IP地址、协议及端口号等信息,精细控制子网和VPC之间的流量。

总的来说,ECS和RDS位于不同地域时,可以通过VPC的对等连接或者内网专线接入等方式实现内网互通。这些方法都提供了安全可靠的云上网络环境,满足了用户在分布式架构中对内网通信的需求。

注意跨地域的延迟

异地多活面临的主要挑战是网络延迟,以北京到上海 1468 公里,即使是光速传输,一个来回也需要接近10ms,在实际测试的过程中,发现上海到北京的网络延迟,一般是 30 ms。

参考案例:阿里云关系型数据库RDS 高可用介绍

阿里云关系型数据库(简称RDS):是一种稳定可靠、可弹性伸缩的在线数据库服务。

RDS默认采用主备架构(备用实例正常情况下对用户不可见),两个实例位于不同服务器,自动同步数据。主实例不可用时,系统会自动将数据库连接切换至备用实例。切换是分钟级别,而且不需要人工介入,全部由系统自动完成,应用系统也无需任何变更。这种架构足以满足90% 用户的高可用需求。

如下图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

用户如果对系统可用性有更高的要求,希望可以做到机房容灾,

阿里云RDS可以选择购买多可用区RDS,多可用区是在单可用区的级别上,将同一地域的多个单可用区组合成的物理区域。

相对于单可用区RDS实例,多可用区RDS例可以承受更高级别的灾难,如下图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

图四:RDS同城容灾架构

除了同城容灾之外,对于数据可靠性有强需求用户,比如是有监管需求的金融业务场景,RDS提供异地灾备实例,帮助用户提升数据可靠性。

RDS通过数据传输服务(DTS)实现主实例和异地灾备实例之间的实时同步。

主实例和灾备实例均搭建主备高可用架构,当主实例所在区域发生突发性自然灾害等状况,主节点(Master)和备节点(Slave)均无法连接时,可将异地灾备实例切换为主实例,在应用端修改数据库链接地址后,即可快速恢复应用的业务访问。

如下图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

图:RDS异地容灾架构

异地多活数据一致性:DTS组件

异地多活架构中,为了支持业务流量在各个地域之间的灵活切换,必须解决各个业务中心之间的数据同步问题。

阿里云数据传输服务DTS支持RDS实例之间的双向同步,实现业务中心之间的数据同步,保证数据全局一致,从而实现异地多活技术架构的快速复制。

数据传输服务DTS从2013年起,已连续4年平稳支撑了阿里巴巴异地多活(3个业务中心)底层的全局数据同步。

自2014年在阿里云为用户提供服务以来,DTS已经为上万用户提供可靠、稳定的数据流服务。

DTS支持异地多活架构中数据层之间的数据同步,实现数据全局一致。下面是一个简单的异地多活业务架构图:

美团2面:5个9高可用99.999%,如何实现?,面试,面试,架构,java,系统架构,大数据,flink,学习

如上图所示,业务按照某个维度将流量切分到各个业务中心(亦称单元)。

切分维度的选择要遵循如下原则:

(1) 拆分后,需要实现业务的单点写。例如按照会员切分,那么同一个会员的访问只能在某个业务中心单点写。

(2) 拆分维度要能够尽量保证业务在单元内封闭,即所有的业务请求都能够在单元内完成,以减少跨地域的访问调用。

对于用户分布比较广的业务,可以根据用户分布进行业务中心部署区域的选择。

例如国际化业务,可以选择中国、欧洲、北美 等多点进行业务中心的部署,区域附近的用户的业务请求直接落在就近区域,以最大程度降低用户访问延迟,从而有效提升用户体验。

当流量切分到各个单元后,各个单元的数据层均会有数据写入,通过DTS进行数据层的数据双向同步,实现数据全局一致。当某个业务中心(单元)出现故障时,可以修改流量切分规则将流量秒级切换到其他单元,从而有效得保证了业务的持续可用,完美得避免了故障造成的经济损失及对公司品牌的影响。

说在最后

高可用相关面试题,是非常常见的面试题。以上的内容,如果大家能对答如流,如数家珍,基本上 面试官会被你 震惊到、吸引到。

最终,让面试官爱到 “不能自已、口水直流”。offer, 也就来了。

学习过程中,如果有啥问题,大家可以来 找 40岁老架构师尼恩交流。

参考文献

https://zhuanlan.zhihu.com/p/549472160

https://zhuanlan.zhihu.com/p/96917394

推荐阅读

《网易一面:单节点2000Wtps,Kafka怎么做的?》

《字节一面:事务补偿和事务重试,关系是什么?》

《网易一面:25Wqps高吞吐写Mysql,100W数据4秒写完,如何实现?》

《亿级短视频,如何架构?》

《炸裂,靠“吹牛”过京东一面,月薪40K》

《太猛了,靠“吹牛”过顺丰一面,月薪30K》

《炸裂了…京东一面索命40问,过了就50W+》

《问麻了…阿里一面索命27问,过了就60W+》

《百度狂问3小时,大厂offer到手,小伙真狠!》

《饿了么太狠:面个高级Java,抖这多硬活、狠活》

《字节狂问一小时,小伙offer到手,太狠了!》

《收个滴滴Offer:从小伙三面经历,看看需要学点啥?》

《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》PDF,请到下面公号【技术自由圈】取↓↓↓文章来源地址https://www.toymoban.com/news/detail-679415.html

到了这里,关于美团2面:5个9高可用99.999%,如何实现?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序最新面试题(1),啃完999页Web前端面试高频宝典

    pages 里面包含一个个具体的页面; index.json (配置当前页面标题和引入组件等); index.wxml (页面结构); index.wxss (页面样式表); index.js (页面的逻辑,请求和数据处理等); 2 请谈谈wxml与标准的html的异同? 都是用来描述页面的结构; 都由标签、属性等构成; 标签名字不一样,

    2024年04月25日
    浏览(48)
  • 美团面试官:可重复读隔离级别实现原理是什么?(一文搞懂MVCC机制)

    本文首发于公众号【看点代码再上班】,欢迎围观,第一时间获取最新文章。 原文:美团面试官:可重复读隔离级别实现原理是什么?(一文搞懂MVCC机制) “全文共计4270字,预计阅读时间6分钟 大家好,我是 tin ,这是我的第26篇原创文章 还记得MySQL数据库事务都有哪些隔离

    2024年02月13日
    浏览(37)
  • 行业分享----dbaplus174期:美团基于Orchestrator的MySQL高可用实践

    记录 MySQL高可用方案-MMM、MHA、MGR、PXC https://blog.csdn.net/jycjyc/article/details/119731980 美团数据库高可用架构的演进与设想 https://tech.meituan.com/2017/06/29/database-availability-architecture.html

    2024年01月19日
    浏览(55)
  • 【面试】美团面试真题和答案

    问题来源于某客,如下图所示: 问题链接:https://www.nowcoder.com/feed/main/detail/b12f8ece42f6485d8e462ab872c4f8d8 答案解析 线程池的创建方法总共有 7 种,但总体来说可分为 2 类: 通过 ThreadPoolExecutor 创建的线程池; 通过 Executors 创建的线程池。 线程池的创建方式总共包含以下 7 种(其

    2024年02月12日
    浏览(47)
  • 【美团面试】软件测试面试题

    功能测试(Function test) 0. 什么都不输入,点击提交按钮,看提示信息。(非空检查) 1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入) 2.输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验) 3.登录成功后能否

    2024年02月16日
    浏览(49)
  • 如何从架构层面降低公有云多可用区同时故障的概率

    阿里云和腾讯云都曾出现过因一个组件故障而导致所有可用区同时瘫痪的情况。 本文将探讨如何从架构设计的角度减小故障域,在故障发生时最小化业务损失,并以 Sealos 的稳定性实践为例,分享经验教训。 从腾讯云故障报告中可以看出来多可用区一起挂基本都是因为一些集

    2024年04月23日
    浏览(30)
  • 美团小程序技术架构

    作者:禅与计算机程序设计艺术 首先,让我们看看什么是小程序? 小程序是一种不需要下载安装,可以直接在微信、支付宝等应用市场上运行的应用程序。小程序由微信官方设计、微信开放平台运营,采用 web 开发语言 Vue、JavaScript、CSS 和 HTML 等技术实现。 美团小程序是一

    2024年02月08日
    浏览(45)
  • Linux 面试题-(腾讯,百度,美团,滴滴)

    http://192.168.200.10/index1.html http://192.168.200.10/index2.html http://192.168.200.20/index1.html http://192.168.200.30/index1.html http://192.168.200.40/index1.html http://192.168.200.30/order.html http://192.168.200.10/order.html 答案: cat t.txt | cut -d ‘/’ -f 3 | sort | uniq -c | sort -nr netstat -an | grep ESTABLISHED | awk -F \\\" \\\" ‘{print $5

    2024年02月08日
    浏览(56)
  • 美团面试,被拷打了一小时....

    刚从美团走出来,被拷打了一小时…越想越觉得可惜,回想面试经过,好好总结了几个点,发现面试没过的主要原因是在几个关键的问题没有给到面试官想要的答案。从而失去了这次宝贵的机会。 根据你的工作经历,说说你对质量保证的理解? 非关系型数据库和关系型数据

    2024年02月05日
    浏览(52)
  • 深入浅出 -- 系统架构之负载均衡Nginx实现高可用

       线上如果采用单个节点的方式部署 Nginx ,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于 Nginx 作为整个系统的网关层接入外部流量,所以一旦 Nginx 宕机,最终就会导致整

    2024年04月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包