写点什么

eBay 如何提高通知平台的可靠性

  • 2023-01-17
    北京
  • 本文字数:856 字

    阅读完需:约 3 分钟

eBay如何提高通知平台的可靠性

eBay 工程师一直在使用故障注入技术来提高通知平台的可靠性,并探索其弱点。虽然故障注入是一种常见的行业实践,但 eBay 尝试了一种利用插装将故障注入引入到应用程序层的新方法。

 

该平台负责向第三方应用程序推送平台通知,以提供商品价格、商品库存状态、支付状态等方面的最新变化。它是一个高度分布式和大规模的系统,有许多外部依赖,包括分布式存储、消息队列、推送通知端点等。

 

eBay 工程师 Wei Chen 表示,通常情况下,故障注入是在基础设施层进行的,例如,通过服务器断开连接或超时,或使给定资源暂时不可用,引入 HTTP 错误,从而导致网络故障。这种方法代价高昂,并且对系统的其他部分有许多影响,因此很难单独探索故障的影响。

 

但这并不是唯一可行的方法。相反,可以在应用程序层创建故障,例如,在 HTTP 客户端库中添加特定的延迟以模拟超时。

 

我们对依赖服务的客户端库的类文件进行了插装,以引入我们定义的不同类型的故障。当我们的服务通过插装 API 与底层资源通信时,将会引发引入故障。由于更改了代码,这些故障并没有真正发生在我们的依赖服务中,其效果是模拟的,使我们能够在没有风险的情况下进行实验。

 

三是 eBay 实现的强制调用方法显示错误行为的基本工具:阻塞或中断方法逻辑,例如抛出异常;更改方法的状态,例如更改 response.getStatusCode() 的返回值;以及替换方法参数的值,包括修改发送给方法的参数值。

 

为了实现上述三种类型的插装,我们创建了一个 Java 代理。在代理中,我们实现了一个 classloader ,它将插装应用程序代码中使用方法的代码。我们还创建了一个注解来指示将插装哪个方法,并将插装逻辑放在注解的方法中。

 

此外,eBay 工程师还实现了一个配置管理系统,以动态更改故障注入在运行时的行为。特别是,对于 eBay 应用程序支持的每个端点,工程师可以更改一些参数来测试特定的行为。

 

据 Chen 介绍,eBay 是业界首个使用代码插装在应用程序层实施故障注入的组织。如果你对这种方法感兴趣,请不要错过原文中提供的完整说明。

 

原文链接:

https://www.infoq.com/news/2022/12/eBay-fault-injection-instrument/

2023-01-17 09:416012

评论

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

360 Atlas生产环境使用心得

心平气和

MySQL 分库分表 Proxy Atlas

彻底解决雪花算法时间回拨问题新方案

柿子

算法 雪花算法

随着区块链技术的成熟,全球企业开始拥抱公共区块链

CECBC

区块链技术 公共区块链

定义“开发者关系”

开发者关系

开发者关系 开发者运营 技术运营 开源社区

Linux之crontab命令

wangkx

Linux crontab

开发者关系(DevRel)的新手指南

开发者关系

开发者关系 开发者运营 技术运营 开源社区

跟我一起基于Karma搭建一个测试环境(上)

Jack Q

大前端 Karma 测试框架搭建

RPC原理

石刻掌纹

范型的下一步

申屠鹏会

翻译 Go 语言

troubleshoot之:GC调优到底是什么

程序那些事

性能分析 jvm调优 GC调优

9个典型的开发者关系面试题

开发者关系

开发者关系 开发者运营 技术运营 开源社区

二叉树的遍历(前序、中序、后序)

申屠鹏会

算法 二叉树 Go 语言

webbench源码阅读

我是程序员小贱

计算机网络基础(十九)---传输层-TCP的拥塞控制

书旅

TCP 协议栈 网络层

散列表高级应用之把用户访问记录优化到极致

架构师修行之路

哈希表 数据结构与算法

TypeScript 设计模式之观察者模式

Geek_z9ygea

typescript 大前端 设计模式

跟我一起基于 Karma 搭建一个测试环境 (中)

Jack Q

大前端 Karma 测试框架搭建

同行分析优化

誓约·追光者

Sparksql 优化

平时开发Git常用的小技巧

zui.zhang

git rebase

学习总结 -- Week 10

吴炳华

k8s-client-go源码剖析(一)

远鹏

开源 Kubernetes 容器 源码剖析 Go 语言

Linux后台开发高频题目总结

我是程序员小贱

Mac JetBrains(IDE)常用快捷键

wangkx

JetBrains 快捷键

Linux数据流重定向

wangkx

Linux linux操作

在龙门吊上,看到破浪而来的智能时代

脑极体

突破内存限制的高性能排序

架构师修行之路

TCP/IP学习(1):创建套接字

申屠鹏会

TCP 网络 TCP/IP

物流与区块链加供应链的现状与未来趋势

CECBC

行业资讯 区块链技术 供应链

翻译:如何编写Golang代码(How to Write Go Code)

申屠鹏会

翻译 Go 语言

今天给二叉树加个BGM,二叉树唱歌了!

我是程序员小贱

瀑布模型总结

我是程序员小贱

eBay如何提高通知平台的可靠性_安全_Sergio De Simone_InfoQ精选文章