前言
由于本人最近在找工作,多被问及工作中有没有接触过分布式和微服务相关知识时哑口无言而被拒,所以奋而了解了相关的知识。
技术选型
经过一轮时间的了解,发现现在的主流微服务框架(这里先定义为服务订阅,注册,发现,以及通信),有SpringCloud和Dubbo。他们都是从开发者的角度去审视微服务系统的。偶然的一篇微信公众号推送,让我知道了Istio的存在。在参考帖子之后,决定选择Istio为本人技能栈中的一环。
本人远没有上述博客作者一般睿智,所以只能说说我个人的选择思路。
1、由于上述帖子比较了Istio,SpringCloud,Dubbo比较大的贡献者和更新周期。其实3者的主要贡献者都有足够的业务规模和技术实力以支撑各自框架的发展;而更新周期,则是Istio和SpringCloud更占优。(最新的Dubbo在Github上2018年3月份的提交次数为28次(至2018-03-31 00:46),社区重新活跃了起来。)
2、本人平时有主动接触数据挖掘的知识。近一年的业余时间都是花在学习数据挖掘知识上。从R到Python的迁移,让我对Python有了不算很深的了解,我一直有打算利用Python的数据可视化方案替换掉过往项目上使用的报表系统。按照《微服务设计》(O’Reilly/人民邮电出版社 发行, Sam Newman著 崔力强 张骏 译)的1.2–1.2.1所述,微服务的其中一个好处为技术异构性。用我自己的话来说即是:特定的问题用针对性的技术(栈)解决。Java技术及其生态在事务型系统上有非常强的优势,但是是否是微服务架构唯一的实现方式有待证实。而Istio的跨语言和平台特性则很符合我的这种逻辑,所以我选择将Istio添加到我的技术栈中,作为微服务的首选方案。(SpringCloud 和 Dubbo 相比之下,则非常有利于以Java生态为主公司的技术演进,比如网飞Netflix。Java程序员学习坡度不大,技术经理也很乐意只管理一种技术栈,HR的工作也会轻松很多。)
3、正如上述博客内提到,Istio提供功能,但不需要改动服务代码。这一点有点像Spring的非侵入式的概念。由于不需要改动原来的代码(假设系统已经微服务化),能很大程度地保存对原有系统的投资(时间,人力等)。
目的
选择翻译文档的目的:1、第一点自然是学习Istio框架,填补自己的技术栈短板,让自己在下一次面试的时候不至于无话可说;2、锻炼/维持自己的英语水平;3、希望能够有读者反馈,如果能够指出我在技术/技术选型上或者翻译上的疏漏或者错误的地方则是对我莫大的裨益。
注意:
1、当我觉得翻译有待商榷时,我会在译文后面标注<!-翻译>,以便读者自行分辨。
2、该系列文章将以 https://istio.io/docs/ 为素材进行翻译。
3、尽量不对该框架的专有概念,如Enovy,Mixer,Pilot等进行翻译。
本期则先对Istio的介绍进行翻译:
An open platform to connect, manage, and secure microservices
Istio是一个开放的平台,用以连接、管理微服务,以及保障微服务的安全。
Intelligent Routing and Load Balancing
Control traffic between services with dynamic route configuration, conduct A/B tests, release canaries, and gradually upgrade versions using red/black deployments.
智能路由与负载均衡
配置动态路由以控制服务之间的通信流量,引入 A/B测试,释放监测“哨兵”信号[1],用红黑发布实现版本渐进升级。
Fleet-Wide Policy Enforcement
Apply organizational policy to the interaction between services, ensure access policies are enforced and resources are fairly distributed among consumers.
全方位的策略实施
将经过组织的策略应用于服务之间的交互中,确保访问策略的执行以及资源被公平地分配给消费者。
In-Depth Telemetry and Reporting
Understand the dependencies between services, the nature and flow of traffic between them, and quickly identify issues with distributed tracing.
深度探测与报告
了解服务之间的依赖关系、通信流量的状况及流向,以及利用分布式追踪快速识别出问题。
参考资料
1、深度剖析Service Mesh服务网格新生代Istio http://geek.csdn.net/news/detail/237825
2、华山论剑:微服务框架-SpringCloud、Dubbo or Istio https://blog.csdn.net/bigtree_3721/article/details/78564591
3、《微服务设计》/《Building Microservices》 O’Reilly 人民邮电出版社 出版 Sam Newman著 崔力强 张骏 译 ISBN978-7-115-42026-8
4、Istio 官网 https://istio.io/
[1]https://en.wikipedia.org/wiki/Sentinel_species#Historical_examples