Dubbo Mesh | 阿里巴巴中间件团队在 Service Mesh 的实践和探索(附PPT)

精彩观点导读:
» 我们去探索一项技术,并不会仅仅因为其先进性,而是因为我们目前遇到了一些无法解决的问题,而这项技术正好能解决这个问题。

» 所有软件最重要的使命不是满足功能要求,而是演进,从而持续成长。

» 微服务本质是对服务的拆分,微服务架构符合工程领域常用的“分而治之”范式。

 

_2018_08_30_6_13_18

近日,在Aliware Open Source•成都站-Apache Dubbo 开发者沙龙上,阿里巴巴中间件高级技术专家李云(至简)向开发者们分享了阿里巴巴中间件团队在Service Mmesh领域的探索和最新实践。本文是根据至简的现场分享所整理,为大家回顾分享中的精彩内容。

嘉宾介绍:李云(至简),阿里巴巴中间件高级技术专家,是阿里巴巴集团Service Mesh方向的重要参与者和推动者。

“阿里巴巴中间件”公众号后台发送“成都沙龙PPT”,下载全场PPT。

“阿里巴巴中间件”公众号后台发送“成都沙龙视频”,进行回看。

我们去探索一项技术,并不会仅仅因为其先进性,而是因为我们目前遇到了一些无法解决的问题,而这项技术正好能解决这个问题。现在,阿里巴巴整个集团业务的体量很大,在技术上会遇到很多的挑战。而正是因为这些挑战,让我们思考通过哪些新技术可以去解决这些痛点,这也是我们在Service Mesh领域进行探索和实践的出发点。首先,我们先来看看自己遇到了哪些挑战。

一、微服务的5大挑战

第一个挑战是微服务框架自身演进困难。

任何软件都会有他的生命进化曲线,从最初的萌芽,进入形成期,往上发展,再进入平台期,最后进入衰亡期。当然我们希望我们的软件可以在进入平台期后,能借助某次演进进入新的发展期。从这个维度看,所有软件最重要的使命不是满足功能要求,而是演进,从而持续成长。相反,当某个软件无法演进的时候,就会意味着死亡。但软件的演进并不是一个简单的事情,以微服务框架为例,为了进一步提升双11期间整个中间件平台的稳定性,我们会修改若干个功能,并以SDK的方式去提供给业务方,但业务代码和微服务框架SDK是强耦合的,这时候需要我们推动各个业务方和我们一同去做升级。虽然我们的初衷是实现平台稳定性的提升,帮助业务更好的发展,但这时由于大家的出发点和诉求有所不同,业务方和我们一起去做升级是比较困难的。所以要发展微服务框架,首先遇到的挑战就是演进困难。

_2018_08_29_10_56_19

第二个挑战是微服务框架SDK多语言并行开发与维护成本高。

以前我们都是通过对技术栈的统一来提升成本优势和团队效率,大家可以用一种语言去开发和维护,避免多语言时团队的不聚焦。但在软件和开源生态演进的过程中,多语言已经成为一种流行,因为不同语言都有其自身的优势,今天大家能看到的一个现象是云原生的生态中有多种开发语言,使用频率最高的语言已经不是Java了,而是Go,是因为Go的footprint很小。再以 Dubbo为例,除了Java,我们还提供C++,Node.js的SDK,以便让更多的开发者可以加入Dubbo生态,但所有的这些,如果没有社区力量的参与,是很难维持的。

_2018_08_29_3_47_08

第三个挑战是异构服务框架难以共存完成渐进式演进。

我们结合场景来看看这个挑战。阿里巴巴收购了一些企业,被收购企业的技术栈可能和阿里巴巴不同,比如有些用的是Go语言,有些用的是PHP,这时候为了统一技术栈,我们需要对这类技术平台推倒重来,但这个过程中,我们会面临一系列问题,首当其冲的就是推倒重来会带来巨大的技术风险,其次是可能会面临技术人员大批量流失的风险,这在社会责任的层面也是很难接受。所以我们在寻求一种可能的方案,去解决这类问题。

第四个挑战是单一的语言限制了人才的多样性。

这里,我们不去争论某个编程语言的好与坏,每个语言都有其适用场景,你不能说我手里有个榔头,你面对的都是钉子。以前我们觉得统一技术栈可以集中开发力量,并且带来较高的运维便利性。但伴随着互联网带来的快节奏,以往的团队能力设置已经很难满足这类变化,对工程师个体提出了更高的要求,我们不仅仅需要是某一方面的专家,而且还需要具备多域的工作技能,DevOps和全栈工程师就是这类快节奏变化下最好的注脚。

_2018_08_29_10_56_31

第五个挑战是点状的服务治理难以做到及时、有效和经济。

微服务和架构的核心是拆分,通过拆分,让每个模块可以独立运行,跟上业务的发展速度,持续推动业务的创新。但拆完后新的问题出来了,缺少横向的内容拉通所有独立的烟囱,从而在服务治理上带来极大的挑战。

二、分布式应用的4大发展趋势

1. 微服务会成为大规模分布式应用的主流架构。

任何复杂的工程问题都会归结为devide and conquer(分而治之),意思就是就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。微服务本质是对服务的拆分,与工程领域惯用的“分而治之”的思路是一致的。

2. 微服务架构下应用的开发是多语言的。

没有一个语言是一家独大的,每种语言在特定场景下都有其自身的优势,我们希望这种优势能够将技术到产品的周期(time to market)缩短。技术的核心在于创造价值,无论是交付给客户,还是服务于整个社会。因此,微服务是需要不同语言的开发者发挥自身的优势,去进一步完善我们的微服务架构,释放技术价值。

_2018_08_30_11_39_55

3. 数据安全将成为公有云分布式应用的生命线。

云原生时代,业务即便没上云,企业对自身数据的安全都是有诉求的,尤其是在金融行业,如果通过抓包就能获取一些敏感信息,这将会给企业带来巨大的风险。

4. Cloud native成为distributionless(无分布式)的主要探索路径。

分布式发展的终极形式是无分布式,在未来我们做开发,所有的代码在web上写好后,通过点击一个按钮,所有部署都会自动实现,所有的code review的工作可以在一个统一的工作台上全部实现。

IMG_20180826_140802__B_c047c85
▵成都站开发者沙龙现场

5. 以更快的速度,通过构建软件去探索新业务。

工程师服务的是客户,通过技术输出来实现技术价值,以互联网的架构帮助赋能传统企业,帮助企业获得差异化竞争力。

三、什么是 Service Mesh

Service Mesh是层次化、规范化、体系化、无侵入的分布式服务治理技术平台。

层次化

分为数据面和控制面两个概念,数据面是指所有数据流动的那个层面,控制面是用来控制这个数据面的,对服务去做处理。对数据面和控制面进行分层,带来的好处是,针对一个复杂的系统进行切分,可以获得更清晰的认识,这和devide and conque是同一个理念。

规范化

是指通过标准协议完成数据平面和控制平面的连接,同时,sidecar成为所有traffic互联、互通的约束标准。

_2018_08_29_11_49_59

体系化

包含两个维度,一是指observability全局考虑。目前在整个分布式治理过程中的最大挑战是:logging、metrics、tracing这三个observability领域的核心内容缺少体系性的关注。另一个是集中管理的维度,包括服务管理、限流、熔断、安全、灰度在内的服务模块都可以在获得体系化的呈现,每个服务都可以被看到,而非团队a只看限流,团队b只看logging,需要一种技术能力拉通所有的服务模块,这个体系化这个角度看,Service Mesh是一个理想的技术方案。

无侵入

是指我们希望通过无侵入,当新增一个业务的时候,不需要考虑一个SDK去初始化,而是可以通过sidecar的进程方式来解耦。

四、Service Mesh 的形态

我们从三个维度对比的来看 ServiceMesh 的形态。

图中左边是传统的微服务形态,调用者和被调用者是通过一个SDK的方式来实现共享服务的,以Dubbo为例,我们会在SDK里提供服务路由、服务发现等功能,虽然我们的开发者在做应用开发的时候并不会太关注SDK的构成,但这些功能是面临不断被变更的可能,有着比较重的逻辑。在右边Service Mesh的形态中,我们首先会对厚重的SDK进行分解,将复杂的逻辑下沉到sidecar,借助sidecar来实现服务的调用。

_2018_08_29_11_51_34

虽然在Service Mesh的形态,调用路径要长于传统的形态,路径越长消耗越大,对性能影响越大。但在当前的分布式应用的治理过程中,易用性已经成为一个比性能更重要的话题。当我们给客户部署一套微服务,即便性能很强,但没有处理好易用性问题的话,这将会给技术的推广带来巨大的阻碍,不仅是会影响外部的客户,也会影响内部的用户,如何实现喝着咖啡从容应对双11,必须先解决易用性的问题。在解决易用性问题后,沿着技术的发展路径再去解决性能问题。

Service Mesh的形态中的control plan不会导致重复建设,但在shared service是有可能存在重复建设的。

五、Service Mesh 下的应用架构

无论是单体应用,还是分布式应用,都可以建立在Service Mesh上,mesh上的sidecar支撑了所有的上层应用,业务开发者无须关心底层构成,可以用Java,也可以用Go等语言完成自己的业务开发。

六、Service Mesh 的价值

  • 为单体应用向微服务架构演进提供了渐进的途径
  • 为异构(微)服务框架/平台提供了融合发展的可能

Ø 被收购子公司与母公司的业务可以融合发展

  • 加速(微)服务框架/平台自身的演进
  • 让业务开发同学聚焦于业务逻辑本身
  • 业务开发时无需关心安全、灰度、限流、熔断等通用的技术内容
  • 培育了多语言业务开发的土壤

Ø 助力人才发展中编程语言的多样性

  • 对(异构)微服务架构应用实现更为有效的全局一体化监管控

七、Dubbo Mesh 的发展思路

  • 迎合Kubernetes已成orchestrator王者的大势
  • 开源版本与阿里巴巴集团内版本统一
  • 与领域主流开源项目形成合力发展,源于开源、反哺开源

八、Dubbo Mesh 的进展

Dubbo Proxy

  • Envoy支持Dubbo协议,分两个迭代完成

迭代一:实现对Dubbo协议的解析和统计信息收集(代码已提交给社区review)
迭代二:支持服务路由(规划中)

Dubbo Control

  • 丰富Istio/Pilot-discovery

已完成与VIPServer、Diamond的对接

正规划与ZooKeeper、Nacos的对接

  • 仍在规划Istio/Mixer部分

九、成都沙龙 Q&A

Q1: 阿里巴巴是怎么从微服务过渡到sidecar模式,再过渡到Service Mesh?

整个过渡是渐进式的,我们会将控制平面的一些组件先下沉到与sidecar部署在一起,这一下沉能很好复用开源软件已有的能力而减少开发工作量。当这一步骤完成后,被下沉的控制面组件会重新拉回到上面的控制面,那时就会面临一定的服务端改造,一旦改造完成就有了一个全新、完整的Service Mesh。

Q2: Service Mesh中的服务注册发现,负载均衡,网关,熔断降级,超时,限流,消息总线,分布式配置,这些都是怎么实现的?

Dubbo Mesh在控制面会基于Istio去做,而Istio已经具备了Kubernetes下的服务注册与发现能力,我们要做的是扩充Istio的能力,让服务注册与发现能与ZooKeeper、Nacos进行对接去完成。基于开源的Envoy所实现的sidecar已实现了超时处理的功能,相应的内容可以读代码去了解。其他内容我们仍在规划中。

Q3: Dubbo Mesh目前性能怎么样? 增加一层sidecar导致Dubbo的RT有多少?

在使用iptables的情形下,一跳增加1.5毫秒,如果不采用iptables直接proxy方式的情形下应当性能更好(这一点与Lyft也邮件确认过了),我们接下来会做更多的性能测试,目前的焦点更多在于功能层面。

Q4: Dubbo Mesh是把双刃剑,经过的链路更复杂,运维和开发者问题排查有没有更有效的工具?
**
理论上,增加一跳并没有改变服务调用的拓扑结构,但确实会增加复杂度,这个应当通过设计实现去解决。好在因为是一体化的方案,所以解决这类问题时需要更具全局视野。**

_2018_08_29_12_33_00

▵成都站开发者提问

Q5: Service Mesh中控制面板也用C++吗?我看主流很多实现都是Go, 我相信大佬做过技术调研,有哪些优势?

控制面是复用Istio的,是Go语言的。我们力争不重复造轮子,而是以开放的心态去共建。

Q6: Client做解码和反序列化是吧,有计划支持HTTP2协议吗?

Envoy默认就支持了,不需我们开发。这也是借力开源的收益。

Q7: Dubbo Mesh已经支持domain socket了吗?

目前不支持,这个还处于意向阶段。

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter 自定义键盘_掘金 AMA:听闲鱼客户端架构师邬吉风聊 Flutter 和移动端开发那些事...

第二十一期 AMA 掘金团队请来了闲鱼客户端架构师,《Fish-Redux》作者-- 邬吉风做了为期三天的 Ask Me Anything (AMA) 活动(活动已结束)。我们在此精选了一些来自用户的提问及邬吉风的回答。关于 邬吉风阿里花名吉丰, 《Fish-Redux》作者。现任闲鱼客户端…

网站常见问题1分钟定位(三)| 如何使用阿里云ARMS轻松重现用户浏览器问题

这是阿里中间件 ARMS 团队推出的 “网站常见问题1分钟定位”系列文章的第三篇,作者慕扉。 第一篇传送门 第二篇传送门 一、客户投诉不断,本地却无法重现? 页面加载较慢是用户经常会反馈的问题,也是前端非常关注的问题之一。…

国内首家!平头哥宣布开源RISC-V内核MCU芯片设计平台;IBM驳斥谷歌量子霸权主张;Facebook将赔偿350亿美元……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周两次,打卡即read更快、更全了解泛云圈精彩newsgo go go 小米 MIX4 概念图&#xff0…

把百度网站设为首页_大仙SEO:如何解决网站首页百度收录后被删除?【SEO案例】...

前天(5/20)看数据的时候,发现5118数据直线下降,跌的有些厉害,猜测网站应该出问题了。这个时候不要慌(内心实则慌的一批),在等等看,会不会是百度自身的一些调整。算了分析分析网站吧!site看网站数据&#xf…

技术选型:Sentinel vs Hystrix

这是围绕 Sentinel 的使用场景、技术对比和实现、开发者实践等维度推出的系列文章的第三篇。 第一篇回顾: Dubbo 的流量防卫兵 | Sentinel如何通过限流实现服务的高可用性 - 传送门 第二篇回顾: RocketMQ 的保险丝| Sentinel 如何通过匀速请求和冷…

“熬夜导致秃头”,因果关系推断说这话有问题!

扫码了解2019中国大数据技术大会(https://t.csdnimg.cn/7yMh )更多详情。“因果”,顾名思义,即“原因与结果”。“推理”则指“根据某个事件推导其他事件,即经过推测和推断得出结论的过程”。换句话说,就是…

大数据可视化html模板开源_8个可靠好用的开源数据可视化工具推荐

数据可视化在数据科学领域中发挥着重要的作用。在不清楚数据的情况下,要监视和调整数据以使其按照应有的方式执行并不容易。这就是数据可视化发挥作用的地方,它把收集到的数据放到一个可视的上下文中,使数据更容易找出模式、跟踪趋势等。但是…

MaxCompute - ODPS重装上阵 第五弹 - SELECT TRANSFORM

MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高…

RabbitMQ 最新版本 下载、部署 _rpm版本(CentOS7环境)

文章目录1. 安装rabbitmq前要准备的基础环境2. wget 远程下载安装包2. rpm安装软件3. 编辑配置文件修改密码4. 启动RabbitMQ5. 查看RabbitMQ是否启动6. 安装RabbitMQ 管控台7. 浏览器访问:8. 登录1. 安装rabbitmq前要准备的基础环境 yum install build-essential o…

MaxCompute存储力持续升级,每年节省不止一个亿

数据是开启全新洞察和机器智能创新的基础,拥有高性能、稳定、可扩展性强的存储能力和充沛的计算力,才能全面释放数据价值。 阿里巴巴大数据计算平台MaxCompute,作为阿里巴巴统一的计算平台,支持了整个阿里巴巴集团内部几乎99%的数…

【10.23头条】阿里云存储负责人吴结生:安全可靠是云存储立身之本, 智能技术将激活存储技术新变革...

戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹责编 | 阿秃人类以日新月异的速度刷新着科技的成果,其中存储的发展历史尤其悠久,堪称万年进化史。自文明诞生以来,我们就一直在寻求能够更有效存储信息的方式,从4万年前的…

专访20年技术老兵云郎:16年峰回路,每一步都是更好的沉淀

从技术研发到产品经理 3次峰回路转 这条路,他走了16年 一个懂技术的产品 更有底气和研发“叫板” 一个具备产品思维的技术 更明白未来的方向 张良模,花名云郎。1997年入行做通信软件研发;8年后转型IT行业,曾任Oracle(甲…

子网规划与组网实验_【干货】从0到1,“大型WLAN组网”基础知识分享~

点击蓝字 关注我们 目前,大多数企业办公环境同时使用有线和无线网络来支撑业务。办公区在提供有线网口的同时,也采用全Wi-Fi覆盖,办公环境更为开放和智能。未来,企业云桌面办公、智真会议、4K视频等大带宽业务将从有线网络迁移至无…

搭建集群 RabbitMQ SHELL脚本实战_03

接上一篇: (企业级) 搭建集群RabbitMQ 快速下载、安装、配置、部署_02 文章目录一、shell脚本说明1. 选择脚本的原因2. 脚本总览二、脚本实战2.1. 工具依赖包2.2. wget 远程下载安装包2.3. rpm安装软件2.4. 编辑配置文件修改密码2.5. 启动RabbitMQ2.6. 查看RabbitMQ…

欧洲为何没有牛逼的互联网公司

戳蓝字“CSDN云计算”关注我们哦!作者 | 挖数责编 | 阿秃截至2018年底,全球市值最大的21家互联网科技公司里边,美国有12家,中国有9家,没有一家欧洲公司。在国内BAT搅动风云,美国亚马逊的贝索斯坐上全球首富…

混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布

当前,数据已经成为了企业的核心资产。而如果数据中心发生故障不仅会给企业带来巨大损失,甚至会直接迫使企业走向倒闭。对于企业而言,每一字节业务数据的丢失都是一场重大的灾难!那么,如何保证企业的核心数据资产不丢失…

java导出pdf_一张PDF了解JDK11 GC调优秘籍-附PDF下载

简介JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。当然上面的都不是重点,重点的是JDK11是一个LTS版本&#…

RabbitMQ 普通集群配置_04

接上一篇:(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03 文章目录RabbiMQ简介RabbiMQ模式RabbiMQ特点环境部署总览一、基础配置及RabbitMQ 安装1. 配置hosts文件2. 安装配置RabbitMQ3. 思路分析二、RabiitMQ 集群配置同步2.1. 拷贝erlang.cookie2.2. 同步.erlang.co…

java 百度api接口开发_百度熊掌号使用Java工具类对接API推送接口进行文章推送实例详解...

对于java程序员来说,自己运维的百度熊掌号当然得使用java的方式去每天推送文章了。目前,百度推出了百度熊掌号服务。旨在更好的为站长服务。那么百度熊掌号如何通过推送API接口实现自动文章推送呢?第一步:注册注册百度熊掌号&…

RabbitMQ 集群搭建_02_rpm版本(linux环境)

接上一篇:(企业级) CentOS7 安装 RabbitMQ最新版本 下载、安装、配置、运行、部署_01 文章目录一、SHELL脚本说明1. 选择脚本的原因2. 脚本总览二、脚本实战2.1. 安装rabbitmq前要准备的基础环境2.2. wget 远程下载安装包2.3. rpm安装软件2.4. 编辑配置文件修改密码…