写点什么

Atlassian 使用边车和高容错设计将可用性提升到 6 个 9 以上

  • 2022-10-18
    北京
  • 本文字数:1311 字

    阅读完需:约 4 分钟

Atlassian使用边车和高容错设计将可用性提升到6个9以上

Atlassian 工程播客最近分享了其租户上下文服务(Tenant Context Service,TCS)如何让可用性超过了99.9999%。Atlassian 通过实现高度自治的客户端边车实现了这种高可用性,能够主动保护自己免受 AWS 区域故障的影响。边车通过并发地查询多个 TCS 服务并确保请求在内部是完全隔离的来实现这一目标。


TCS 是 Atlassian 的一项关键基础设施服务,在大多数 Atlassian 云产品的每个 Web 请求路径中都会被多次调用。它提供了“租户元数据”的高可用性、读优化的视图。2022 年 7 月,TCS 每天处理 320 亿次请求,峰值请求率为每秒 586308 次。总体可用性超过了 99.999%,最高吞吐量的客户端在高峰期的平均响应时间约为 11μs。


为了实现这些指标,Atlassian 的工程师采用CQRS模式设计了 TCS。当“租户元数据”目录发生变化时,TCS 将“租户元数据”的转换视图导入AWS DynamoDB。此外,TCS 广泛使用 L1 内存缓存,以及基于 SNS 的缓存失效广播系统。与客户端应用程序一起部署的边车作为 Web 服务器缓存的远程扩展,并通过与多个 TCS 部署通信来提高可用性。下图描绘了 TCS 的架构。



来源:https://www.atlassian.com/engineering/atlassian-critical-services-above-six-nines-of-availability


由于边车的缓存命中率通常超过 99.5%,无法命中的情况相对较少。因此,TCS 边车会在缓存未命中时抢先发送重复的请求——一个发送给选定的“主”父 TCS,一个发送给随机的辅助 TCS。这种方法的一个好处是,边车将无缝地处理父节点或网络故障。它不需要检测失败的请求,因为“后备”请求已经在进行中。


Atlassian 的主要开发者 David Connard 解释了这种方法的细节。


虽然这种逻辑可以很好地应对快速失败的场景,但还需要为缓慢失败的场景做好计划,这通常是系统要处理的最成问题的故障模式,此时关键要进行一些适当的隔离。对于我们来说,适当的隔离意味着任何单亲 TCS、AWS 服务或整个 AWS 区域的故障都不能影响我们的边车在不同区域运行的能力。


为了实现这种高水平的隔离,Atlassian 工程师使用独立的任务队列和线程池来处理请求,对于每个父 TCS 来说是完全隔离的(甚至连 HTTP 连接池实例都是如此)。他们通过减少请求负载(有选择地丢弃请求)和动态调整线程池(限制延迟较低的 TCS 部署的线程池的大小)来防止因任务排队并消耗额外的资源导致的慢故障场景。


在服务器端,失效广播系统进行跨区域调用,发布失效消息。由于跨区域延迟明显较高,可能会影响失效广播。Connard 解释了工程师如何保护 TCS 免受这个问题的影响。


不能让跨区域停机(例如某个目标区域中的AWS SNS 故障)延迟或阻止从该 TCS 服务器向其他区域发送失效广播。为了实现这种隔离,TCS 服务器失效广播系统将所有失效广播数据和处理线程复制到单独的特定于区域的队列中。然后,隔离的工作线程仅从其中一个队列发布到每个目标区域。向一个目标区域发送广播的速度减慢或完全失败只会减缓该区域的处理速度,不会影响向其他目标区域发布消息。


除了提高系统的可用性外,Atlassian 的工程师还采用了多种方法来伸缩系统,包括使用SNS扇出模式、包含边车网络监控功能的自定义请求负载平衡策略,以及采用 gRPC 作为 HTTP API 的低延迟替代方案。


原文链接

Atlassian Exceeds 99.9999% of Availability Using Sidecars and Highly Fault-Tolerant Design

2022-10-18 09:214303

评论 1 条评论

发布
用户头像
对于专有词汇,直接写 sidecar 可能会更好。"边车"有一些懵
2022-10-20 09:49 · 广东
回复
没有更多了
发现更多内容

实战丨证券 HTAP 混合业务场景的难点问题应对

TiDB 社区干货传送门

V7.5.3安装tidb ipv6集群(redhat 7.9)

TiDB 社区干货传送门

管理与运维 安装 & 部署 7.x 实践

【解锁】华为云全栈可观测平台——9月10月新功能特性

平平无奇爱好科技

华为云软件开发生产线(CodeArts)10月新功能特性

平平无奇爱好科技

小红书详情API接口的获取与应用

科普小能手

API Python JSON 小红书API接口 小红书笔记接口 小红书API

In-Depth Analysis: 11BE IPQ5322 vs. 11AX IPQ8072—Who Leads the Future of Industrial Networks?

wifi6-yiyi

WiFi7

解锁电商新境界:1688阿里巴巴API接口深度探索与应用实践

代码忍者

API 接口 pinduoduo API

亚洲唯一!华为云入选Gartner®云应用平台魔力象限

平平无奇爱好科技

TiDB 优化器丨执行计划和 SQL 算子解读最佳实践

TiDB 社区干货传送门

必看!淘宝商品详情数据接口调用,助力商城上货实战全流程(仅供参考)

tbapi

淘宝商品详情接口 商品上货接口

TIDB 利用follower 角色实现读写分离

TiDB 社区干货传送门

数据填报遇难题?五步妙法教你轻松攻克

JEECG低代码

数据分析 数据可视化 报表 报表工具 数据填报

从“几年”到“秒”:重新思考公钥基础设施(PKI)

安全乐谷

Java 安全 企业管理 密码学 企业安全

记一起 TiFlash 副本同步被卡住的问题

TiDB 社区干货传送门

管理与运维 7.x 实践

基于 AutoFlow 快速搭建基于 TiDB 向量能力的本地知识库问答机器人

TiDB 社区干货传送门

8.x 实践

租用 4090 算力云电脑,这些性能指标需关注!

Finovy Cloud

云桌面 显卡 云电脑

淘宝天猫API接口:解锁商品详情与关键字搜索的无限可能

代码忍者

API 接口 pinduoduo API

WiFi 7 IPQ5312 vs. WiFi 6 IPQ8074-Revolutionizing Mining Networks:—Who’s the King?

wifi6-yiyi

mesh

定档12月20日!星宸科技2024开发者大会暨产品发布会举办在即

科技热闻

50万奖金池等你来战! 第二届OpenHarmony创新应用挑战赛再度起航

科技热闻

探索拼多多API:轻松获取商品详情

代码忍者

API 接口 pinduoduo API

内存分配 Allocstall 导致 SQL 抖动的分析

TiDB 社区干货传送门

管理与运维 故障排查/诊断

GreatSQL内存消耗异常排查攻略:从系统到应用层面的深入分析

GreatSQL

关注度上升,交易量直线上涨,Base Season 即将到来?

TechubNews

怎么知道 AI 能帮我写多少代码?

腾讯云代码助手

腾讯 #腾讯云

YC创投:我们只投这些创业方向,其他方向不看

安全乐谷

创业 投资 社交 出海 YC

【0基础转型】1个月成为大数据ETL工程师:轻松月入过万

敏捷调度TASKCTL

数据仓库 Shell ETL TASKCTL #大数据

TiDB 无统计信息时执行计划如何生成

TiDB 社区干货传送门

管理与运维 TiDB 源码解读

Atlassian使用边车和高容错设计将可用性提升到6个9以上_软件工程_Eran Stiller_InfoQ精选文章