写点什么

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

评论

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

Elasticsearch Search API 基础语法

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

诊所数字化:就诊流程标准化和产品SOP设计

boshi

数字化转型 医疗 七日更

DIY一款4路USB转TTL串口调试模块

不脱发的程序猿

DIY 电路设计 硬件设计 USB电路 USB转TTL

让虞书欣、李诞拍到停不下来!AR+AI双引擎的互动小游戏,如何打开IP新玩法?

爱奇艺技术产品团队

GitHub上爆火的Java性能优化100+小技巧!(干货建议收藏)

Java架构师迁哥

TCP 协议灵魂问题,巩固你的网路底层基础

一、MongoDB简介

Kylin

数据库 mongodb 学习 七日更 二月春节不断更

DPDK大页内存原理

赖猫

Linux DPDK

如何提升网页核心指标

Vincent

对DevOps的九大误解,是时候纠正了!

禅道项目管理

开源 DevOps 敏捷 自动化 持续交付

LeetCode题解:1143. 最长公共子序列,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

【LeetCode】最大连续1的个数三Java题解

Albert

算法 LeetCode 2月春节不断更

如何读懂CNN、BBC、经济学人、卫报、纽约时报?看完这本经典即可事半功倍!

wbliu85

学习 英语

日记 2021年2月19日(周五)

Changing Lin

2月春节不断更

架构师week12作业

Geek_xq

架构师week12心得

Geek_xq

前端学习总结,经验分享,项目经验分享过程

我是哪吒

学习 程序员 Vue 大前端 2月春节不断更

【STM32】ST-LINK下载器下载后需复位,程序才运行的问题

AXYZdong

硬件 stm32 2月春节不断更

Kafka.01 - 简介

insight

kafka 2月春节不断更

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

newbe36524

Docker 微服务 k8s dotnet

地表建筑物识别Dayo1

IT蜗壳-Tango

七日更 2月春节不断更

CoralCache:一个提高微服务可用性的中间件

华为云开发者联盟

数据库 微服务 中间件 内存 CoralCache

linux内核协议栈 邻居协议之ARP协议处理初始化

赖猫

Linux 协议栈 Linux内核

15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工

梦想橡皮擦

Python 2月春节不断更

Hive HMS Canary 时间较长异常分析

kwang

大数据 hadoop hive

竞猜商城系统软件制作

v16629866266

数据中心决策如何快人一步?一块大屏轻松实现3D数据可视化

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

技术秘籍 | 如何简单优雅的适配textview行间距?

百度开发者中心

大前端 TextView

开源数据库管理系统现在比商业产品更受欢迎

PostgreSQLChina

数据库 postgresql 软件 开源社区

万字长文:解读区块链7类共识算法

华为云开发者联盟

区块链 公有链 拜占庭容错 共识算法 公式算法

最新Hadoop的面试题总结

大数据老哥

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