写点什么

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

评论

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

牛客java选择题每日打卡Day3

京与旧铺

6月月更

获取Windows操作系统的语言版本

dvlinker

操作系统语言 UI Language MSDN

简析攻防演练中蓝队的自查内容

穿过生命散发芬芳

6月月更 攻防演练

Prometheus 2.34.0 新特性

耳东@Erdong

release Prometheus 6月月更

数据治理啥都干

奔向架构师

数据治理 数据资产 6月月更

LabVIEW Arduino TCP/IP远程智能家居系统(项目篇—5)

不脱发的程序猿

物联网 传感器 LabVIEW Arduino 远程智能家居系统

架构实战营毕业设计

KennyQ

gm

通过Rust语言计算加速技术突破图片识别性能瓶颈​​

宇宙之一粟

rust 6月月更

模块五作业

Elvis FAN

国内首款开源 MySQL HTAP 数据库即将发布,三大看点提前告知

StoneDB

MySQL #数据库 #开源

手机影像内卷几时休?

脑极体

2022年,中轻度游戏出海路在何方?

Geek_2d6073

【题解】剑指 Offer 15. 二进制中1的个数(C语言)

未见花闻

6月月更

leetcode 1143. Longest Commom Subsequence 最长公共子序列(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

疫情期间居家办公的总结体会 |社区征文

三掌柜

初夏征文

对象的访问机制及其他

Jason199

js 原型链 6月月更

基于STM32+华为云IOT设计的云平台监控系统

DS小龙哥

6月月更

TopoLVM: 基于LVM的Kubernetes本地持久化方案,容量感知,动态创建PV,轻松使用本地磁盘

大卡尔

Kubernetes 云原生 6月月更

Flutter TextField详解

yechaoa

flutter 6月月更 TextField

聊聊我的远程工作体验 | 社区征文

Nick

远程办公 初夏征文 高效办公 WLB 在线会议

架构实战营模块五作业

融冰

物联网协议的王者:MQTT

wljslmz

mqtt 6月月更

# 补齐短板-开源IM项目OpenIM关于初始化/登录/好友接口文档介绍

Geek_1ef48b

HotSpot JVM 「02」Java Object Layout

Samson

学习笔记 hotspot 6月月更

linux之git高级命令

入门小站

Linux

Maven的安装使用

zarmnosaj

6月月更

我的第一个Vue项目-Demo

Python研究所

6月月更

微博评论高性能高可用架构

intelamd

K8S学习笔记--一起来看容器的本质

IT蜗壳-Tango

IT蜗壳教学 6月月更

亿级月活全民K歌Feed业务在腾讯云MongoDB中的应用及优化实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 分布式数据库mongodb NoSQL 数据库

在线文本数字识别列表求和工具

入门小站

工具

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