写点什么

Istio 架构扩展机制

作者:阿泽🧸
  • 2022 年 7 月 22 日
  • 本文字数:930 字

    阅读完需:约 3 分钟

Istio架构扩展机制

任何一个系统,随着使用场景和使用方式的不断变化,随时会面对很多新的挑战。为了应对这些挑战,需要保证在内核基本稳定的前提下建立一套完善的插件机制,插件使用者可以使用自定义的方式进行扩展,并且不影响系统基本架构的稳定性。


Istio 作为支撑微服务通信的基础设施,对扩展性有着非常高的要求,提供了多维度、多层次的插件扩展机制,大体汇总如下。

1)服务注册中心:服务管理上,可以提供自定义的服务注册中心支持。

2)通信协议:不仅支持常见的 HTTP 协议和 TCP 协议,也对各种用户自定义协议提供支持。

3)链路治理:不仅支持各种自定义的流量调度和流量管理,也可以支持用户以自定义的方式对请求进行加工处理。

4)遥测和统计:支持多种适配器,并且可轻松地增加新的自定义适配器。


Istio 通过各种不同形式的插件机制实现了强大的扩展性支持,插件从实现层面看其实很简单,本质上是一个钩子回调函数,插件注册就是将钩子回调函数挂在插件机制上,在事件到来时,触发回调函数的调用。因此研究插件机制重点需要关注两点。

1)插件的抽象。抽象是架构师必备的一项基本能力,抽象就是从变化中提取不变的过程。通过研究经典的抽象过程,可以为后续设计自己的插件机制提供参考。

2)回调和通知的机制。


Istio 通过服务发现抽象接口进行服务发现基本能力的定义,服务发现抽象接口定义了一个注册中心以提供基本的能力,各注册中心只需要实现这个接口。插件回调和通知机制方面,服务注册中心提供了两个方向的回调触发。

1)将注册中心插件注册到 Istio 中,可以通过插件获得具体的服务发现能力;

2)插件会提供服务变更抽象接口,Istio 反向向插件中注册用于通知的回调函数,当注册中心发生变更时,插件会调用预注册的 Istio 回调函数。


架构固然有很多通用的设计思想和原则,但很多架构设计原则本身就是一对矛盾体,比如分布式系统的 CAP、性能和效率等,同时满足所有的设计要求是不可能的,需要针对具体的场景,进行一定的折中和取舍。


架构设计就是个权衡的过程,在无法满足所有需求的情况下,不需要同等对待所有的需求,架构设计的本质是取舍,即发现业务的根本需求,权衡哪些需求才是你真正关注的,哪些需求是当前可以舍弃的。同时也要认识到根本需求也不是一成不变的,随着时间和业务的变化,根本需求也可能会发生变化。


发布于: 3 小时前阅读数: 13
用户头像

阿泽🧸

关注

还未添加个人签名 2020.11.12 加入

还未添加个人简介

评论

发布
暂无评论
Istio架构扩展机制_istio_阿泽🧸_InfoQ写作社区