Istio的架构设计中有几个关键目标,这些目标对于系统应对大规模流量和高性能地进行服务处理至关重要:
最大化透明:为了让Istio被更广泛采用,运维和开发人员只需要付出很少的代价就可以从中受益。为此Istio将自己自动注入所有的网络路径的服务中。Istio使用Sidecar代理来捕获流量,不需要对已部署的应用程序代码进行任何改动。在Kubernetes中,代理被注入Pod中,通过编写iptables规则来捕获流量。注入Sidecar代理到Pod中并且修改路由规则后,Istio就能够拦截所有流量。这个原则也适用于性能,所有组件和API在设计时都必须考虑性能和规模。
增量:随着运维人员和开发人员越来越依赖Istio,系统必然会一起成长。Istio会继续添加新功能,但是最重要的是扩展策略系统的能力,集成其他策略和控制来源,并将网格行为信号传播到其他系统进行分析。策略运行时支持标准扩展机制以便插入其他服务中。
可移植性:Istio必须支持以最小的代价在任何云和本机环境上运行。将Istio上的服务进行迁移也是可行的。
策略一致性:在服务间的API调用中,策略的应用使得可以对网格间行为进行全面的控制,但对于不需要在API级别表达的资源来说,对资源应用策略也同样重要。例如,将配额应用到ML训练任务消耗的CPU数量上,比将配额应用到启动这个工作的调用上更为有用。因此,策略系统作为独特的服务来维护,具有自己的API,而不是将其放到Sidecar代理中,这容许服务根据需要直接与其集成。
资料来源:《Istio入门与实战》,文章链接:https://developer.aliyun.com/article/725525
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。