有一些数据库或者数据库代理采用相同的网络协议。例如 TiDB、Oceanbase、Aurora、Kingshard等都兼容 MySQL 协议;Twemproxy、Codis、Tendis、Pika等都采用了 Redis 协议。由于业务需求,我们有时需要从一个实现迁移到另一个实现上。在迁移之前,我们需要进行对比测试,以对比不同实现的性能、功能及兼容性。
例如下面的场景:我们最初只用了一个单实例 Redis 来做缓存,随着线上业务的不断扩展,该 Redis 实例已经出现了访问瓶颈,我们希望切换为采用 Twemproxy 来对 Redis 进行水平扩展。通过采用 Aeraki 来将线上的 Redis 流量镜像到 Twemproxy 测试环境,我们可以采用真实的业务数据对 Twemproxy 进行充分的测试,以评估其对线上业务的影响。
采用全流量故障注入测试系统弹性Istio 可以实现 HTTP 和 gRPC 的故障注入,但这还不够。在一个分布式系统中,应用服务、数据库、缓存、消息系统等都可能由于网络或者其他原因出现不可用的情况。采用 Aeraki,我们可以对系统中的所有这些可能的故障点进行完整的模拟,以测试系统的弹性,保证我们的系统在一部分出现问题后可以自愈或者通过降级保证系统基本可用,而不至于整个系统崩溃。
小结Service Mesh 中有大量的七层协议流量,包括 RPC、Database、Cache、Messaging 等类型的七层协议,但 Istio 只提供了 HTTP 和 gRPC 的七层管理能力,对其他七层协议的支持非常有限。Aerkai 开源项目通过非侵入的方式为 Istio 提供了任意七层协议的支持能力,并提供了面向用户的高级配置 CRD,可以很方便地对这些协议的流量进行管理,实现灰度发布等高级流量管理能力。目前 Aeraki 已经支持了 Thrift、Dubbo、Redis、Kafka、Zookeeper,并即将支持更多的协议。Aeraki 的定位是做成一个非侵入式 Istio 功能增强工具集,除了协议扩展之外,还会关注解决在 Istio 使用过程中遇到的其他常见问题,包括效率优化、配置简化、第三方服务发现接入、功能扩展等。如果您希望了解更多关于 Aeraki 的内容,欢迎访问 Github 主页 https://github.com/aeraki-framework/aeraki 。
**招聘信息
腾讯云 Service Mesh 团队正在火热招聘中,Base 成都、北京、深圳或者西安,要求候选者熟悉 Kubernetes/Istio/Envoy。欢迎大家发送简历到 huabingzhao@tencent.com 或者微信联系 zhao_huabing。
参考链接:
IstioCon talk “How to Manage Any Layer-7 Traffic in an Istio Service Mesh?” 视频回放 https://www.bilibili.com/video/BV1XN41197Sq
IstioCon talk “How to Manage Any Layer-7 Traffic in an Istio Service Mesh? 讲稿下载 https://zhaohuabing.com/slides/how-to-manage-any-layer-7-traffic-in-istio.pdf
Aeraki Github 主页 https://github.com/aeraki-framework/aeraki
Aeraki 在线 Demo :3000/d/pgz7wp-Gz/aeraki-demo?orgId=1&refresh=10s&kiosk
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!