云原生集成开发环境——TitanIDE
通过网页在任何地方更安全、更高效地编码2022-05-26
708
Aeraki [Air-rah-ki] 是希腊语中“微风”的意思。虽然 Istio 在服务网格中连接微服务,但 Aeraki 提供了一个框架,允许 Istio 支持更多的第 7 层协议,而不仅仅是 HTTP 和 gRPC。我们希望这股"微风"可以帮助 Istio 更进一步。
Service Mesh 缺乏协议支持
我们现在面临着服务网格的一些挑战:
这些障碍使用户很难(如果不是不可能的话)管理微服务中其他广泛使用的第 7 层协议的流量。例如,在微服务应用程序中,我们可能有以下协议:
微服务中常用的第 7 层协议
如果您已经在迁移到服务网格方面投入了大量精力,那么您当然希望充分利用它——管理微服务中所有协议的流量。
Aeraki 的方法
为了解决这些问题,我们创建了一个开源项目Aeraki Mesh,以提供一种非侵入式、可扩展的方式来管理 Istio 服务网格中的任何第 7 层流量。
艾拉基建筑
如图所示,Aeraki 框架由以下组件组成:
Dubbo和Thrift已经基于 MetaProtocol 实现。更多协议正在开发中。如果您使用的是闭源专有协议,您还可以通过为其编写 MetaProtocol 编解码器在您的服务网格中对其进行管理。
大多数请求/响应风格的无状态协议都可以构建在 MetaProtocol 代理之上。但是,有些协议的路由策略过于“特殊”,无法在 MetaProtocol 中进行规范化。例如,Redis 代理使用槽号将客户端查询映射到特定的 Redis 服务器节点,槽号由请求中的 key 计算得出。只要 Envoy 代理端有可用的 Envoy 过滤器,Aeraki 仍然可以管理这些协议。目前,对于该类别的协议,Aeraki 支持Redis和 Kafka。
元协议代理
深入研究元协议
让我们看看 MetaProtocol 是如何工作的。在引入 MetaProtocol 之前,如果我们想为特定协议代理流量,我们需要编写一个理解该协议的 Envoy 过滤器并添加代码来操作流量,包括路由、头部修改、故障注入、流量镜像等。
对于大多数请求/响应风格的协议,流量操作的代码非常相似。因此,为了避免在不同的 Envoy 过滤器中重复这些功能,Aeraki 框架在一个地方(MetaProtocol 代理过滤器)实现了第 7 层协议代理的大部分常见功能。
这种方法显着降低了编写新的 Envoy 过滤器的障碍:现在您只需要实现编解码器接口,而不是编写功能齐全的过滤器。除此之外,控制平面已经到位——Aeraki 在控制平面上工作,为基于 MetaProtocol 构建的所有协议提供 MetaProtocol 配置和动态路由。
在 MetProtocol 之前和之后编写 Envoy 过滤器
MetaProtocol Proxy 中有两个重要的数据结构:Metadata 和 Mutation。元数据用于路由,而 Mutation 用于标头操作。
在请求路径上,解码器(编解码器实现的解码方法)使用从请求中解析的键值对填充元数据数据结构,然后将元数据传递给元协议路由器。路由器在匹配它通过 RDS 和元数据从 Aeraki 接收到的路由配置后,选择适当的上游集群。
如果需要修改请求,自定义过滤器可以使用任意键值对填充 Mutation 数据结构:添加标头或更改标头的值。然后将 Mutation 数据结构传递给编码器(编解码器实现的 encode 方法)。编码器负责将键值对写入有线协议。
请求路径
响应路径与请求路径类似,只是方向不同。
响应路径
一个例子
如果需要实现基于 MetaProtocol 的应用协议,可以按照以下步骤进行(以 Thrift 为例):
数据平面
控制平面
您不需要实现控制平面。Aeraki 监视服务和流量规则,为 Sidecar 代理生成配置,并通过EnvoyFilterMetaProtocol RDS 将配置发送到数据平面。
协议选择
与 Istio 类似,协议由服务端口前缀标识。请使用以下模式命名服务端口:tcp-metaprotocol-{应用程序协议}-xxx。例如,Thrift 服务端口应命名为 tcp-metaprotocol-thrift。
交通管理
MetaRouter您可以通过CRD更改路线。例如:将 20% 的请求发送到 v1,将 80% 的请求发送到 v2:
参考
原文作者:赵华冰 - 腾讯
-----------------------------------------------------------
行云创新
行云创新是云原生领域的佼佼者,其产品在广西贵港智慧城市、长三角产学研一体化创新平台、海尔工业互联网、中信银行核心系统建设等项目中起到关键的支撑作用。同时,作为信创工委会成员,行云打造业界领先的“信创与非信创统管、一键向信创迁移”的方案,并在某大型国有银行取得了良好的实践效果。
SolarMesh,高效可视化平台
基于 Istio 及容器技术,提供流量监控和管理,提供完善的非侵入式服务治理解决方案。帮助企业在纷繁复杂的微服务调度中快速定位问题,增强研发效率。
SolarMesh,让服务网格不再难学难用,让服务网格在企业落地更加平滑、安全、稳定。