写点什么

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

评论

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

详解 SQL 中的单表查询

悟空聊架构

sql 6月日更 单表查询 T-SQL

“布”道AI的正确打开方式

脑极体

信息安全与网络安全的关系

网络安全学海

程序员 网络安全 安全 信息安全 渗透测试

知乎上线1小时,5w浏览量被下架的JVM全解笔记,内容太强大

Java架构师迁哥

采访华为服务器OS首席架构师熊伟:开源背后的故事(采访提纲)

xcbeyond

采访提纲 6月日更

用VSCode刷LeetCode

IT蜗壳-Tango

6月日更

Kubernetes手记(20)- HeapSter监控

雪雷

k8s 6月日更

在线URLEncode编码,URLDecode解码工具

入门小站

工具

定点数与浮点数表示

若尘

浮点数 计算机组成原理 6月日更

Jenkins 如何与 Kubernetes 集群的 Tekton Pipeline 交互?

张晓辉

Kubernetes 云原生 jenkins Tekton CI/CD

模块7作业

Geek_2e7dd7

架构训练营

网络抓包实战05——深入浅出连接关闭

青春不可负,生活不可欺

指挥中心情指勤一体化解决方案,河北公安情指勤一体化建设

网络攻防学习笔记 Day53

穿过生命散发芬芳

网络攻防 6月日更

你会选做通才还是专才?

石云升

职场经验 6月日更

【MindSpore有奖活动】资讯内容宝藏多,编译安装试一波!

Geek_6cdeb6

5分钟速读之Rust权威指南(二十八)RefCell<T>

wzx

rust

值得收藏的15个JavaScript语句

devpoint

JavaScript array 6月日更

协同过滤推荐算法(十六)

Databri_AI

推荐算法

Java8 的时间库(2):Date 与 LocalDate 或 LocalDateTime 互相转换

看山

Java 6月日更

Linux之mv命令

入门小站

Linux

网络抓包实战06——灵异事件的始作俑者:Reset数据包

青春不可负,生活不可欺

Java内存模型

wzh

Java JVM happens-before 并发 Java内存模型

Java线程状态与状态间的切换

wzh

Java 线程 JVM 操作系统 并发

Redis入门五:主从复制

打工人!

redis 主从复制 6月日更

一文带你了解什么是HTTP协议

网络安全学海

网络安全 安全 信息安全 HTTP 渗透测试

【21-16】PowerShell循环

耳东@Erdong

PowerShell 6月日更

微信小程序开发(一)

空城机

微信小程序 大前端 6月日更

只把华为“桑田岛时间”看做一档对话节目?格局小了!

脑极体

网络抓包实战04——深入浅出连接建立

青春不可负,生活不可欺

[译] R8 优化:方法的 Outlining 优化

Antway

6月日更

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