限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

评论

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

爱了,天猫“618”亿级高并发设计实战手册,限时分享

Java架构师迁哥

欧洲杯与618:“夏季限定”MVP诞生记

脑极体

原以为哈夫曼树、哈夫曼编码很难,结果大佬用6张图就讲明白了

Java架构师迁哥

Flink Checkpoint 和 Large State 调优

Alex🐒

flink 翻译 flink1.13

Gson的快速使用

卢卡多多

json Gson 6月日更

Windows11要来啦!!!

学神来啦

win10 win11

GraphQL 入门指南

PingCode研发中心

开发者 graphql

一文带大家,认识DPDK基础,踏上网络高级编程之路

奔着腾讯去

c++ 计算机网络 TCP/IP 网络层 网络io

Redis入门三:事务

打工人!

redis 事务 6月日更

推荐算法团队介绍(十四)

Databri_AI

机器学习 算法 团队 推荐系统

分布式事务框架seata落地实践

有道技术团队

分布式 大前端

5分钟速读之Rust权威指南(二十六)Drop

wzx

rust

以资源为中心的计算机和现实分析

型火🔥

架构 分布式 操作系统 资源

深入了解Spring之上下文

邱学喆

ApplicationContext LifecycleProccesor 事件传播者 ApplicationListener

浅析Angular数据状态管理框架:NgRx/Store

devpoint

angular.js angular store 6月日更

百度后端二面有哪些内容,万字总结(一)

李阿柯

MySQL 面试 索引结构 索引优化

计算机性能测试

若尘

计算机组成原理 6月日更

☕【JVM技术探索】各种类型对象占用内存情况分析(下)

码界西柚

JVM 6月日更 对象大小 对象计算

Python线性预测

Qien Z.

6月日更 线性预测

如何在 Vue 的计算属性中传递参数

devpoint

Vue vue2 6月日更

如何打造一支让人躺平的研发团队?招招让你起不来!

菜根老谭

内卷 躺平

Kubernetes手记(18)- 高级调度策略

雪雷

k8s 6月日更

算法之寻找二叉树结点的最近公共祖先

Skysper

算法

你会写注释吗?

看山

Java 6月日更

工信部发文将整治涉诈电话卡:打击网络诈骗必须釜底抽薪

石头IT视角

夏未至,春还在|靠谱点评。

无量靠谱

JavaScript 学习(七)

空城机

JavaScript 大前端 6月日更

数据库在各行各业的应用实践

xcbeyond

数据库 最佳实践 6月日更

slate-angular 正式开源

PingCode研发中心

angular.js 开源 angular

也许已没有也许|靠谱点评

无量靠谱

“云边+端”三管齐下,“有蓉”数据库助力四川气象进入天擎时代

脑极体

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