如何构建一个流量无损的在线应用架构?

时间:2022-02-11|浏览:177

文章中的许多场景和技术点都来自于真实的在线系统的真实故障。我们以产品化的方式将多年来各环节的相应解决方案沉淀到企业分布式应用服务中(EDAS)中。
本文主要从数据交换的维度阐述了数据交换过程如何影响在线流量;最后,将引入两种常见的预防措施:全链路压力测试和安全生产演练。让我们从数据交换部分开始:
数据
当流量在应用集群中流通时,他的终点通常是与各种类型的数据服务交换数据,如从缓存中读取数据返回、在数据库中存储订单记录、交易数据和外围支付服务进行数据交换等。然而,只要数据访问外部服务,外部服务就不可用。一些常见的情况,如过度依赖或数据过载,导致雪崩,因为整个数据中心不可用,导致大面积瘫痪。例如,最近一个著名的事件是 Meta 公司大规模停机的原因是发布了切断数据中心之间主要路由的错误配置。
1. 常用解决方案:分库分表
对于国内互联网公司大量数据的场景,当我们的业务发展到一定阶段时,它会带来缓存或 DB 容量问题,以 MySQL 例如,当单表的容量达到1000万级时,如果此表需要与其他表相关联,则会出现 数据库IO、CPU 各方面的压力。在这个时候,我们需要开始考虑分库和分表的计划。然而,分割后不是一蹴而就的。他将介绍分布式事务、联合查询、跨库 Join 和其他新问题,如果人肉解决每个问题会更困难,但幸运的是,市场上有许多优秀的框架,如社区 Sharding JDBC,刚刚开源的阿里云 PolarDB-X 等。
2. 常用解决方案:数据中心容灾
为了防止数据中心整体不可用,一个传统的想法是建立高可用性,数据中心水平的灾难是常见的城市和不同的地方,但数据中心部署服务可能是分布式服务,每个分布式服务灾难战略略略有所不同,本文是常见的 MySQL 举例说一些常见的想法。
容灾的核心是需要解决 CAP 有两个问题,即:C(数据一致性),A(服务可用性),但根据 CAP我们只能保护 理论CP 和 AP 之一,所以这里选择什么样的策略,其实需要根据业务形式来制定。对于同城 IDC 级容灾,因为他的 RT 一般很小,最大限度地满足数据一致性。Paxos(MySQL Master 如果节点所在的机房挂断,将面临重新选择主人。如果集群较大,可能会导致选择主人的几十秒级 DB 不可用的情况。对于不同的场景,由于数据链路太长,其数据一致性基本不能满足,因此业务必须配合转型,实现业务水平的水平划分,如:华南数据中心为华南客户群服务,华北数据中心为华北客户群服务。通过数据同步实现最终一致性。
如何构建一个流量无损的在线应用架构?
防范
这里基本完成了在线应用的四个核心环节,特别是由于架构设计、基础设施脆弱等原因,也列出了相应场景下的解决方案。然而,从安全生产的角度来看,所有安全生产的目的都是在萌芽状态下进行预防。在互联网系统中,与传统的软件产品相比,我们推荐两种生产水平的预防方法:全链路压力测试和安全生产在线演习(也称为故障演习)。
1. 全链路压测
在软件产品的生产系统中,我们将测试任何即将出的系统进行各种目标测试,包括压力测试,即使系统处于一个非常严格的环境中,以观察系统的性能。一般压力测试只能构建相应的线下部署环境服务接口,测试报告境服务,测试报告压力测试会有几个问题:
由于线上线下依赖环境差异较大,无法评估真实的线上系统容量。
压力测量过程数据不丰富,覆盖面窄,导致场景遗漏。
由于压力测量的流量或工具不完善,只能评估单台机器或服务,而不是整个生产集群。
如果要实现全面、系统、真实的流量评估,我们建议直接使用生产环境进行有针对性的性能压力测试,但有许多技术瓶颈需要突破,包括:
能够构建丰富场景的工具体系或产品。
在整体服务链路上,支持从流量入口开始的压测标志传输。
系统中使用的中间件可以识别正常流量和压测流量。
业务需要对压测流量进行业务改造(如影子表),以免压测数据影响在线真实数据。
然而,在实施过程中,由于整个链路的影响太大,在正式开始大流量压力测试之前,需要逐步实施初步准备工作,包括:压力测试方案的制定、预跑验证、压力测试预热,最后是正式的压力测试。压力测试结束后,还需要分析压力测试结果,以确保整个系统符合预设目标。
2. 安全生产演练
类似于全链路压力测试的想法,为了尽可能接近生产环境,我们也建议在线完成安全生产演习。演习的目的是检查系统的行为性能是否仍然强大,以检查各种不可预测的服务是否不可用、基础实施故障或依赖故障。通常,演习的范围从单一应用到服务集群,甚至整个机房的基础设施依次上升。演习场景可以从过程请求加班)、过程级别(如:FullGC)、容器(如:CPU 高),再到 Kubernetes 集群(如:Pod驱逐、ETCD 故障等)各个场景叠加,根据业务系统的反脆弱能力,针对性的作出选择。
结语
文章中的许多场景和技术点都来自于真实的在线系统的真实故障。我们以产品化的方式将多年来各环节的相应解决方案沉淀到企业分布式应用服务中(EDAS)中。EDAS 致力于解决在线应用的全过程流量无损,经过 6 年的精细抛光,在流量接入和流量服务两个关键位置为客户提供流量无损的关键能力,我们的下一个主要目标是通过整个应用过程,让您的应用默认流量无损,确保业务能力的可持续性。

热点:ETC 数据

了解更多区块链知识,下载【 数字钱包 】有奖!
« 上一条| 下一条 »
区块链交流群
数藏交流群
非小号交易所排名-专业的交易行情资讯门户网站,提供区块链比特币行情查询、比特币价格、比特币钱包、比特币智能合约、比特币量化交易策略分析,狗狗币以太坊以太币玩客币雷达币波场环保币柚子币莱特币瑞波币公信宝等虚拟加密电子数字货币价格查询汇率换算,币看比特儿火币网币安网欧易虎符抹茶XMEX合约交易所APP,比特币挖矿金色财经巴比特范非小号资讯平台。
乐评排行 乐评资讯 乐评商家 乐评PK 乐评企业 乐评新闻 对比非小号行情 yonghaoka.cn 飞鸟用好卡 ©2020-2024版权所有 桂ICP备18005582号-1