点击查看美团、百度、蚂蚁技术专家的软件质量保障技术实践>> 了解详情
写点什么

你的可用性达标了吗?云端业务性能高可用的深度实践

  • 2019-03-12
  • 本文字数:2920 字

    阅读完需:约 10 分钟

你的可用性达标了吗?云端业务性能高可用的深度实践

近年来由于国内移动互联网的飞速发展,国内互联网用户也有了大踏步的飞跃。这对企业来说,既是机遇,也有挑战。


机遇在于,现实中如此多的互联网用户,都有可能是你的产品用户。尤其在当前流量为王的时代,如此大基数的用户,给互联网的产品带来了无限可能;同时,这也给企业的后台架构、运维体系提出了很高的要求,如果能够吸引到足够多的用户,却因为后台架构的可用性无法达到这种量级的标准,由于流量冲击过大导致后台架构崩溃,造成前端用户的不可用,从而造成大量的用户流失,这就是海量用户所带给企业的挑战。


在云计算时代,当“上云”已经成为一家互联网企业的标配之后,在云端,应该如何保障企业业务的连续性和可用性呢?IDC 在全球范围内针对多个行业下中小型企业(员工数小于 1000 名)的调研显示,近 80%的公司预计每小时的停机成本至少在 2 万美元以上,而超过 20%的企业估算其每小时的停机成本至少为 10 万美元。


而在当前国内互联网的大环境下,如果服务器宕机造成业务的不可用,所引起的连锁反应以及损失是不可估量的。你可以想象,如果在双十一当晚,电商 App 的支付接口出现了问题导致该业务不可用,所造成的损失会是多少。


因此,系统性能的高可用以及提前做好灾备措施已经成为了国内互联网企业的一个常态化认知。在云计算已经十分普及的现在,云端性能的高可用与否以及容灾措施的是否完善,正在成为企业衡量一家公有云厂商的重要标准之一。

云端如何实现系统性能的高可用


腾讯云高可用解决方案架构图


应用层面的高可用,腾讯云在技术架构以及应用落地方面已进行了诸多实践,其中主要囊括了以下 6 点:


1.客户端接入高可用:通过在客户端引入接入层技术(云解析、httpdns 和 IP 直连),依靠腾讯云在国内的 69 组集群以及海外 12 组集群,通过 DNS 智能调度,任意节点发生故障均能无缝切换到其他节点,保证服务的高可用性,同时防止域名劫持;


2.针对外网接入高可用:腾讯云当前支持 40+BGP 线路,可实现对故障的快速调度切换,防止因为骨干网故障导致业务的长时间不可用。同时腾讯云提供跨地域的 LB 接入和 anycast LB 能力,帮助业务实现跨地域跨区接入,避免因为机房故障导致业务中断。


3.云内网络高可用:跨区域通过数据中心互联(广域网)互通,且双环路保护,云上所有内部网络均基于成熟的网络虚拟化技术和网卡绑定技术来保证网络高可用性,在 T3+以上数据中心中采用多台服务器组成高性能群组,不依赖于某个独立硬件,因而不存在单点故障,单个服务器异常不会造成业务影响,保证运行网络的可靠性。


4.云上服务器高可用:腾讯云主机服务支持宕机迁移无感知、数据快照、自动告警等功能,为用户的服务器保驾护航。同时云硬盘提供三副本专业存储策略,消除单点故障,支持用户设定定期快照,定期将数据进行快照备份,保证数据可靠性。


5.中间件高可用:方案设计中可以考虑缓存和 MQ 多可用区域部署方案,在保障数据正确的同时,能够对各类中间件进行快速切换,尽量减少业务感知。


6.数据层高可用:CDB 数据库支持实时热备、读写分离,且实现了同城多可用区、异地灾备和两地三中心等满足金融级跨地域容灾需求;于业务低峰期自动冷备,不影响现网业务,每份冷备数据保存 3 份副本,保证数完整性。同时保留 5 天 binlog 日志供数据无损恢复,支持 5 天内库、表粒度的任意时间点回档,最大限度保障数据准确性,可靠性。


基础设施层的高可用,依托遍布全球 25 个地区的 53 个可用区,通过在全球部署超 1300 个加速节点以及超 100T 的带宽储备,能够将服务内容分发到全网加速节点,支持千万级用户并发,有效解决跨运营商、跨地域不稳定、高延迟访问等问题。

云端性能高可用运维实践

对于越来越多的上云企业而言,除了选择有高可用架构的云服务商之外,更要搭建符合自身业务特色的高可用架构,才是业务稳定性的重要保证。

快手云端多活容灾实践

快手的短视频和直播一直是其最重要的两个业务,此类在线流媒体播放的业务,不仅会对带宽、CDN 等流量方面有着高要求,更要求自身系统业务的高可用,如果由于访问量突增导致的流量突发、数据库读取缓慢所造成的用户体验差或者业务不可用,会对快手的业务造成极大影响。



为了确保平台服务的高可用,腾讯云从接入层、逻辑层、以及数据层帮助快手全面建设云端的高可用解决方案。


接入层:通过腾讯云专线链接各大机房,前端通过负载均衡接入,并且使用腾讯云的安全产品,保障全站的网络攻击。


逻辑层:逻辑层设计为多活模式,多中心业务部署,针对核心的业务在异地做多活,定期做演练,以保证能快速实现机房故障等灾难性故障的快速恢复。


数据层:数据层利用腾讯云数据产品的主备容灾架构做好足够的容灾,可以自动将数据库与腾讯云和客户 IDC 做异构系统备份。针对核心的业务在异地做多活,定期做演练,以应对机房故障等灾难性故障的快速恢复。

每日优鲜的云端单活热备部署实践

每日优鲜由于自身业务特性,在节假日有着较为明显的流量高峰期,需要长期面对高并发冲击的局面,因此之前将业务全部部署在单一云端上是有问题的,因为一旦出现网络异常、存储数据丢失等问题,由于缺乏相应的灾备能力,此类故障会导致业务线的全部不可用,尤其是在节假日人们此类需求较高的时期,如果出现此类问题,不仅会耽误到业务运营,还会对品牌构成负面影响。



为避免上述情况的发生,每日优鲜通过在云端实现多云热备部署以及 DNS 应急切换来实现业务容灾切换,以保障业务的连续性。双云之间通过专线打通,实现双线冗余,系统异常时流量会切入腾讯云,并通过技术手段实现数据一致性。

乐逗游戏异地容灾高可用实践

游戏行业对于高可用方案的需求则更为迫切,一款热门游戏,在极短的时间内需要应对 10 倍甚至百倍的用户量增长,如果后台系统架构的承压能力不够强,就会直接影响到游戏的顺利运营,游戏行业的用户争夺是非常激烈的,因此一旦出现不可用的状况,所带来的损失无法估计。


以乐逗游戏为例,乐逗游戏最重要的业务模块是游戏平台服务,为了确保该系统在特殊时期也能保持高可用的性能状态,乐逗游戏在腾讯云平台搭建了一整套异地容灾高可用解决方案。



为了实现游戏平台服的跨城异地容灾,规避机房故障等灾难性故障对业务造成的影响,乐逗游戏从三个层面做好了相应的准备:


接入层:前端通过负载均衡做接入,并购买 BGP 高防包绑定 CLB 做 DDOS 网络攻击防御,同时在安全防护上接入腾讯云宙斯盾防护体系,以应对 DDOS 网络攻击。


逻辑层:游戏逻辑层设计成无状态,故障时可直接剔除。此外为应对业务用户激增,可在容量扩展的同时接入 Auto Scaling,根据业务流量动态扩缩容。部分单点模块采用高可用虚拟(HAVIP)实现 HA 架构,主机故障自动剔除,规避云主机单点故障。


数据层:数据层采用了 Redis+Mysql 的存储架构,采用读写分离架构和主备容灾架构做好 HA,每天将数据库冷备文件自动导出并同步到对象存储 COS 中做异构系统备份。针对核心的平台登录服和支付服在异地做双活,定期做灾备演练,以应对机房瘫痪等灾难性故障的快速恢复。

结语:

随着越来越多的企业将业务部署在云上,云端的故障已经成为企业不得不关注的重点,采用高可用架构和方案也成为企业运维人员必须思考的话题。除此之外,作为企业技术人员,如何保证企业业务和服务的稳定性,值得业界一起探索。


2019-03-12 18:303974
用户头像

发布了 1244 篇内容, 共 530.1 次阅读, 收获喜欢 2367 次。

关注

评论

发布
暂无评论
发现更多内容

Luajit字节码分析之KSTR

whosemario

lua

性能相关,内存

Linuxer

性能

硬核科技:莱克立式吸尘器,引领家居清洁“新态度”

InfoQ_967a83c6d0d7

“全球+”浪潮下,企业出海选择合适的“技术船舶”成关键

华为云开发者联盟

网络 华为云 企业出海 网络加速 宽带

云原生技术采用增加,全球60%后端开发人员都在使用容器 | 趋势分享

BoCloud博云

云计算 容器 云原生 PaaS 博云

Redis系列(一):Redis简介及环境安装

简爱W

CRM企业到底该不该做PaaS?

ToB行业头条

PaaS SaaS CRM

从6大应用场景,看边缘计算落地生根

BoCloud博云

容器 边缘计算 PaaS 云平台 博云

新金融分布式架构之SOFAStack解决方案

阿里云金融线TAM SRE专家服务团队

【Elasticsearch 技术分享】—— ES 查询检索数据的过程,是什么样子的?

程序员小航

Java elasticsearch 搜索 ES Lucene Elastic Search

有选择才会有困惑

escray

学习 面试

炒股不要看K线图(分享最近学习投资的一点心得)

Nick

投资 理财

温故知新——Spring AOP(二)

牛初九

spring aop ioc

我也没想到 Springboot + Flowable 开发工作流会这么简单

程序员小富

java 14

GrowingIO AWS 成本优化之路

GrowingIO技术专栏

AWS 成本优化

面试官再问你Http请求过程,怼回去!

架构师修行之路

HTTP TCP/IP

第11周总结+作业

林毋梦

Redis系列(二):Redis的5种数据结构及其常用命令

简爱W

Flink-键值分区状态-10

小知识点

scala 大数据 flink

零代码简史

明道云

SaaS

莱卡、宾利都在用,英特尔oneAPI渲染工具带来高质量视觉体验

新闻科技资讯

币期权DAPP 8月28日全球同步耀世上线,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

不得不了解系列之限流

梦朝思夕

限流

使用 K8s 进行作业调度实战分享

后端进阶

学习 Kubernetes 容器 k8s 调度式分布

Android |《看完不忘系列》之dagger

哈利迪

android

Docker 镜像构建之 Dockerfile

哈喽沃德先生

Docker 容器 微服务

华为云会议的前世今生

华为云开发者联盟

直播 云服务 华为云 视频编码 视频会议

Java | 你知道快速搭建一个spring boot项目该怎么做吗?

简爱W

难以遏制的人因差错-Go的日志工具之痛

田晓亮

微服务 Go 语言

面经手册 · 第7篇《ArrayList也这么多知识?一个指定位置插入就把谢飞机面晕了!》

小傅哥

Java 数据结构 面试 小傅哥 ArrayList

MySQL redo与undo日志解析

Simon

MySQL Redo MySQL日志

你的可用性达标了吗?云端业务性能高可用的深度实践_云计算_InfoQ 中文站_InfoQ精选文章