要想业务中台建得快,最好用Service Mesh来带
中国企业数字化转型进入深水区,业务中台及下一代微服务Service Mesh(服务网格)被越来越多的人关注,本文结合网易轻舟微服务Service Mesh实践,解析业务中台为什么需要Service Mesh,以及实施Service Mesh的技术方案。
业务中台呼唤Service Mesh
当业务系统研发团队至少大几十人(含外包的),需求多变化快,系统又涉及多个领域(比如做ERP、电商的),业务逻辑比较复杂。这时业务中台可以把系统和业务领域划分清楚,提升软件复用能力,加快需求响应速度。
中台是一个独立的组织负责并为多个前台业务服务,因此需要一个标准的服务接口、成熟的服务治理能力和高效的敏捷研发技术,相对于传统的基于ESB(企业服务总线)的面向服务架构(SOA)技术,微服务架构成为业界的共同选择。微服务提供快速迭代、灰度发布、持续交付及声明式运维的特点,与业务中台的追求天然契合。
微服务化也是互联网软件产品发展的必然结果,以网易微服务演进的历程为例,最初的单体应用在业务规模、并发访问量不断增长时,都会被拆分成一些微服务,由不同的小团队维护,以获得研发、部署和运维上的便捷性。
在微服务演进的过程中,不少的企业已经引入Dubbo、Spring Cloud等传统的微服务框架,来解决服务通信的效率,以及服务治理相关的问题。然而,这种传统的微服务框架并不足以应对建设企业业务中台的挑战。作为前台共性业务能力,中台天然需要一个统一的技术栈,实现异构系统整合,以及微服务设施下沉,而这些,是Dubbo或者Spring Cloud力有未逮的。
首先,大型企业或多或少都有统一技术栈的需求,即便都是Java业务,所采用的技术栈也有Dubbo、Spring Cloud以及自研RPC框架之分。其次,有的老的业务采用.Net、C++或者其他语言,需要和新的Java业务整合,难度很大。另外,从架构上看,中台是一种基础设施的下沉,微服务框架则是一种不彻底的下沉,因为它还是在业务开发代码里面的。而这种对业务的侵入性,也造成了服务框架升级的困难。
微服务圈的新贵Service Mesh就是应对上述挑战的曙光。Service Mesh是用以处理服务与服务之间的通信的专用基础设施层,也就是说这种下沉使得服务治理不再和业务代码融合在一起,而是作为一层专用的微服务设施。
Service Mesh具有三个明显的优势:第一它是一个独立的进程,和业务是解耦的,对业务代码无侵入;第二,是具备跨语言特性,上文说的Dubbo和Spring Cloud其实都是Java技术栈,而Service Mesh具备整合一些C++、Golang之类的异构语言应用的能力,因为它没有进入到进程内;第三是它提供了熔断、限流等丰富的微服务服务治理功能。
这些优势,使得Service Mesh可以比较容易地解决中台架构下微服务化存在的问题。对于使用采购或外包模式的传统企业尤其如此。传统企业往往需要将后台的应用进行封装或者重构为中台,来支撑前台灵活的业务变化,自研系统还可以采用Spring Cloud来重构,但采购的系统只能使用封装的模式,而采购的不同系统一般采用.Net、Spring MVC、PHP、Python等不同的技术栈,如果没有Service Mesh,接入微服务体系就会是一场噩梦。
实施Service Mesh的技术方案
Service Mesh先进的理念,是否已经有相应的技术方案?
答案是肯定的。主流云原生Service Mesh框架是Istio,它是谷歌、IBM、Lyft联合开发的。Istio采用Go语言写的,与容器编排系统Kubernetes一脉相承,承载了服务治理方面的期待。因为Kubernetes在容器圈是无可争议的王者,大家比较看好Istio。
Istio提供了完整的Service Mesh的解决方案,数据面是一个叫Envoy的组件,控制面的组件包括Pilot、Mixer、Citadel和Galley等。在下图服务A调用服务B的流程中,支持这种调用的Sidecar就是用Envoy组件来实现的,下半部分是控制面的组件,最主要的是Pilot,其他是配合功能完整性的一些组件。

先看数据面核心组件Envoy。数据面跟微服务本身相关性非常大的,因为所有的流量以及大部分治理都需要经过它。
目前网易和业界不少探索Service Mesh的公司都采用Envoy作为数据面的标准组件,这源于它的七大优势。第一,它是基于现代C++开发的网络L4/L7的代理,这意味着它能够提供很高的性能。根据网易轻舟微服务团队的实测,使用经典的HTTP网络协议,Envoy的性能确实是比较强的。第二是流量管理,Envoy可以对服务流量做路由、分流等动态的管理。第三是服务治理方面的特性,包括熔断、限流,以及在里面注入一些故障。第四是多协议支持,Envoy除了支持比较经典的HTTP 1.x版本,还支持2.x版本,也支持gRPC、TCP、Web Socket等。它不仅可以对服务之间调用的流量进行管理,一些DB、缓存其实也可以做到,因为它是网络4-7层的。第五是负载均衡,Envoy支持的算法非常多。第六是动态配置API,作为一个数据面应该有接口可以动态去控制,让控制面来调用配置。第七是可观察性设计,作为一个数据面应该把经过它的流量和数据上报,让后端更庞大的监控系统看到整个微服务体系到底是一个怎样的状态。最后是支持自定义插件扩展能力的,企业对Envoy本身的功能如果不满足,还可以通过插件进行扩展。
Istio的控制面核心组件是Pilot,它最主要的功能是和Sidecar建立双向的gRPC连接,可以通过控制面实时下发配置或是服务发现的信息,包括服务发现和抽象,以及配置的转化和分发。
另外三个组件,Mixer主要是做策略检查跟遥测,包括检查一些权限,或者通过它上报监控数据。Citadel负责安全性方面,可以做证书与秘钥管理相关的分发。Galley是1.1版本正式引入的,主要做配置校验。这些组件中,业界诟病最多的是Mixer做策略检查操作的时候会有性能问题。
要想业务中台建得快,最好用Service Mesh来带的更多相关文章
- 不想业务被中断?快来解锁华为云RDS for MySQL新特性
摘要:新特性上线!华为云RDS for MySQL又添新技能,实力保障业务连续性. 本文分享自华为云社区<不想业务被中断?快来解锁华为云RDS for MySQL新特性>,作者:Gauss ...
- 微服务应用新趋势:Service Mesh、AIOps和中台化
微服务技术由于天生支持快速迭代.弹性扩展的特点,使企业能够在不确定性下提升发展速度及抗风险能力,受到了越来越多的关注.当前,云服务商纷纷试水微服务产品,最为典型的,当属推出轻舟微服务平台.剑指整个微服 ...
- python 想搞加密算法吗?快戳这里
加密算法介绍 一,HASH Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换 ...
- 002-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-第二章 构建业务中台的基础-共享服务体系简介
2.1.回归SOA的本质-服务重用 SOA理念的核心价值:松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新. 现有模式多是烟囱式结合 ESB 企业总线打通不同系统间的交互. 2.2. ...
- 想减少代码量,快设置一个有感知的 Aware Spring Bean
摘要:正常情况下,Spring 中的 Bean 对 Spring 是无感知的,Spring 框架提供了这种扩展能力,能让一个 bean 成为有感知的. 本文分享自华为云社区<有感知的 Aware ...
- 高考结束了,在门头沟有没有想学php建站的。
教你简单的html 教你文章后台管理 数据库管理及备份 编程工具的使用 如何找到你要学习的内容
- 想要看懂鸿蒙OS源码?朱老师带你从框架分析开始
HarmonyOS V2.0是面向轻量级设备的鸿蒙L0/L1级设备端操作系统,于2020.9开源至今已有2个多月,但是很多同学在学习鸿蒙源码时仍然感觉难以下手,找不到突破口. 2020.11.25(本 ...
- 转载:Service Mesh:重塑微服务市场--敖小剑
转载地址:https://skyao.io/talk/201805-service-mesh-rebuild-microservice-market/ 重点: 不要太过关注 Service Mesh ...
- Service Mesh简介
1.1 Service Mesh 1.1.1 什么是Service Mesh Service Mesh是最近才兴起的一个名词,最早在2016年9月29日由开发Linkerd的Buoyant公司首次 ...
- 解开Service Mesh的神秘面纱
一.什么是Service Mesh? 下面是 Willian Morgan 对 Service Mesh 的解释: A Service Mesh is a dedicated infrastructu ...
随机推荐
- apisix~authz-keycloak插件介绍
参考:https://apisix.apache.org/docs/apisix/plugins/authz-keycloak/ kc插件源码梳理及原理说明 如果只是进行keycloak颁发的toke ...
- MYSQL造数据占用临时表空间
在MySQL中,临时表空间通常用于存储如ORDER BY.GROUP BY.DISTINCT.UNION.JOIN等操作中产生的临时数据.当这些操作的数据集太大而无法在内存中完成时,MySQL会使用磁 ...
- 【超强SQL】WordPress批量修改指定分类下所有文章状态
前阵子主题君的某一个手游下载站的某一个分类,被百度K了,导致整个分类的文章收录都没了,这时候如果想要回复权重,就需要把这个分类的文章都删除了. 下面主题君给大家分享一段巨牛逼的SQL, WordPre ...
- c++ RTTI Runtime Type Identification 运行阶段类型识别
NoVirtualBase* NvirBase = new NovirtualDerivd(); NvirBase->print(); // auto nd1 = dynamic_cast< ...
- C# 借助NPOI 完成 xls 转换为xlsx
背景:MinExcel开源类库,导数据的库,占用内存很低,通过io,不通过内存保存,不支持 xls格式的文件,支持csv和xlsx,所以要想使用这个库,就得把xls格式转换为xlsx.只复制了数据 合 ...
- WPF:DataGrid可过滤、多语言
目录 介绍 背景 怎么运作 自定义控件 如何使用 基准 下载演示项目 - 133.8 KB GitHub 存储库 NuGet 包
- .net core 转 excel datatable list<t> 互转 xlsx
using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...
- fabric compose文件解读(Orderer篇)
orderer在fabric中的作用是排序,另外orderer有点像是管理节点一样,通道之类的都是在orderer的基础之上建立的,有点像比特币,以太坊上面的全节点一样,不过责任比全节点少很多,甚至都 ...
- itest(爱测试)开源接口测试&敏捷测试&极简项目管理 6.6.6 发布,新增接口mock
(一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...
- Vue学习:14.工程化开发&脚手架
0基础如何进入IT行业? 简介:对于没有任何相关背景知识的人来说,如何才能成功进入IT行业?是否有一些特定的方法或技巧可以帮助他们实现这一目标? 方向一:学习路径 1.明确兴趣和目标:首先确定你对IT ...