QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

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:214272

评论 1 条评论

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

无需二次开发,SOAP-to-REST 简化企业用户的业务迁移和整合

API7.ai 技术团队

干货 | BitSail Connector开发详解系列一:Source

字节跳动数据平台

开源 数据集成 数据引擎 企业号 3 月 PK 榜

TCP 三次握手,给我长脸了噢

程序员小富

TCP

你关切的Code Review三大问题,我以业务实践作答

极狐GitLab

DevOps Code Review 代码质量 代码规范 代码评审

《2022年IT行业项目管理调查报告》重磅发布!

禅道项目管理

Apache Flink X Apache Doris 构建极速易用的实时数仓架构

Apache Flink

大数据 flink 实时计算

让 API 管理效率更进一步的 API7 DevPortal

API7.ai 技术团队

api 网关 API7

专业HTML文本编辑器:BBEdit 激活版

真大的脸盆

Mac Mac 软件 文本编辑器 文本编辑

软件测试/测试开发丨Docker 镜像构建可以分享的快乐

测试人

Docker 软件测试 测试开发

带你掌握如何查看并读懂昇腾平台的应用日志

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号 3 月 PK 榜

GifGun for Mac(快速输出GIF动图格式AE插件)

互联网搬砖工作者

字节跳动DataLeap数据血缘实践

Openlab_cosmoplat

数据 开源社区 数据血缘

复旦邱锡鹏:深度剖析 ChatGPT 类大语言模型的关键技术

NLP资深玩家

人工智能 ChatGPT

阿里P8架构师都在卷的《23种设计模式加强版》宝典

程序知音

Java 架构 编程语言 设计模式 后端技术

2 万字长文:声明式配置技术概述

Peefy

DevOps 编程语言 开发者工具 #Kubernetes# #开源

微帧自研|客观评价模型与主观DMOS分数拟合的分享与实用性探讨

微帧Visionular

计算机视觉 视频编解码

关于文件传输协议,你不知道的事

镭速

如何让人形机器人“行稳致远”?这篇顶级期刊的论文提出了新方法

优必选科技

机器人

带你全方面了解字节A/B实验的文化与工具

字节跳动数据平台

大数据 AB testing实战 实验 A/B测试 企业号 3 月 PK 榜

远程桌面工具:Microsoft Remote Desktop激活版

真大的脸盆

Mac 远程办公 Mac 软件 远程工具

最佳实践|焱融全闪存储实现与美的集团破千万 IOPS 性能

焱融科技

文件存储 分布式文件存储 高性能存储 全闪存储 美的

全球运营商的新共识:2025走向自智网络L4

脑极体

自智网络

软件测试/测试开发丨学习Docker就应该掌握的dockerfile语法与指令

测试人

Docker 软件测试 测试开发

阿里云Elasticsearch让搜索上云像使用“水电”一样简单

阿里云大数据AI技术

阿里云 搜索 Elasticearch

最强阿里及大厂350道面试大全:框架+数据库+并发+开源+微服务

Java你猿哥

Java 数据库 架构 微服务 面经

易观:正视GPT-4功能缺陷与能力局限可更好探索大模型应用

易观分析

科技

为什么 APISIX Ingress 是比 Emissary-ingress 更好的选择?

API7.ai 技术团队

屡试不爽!一份阿里Java程序性能实战笔记,啃完让你程序快上200%

Java你猿哥

Java ssm 面经

【Docker】MacOs安装

Aldeo

Docker 云原生

graphpad prism基础使用教程

互联网搬砖工作者

LeetCode题解:137. 只出现一次的数字 II,排序后搜索,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

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