激情的4月,微服务将进入2.0时代,你们准备好了么?1. 微服务之殇2. 另辟蹊径3. 服务网格

服务自2014年3月由Martin Fowler首次提出以来,在Spring Cloud、Dubbo等各类微服务框架的帮助下,以燎原之势席卷了整个IT技术界,成为了最主流的分布式应用解决方案。但仍然还有很多问题没有得到根本性的解决,比如技术门槛高、多语言支持不足、代码侵入性强等。如何应对这些挑战成为了下一代微服务首要回答的问题。直到服务网格(Service Mesh)被提出,这一切都有了答案。

1. 微服务之殇

时光回到2017年初,那时所有主流的微服务框架,不管是类库性质的Finagle、Hystrix,还是框架性质的Spring Cloud、Dubbo,本质上都归于应用内解决方案,都存在以下三个问题:

技术门槛高:随着微服务实施水平的不断深化,除了基础的服务发现、配置中心和授权管理之外,团队将不可避免的在服务治理层面面临各类新的挑战,包括但不限于分布式跟踪、熔断降级、灰度发布、故障切换等,这对团队提出了非常高的技术要求。

代码侵入性强:主流的微服务框架(比如Spring Cloud、Dubbo)或多或少都对业务代码有一定的侵入性,框架替换成本高,导致业务团队配合意愿低,微服务落地困难。

多语言支持不足:对于稍具规模的团队,尤其在高速成长的互联网创业公司,多语言的技术栈是常态,跨语言的服务调用也是常态,但目前开源社区上并没有一套统一的、跨语言的微服务技术栈。

这些问题加起来导致的结果就是,在实施微服务的过程中,小团队Hold不住,大公司推不动。

2. 另辟蹊径

如何解决上述三个问题呢?最容易想到的是代理模式,在LB层(比如Nginx、Apache HTTP Server)处理所有的服务调用,以及部分服务治理问题(比如分布式跟踪、熔断降级)。但这个方案有两个显著的缺点,第一,中心化架构,代理端自身的性能和可用性将是整个系统的瓶颈;第二,运维复杂度高,业务团队笑了,运维团队哭了。

难道这就是桃园吗?

服务网格(Service Mesh)应运而生!自2016年9月Linkerd第一次公开使用之后,伴随着Linkerd、Envoy、Istio、NGINX Application Platform、Conduit等新框架如雨后春笋般不断涌现,在微服务之后,服务网格和它的边车(Sidecar)模式引领了IT技术界2017一整年的走向。

3. 服务网格

元定义

首先,我们来看一下服务网格的提出者William Morgan是如何描述它的。

A service mesh is a dedicated infrastructure layer for handling service-to-service communication. Consists of a control plane and data plane (service proxies act as “mesh”). - William Morgan,What’s a Service Mesh? And Why Do I Need One?

上面这段话非常清晰的指明了服务网格的职责,即处理服务间通讯,这正是服务治理的核心所在。而a dedicated infrastructure layer这几个单词将服务网格和之前所有的微服务框架(framework)划清了界限,也即服务网格独立于具体的服务而存在,这从根本上解决了前文提到的老的微服务框架在多语言支持和代码侵入方面存在的问题。并且,由于服务网格的独立性,业务团队不再需要操心服务治理相关的复杂度,全权交给服务网格处理即可。

那你可能会问,这不跟之前提到的代理模式差不多吗?区别在于服务网格独创的边车模式。针对每一个服务实例,服务网格都会在同一主机上一对一并行部署一个边车进程,接管该服务实例所有对外的网络通讯(参见下图)。这样就去除了代理模式下中心化架构的瓶颈。同时,借助于良好的框架封装,运维成本也可以得到有效的控制。

演化史

追本溯源,服务网格从无到有可分为三个演化阶段(参见下图)。第一个阶段,每个服务各显神通,自行处理对外通讯。第二个阶段,所有服务使用统一的类库进行通讯。第三个阶段,服务不再关心通讯细节,统统交给边车进程,就像在TCP/IP协议中,应用层只需把要传输的内容告诉TCP层,由TCP层负责将所有内容原封不动的送达目的端,整个过程中应用层并不需要关心实际传输过程中的任何细节。

时间线

最后,再来回看一下服务网格年轻的历史。虽然服务网格的正式提出是在2016年9月,但其实早在2013年,Airbnb就提出了类似的想法——SmartStack,只不过SmartStack局限于服务发现,并没有引起太多关注,类似的还有Netflix的Prana和唯品会的OSP Local Proxy。2016年服务网格提出之后,以Linkerd和Envoy为代表的框架开始崭露头角,并于2017年先后加入CNCF基金(Cloud Native Computing Foundation),最终促使了一代新贵Istio的诞生。2018年,Istio将发布1.0版本,这也许意味着微服务开始进入2.0时代。

在此我向大家推荐一个交流学习群:697579751 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java达人

中高级技术面试考察过程中的关键点

曾经根据自己的面试经验写过,这是一种标准化,流程化的方式,用于考察一个人的方方面面,然而,一次面试时间不过短短30,40分钟,在这段时间内,要全面的考察一个人是...

1320
来自专栏Java面试笔试题

C/S 与 B/S 的区别

1.硬件环境不同:   C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门server提供连接和数据交换服务.   B/S 建立在...

911
来自专栏数据派THU

【数据蒋堂】功夫都在报表外--漫谈报表性能优化

来源:润乾软件 作者:蒋步星 编辑:刘晴敏 本文字数为2219字,建议阅读6分钟 本文由蒋步星讲述了报表性能优化的问题。 应用系统中的报表,作为面向业务用户的窗...

2969
来自专栏我就是马云飞

一个 2 年 Android 开发者的 18 条忠告

我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有2年半了, 最初的时候,并没有人告诉我如何做才是正确的。我犯了很多错误,浪...

2278
来自专栏企鹅号快讯

Linux运维工程师学习成长路线

昨天【送书3本】这本学习linux的书,至少我很喜欢的活动,大家的热情,完全超出了小编的预想。 之前小编送书 | 有人偷偷爱着你的送书活动号召力明显逊色了不少,...

4469
来自专栏镁客网

火币网更名、OKEX公号被封,晚间回应称与监管无关 | 热点

1684
来自专栏非著名程序员

非著名程序员:微信小程序的开发与体验之旅

? 导语:在开始之前,先祝福大家新年快乐,祝福新的一年里工作顺利,身体健康,阖家欢乐。不知道大家这个元旦假期过得怎么样?反正我个人认为我过得很充实。先是爬山,...

22710

想知道Tableau适不适合你?以下10点助你一臂之力

译者注:文章源址:https://blog.openbridge.com/is-tableau-right-for-you-10-point-checklist...

1.3K7
来自专栏TEG云端专业号的专栏

黄宇:腾讯计费——亿万级大促活动自动化保障体系

腾讯计费平台是产品端到端在线交易平台,其核心是帮助用户与产品安全、便捷的完成支付和收款,在交易过程中帮助产品盈收最大化。平台承载了公司每天数亿收入大盘,为180...

1663
来自专栏Android群英传

RootTools·Neo 正式发布

1222

扫码关注云+社区