ServiceMesh究竟解决什么问题?

简介: 架构演进,永无穷尽,痛点多了,自然要分层解耦。

SM,第一篇

 

服务网格(ServiceMesh)这两年异常之火,号称是下一代微服务架构,接下来两个月,准备系统性的写写这个东西,希望能够让大家对最新的架构技术,有个初步的了解。

画外音:我的行文的风格了,“为什么”往往比“怎么样”更重要。

 

互联网公司,经常使用的是微服务分层架构

随着数据量不断增大,吞吐量不断增加,业务越来越复杂,服务的个数会越来越多,分层会越来越细,除了数据服务层,还会衍生出业务服务层前后端分离等各种层次结构。
 

不断发现主要矛盾,抽离主要矛盾,解决主要矛盾,架构自然演进了,微服务架构,潜在的主要矛盾会是什么呢?

 

引入微服务架构,一般会引入一个RPC框架,来完成整个RPC的调用过程。
image.png

如上图粉色部分所示,RPC分为:

  • RPC-client,它嵌在调用方进程里

  • RPC-server,是服务进程的基础

    不只是微服务,MQ也是类似的架构:
    image.png

    如上图粉色部分所示,MQ分为:

    • MQ-send-client

    • MQ-server

    • MQ-recv-client

     

    框架只是第一步,越来越多和RPC,和微服务相关的功能,会被加入进来。

     

    例如:负载均衡
    image.png

    如果要扩展多种负载均衡方案,例如:

    • 轮询

    • 随机

    • 取模

    • 一致性哈希

    RPC-client需要进行升级。

     

    例如:数据收集
    image.png

    如果要对RPC接口处理时间进行收集,来实施统一监控与告警,也需要对RPC-client进行升级。

    画外音,处理时间分为:

    • 客户端视角处理时间

    • 服务端视角处理时间

    如果要收集后者,RPC-server也要修改与上报。

     

    又例如:服务发现
    image.png

    服务新增一个实例,通知配置中心,配置中心通知已注册的RPC-client,将流量打到新启动的服务实例上去,迅猛完成扩容。

     

    再例如:调用链跟踪
    image.png

    如果要做全链路调用链跟踪,RPC-client和RPC-server都需要进行升级。

     

    下面这些功能:

    • 负载均衡

    • 数据收集

    • 服务发现

    • 调用链跟踪

    其实都不是业务功能,所以互联网公司一般会有一个类似于“架构部”的技术部门去研发和升级相关功能,而业务线的技术部门直接使用相关框架、工具与平台,享受各种“黑科技”带来的便利。

     

    完美!!!

     

    理想很丰满,现实却很骨感,由于:

    • RPC-client,它嵌在调用方进程里

    • RPC-server,是服务进程的基础

     

    往往会面临以下一些问题:

    • 业务技术团队,仍需要花时间去学习、使用基础框架与各类工具,而不是全心全意将精力花在业务和产品上

    • client要维护m个版本, server要维护n个版本,兼容性要测试m*n个版本

    • 如果要支持不同语言,往往要开发C-client,Python-client,go-client,Java-client多语言版本

    • 每次“黑科技”的升级,都需要推动上下游进行升级,这个周期往往是以季度、半年、又甚至更久,整体效率极低

    画外音:兄弟,贵司推广一个技术新产品,周期要多长?

     

    这些耦合,这些通用的痛点,有没有办法解决呢?

    一个思路是,将服务拆分成两个进程,解耦。
    image.png

  • 一个进程实现业务逻辑(不管是调用方,还是服务提供方),biz,即上图白色方块

  • 一个进程实现底层技术体系,proxy,即上图蓝色方块

画外音:负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现。

  • biz和proxy共同诞生,共同消亡,互为本地部署,即上图虚线方框

  • biz和proxy之间,为本地通讯,即上图黑色箭头

  • 所有biz之间的通讯,都通过proxy之间完成,proxy之间才存在远端连接,即上图红色箭头

 

这样就实现了“业务的归业务,技术的归技术”,实现了充分解耦,如果所有节点都实现了解耦,整个架构会演变为:
image.png

绿色为biz

蓝色为proxy

整个服务集群变成了网格状,这就是Service Mesh服务网格的由来。

 

架构演进,永无穷尽,痛点多了,自然要分层解耦。希望大家有收获,后续再细聊SM的设计与架构细节。

 

思路比结论更重要。

本文转自“架构师之路”公众号,58沈剑提供。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
资源调度 5G 定位技术
关键技术 三:LTE-A 协作多点传输 | 带你读《5G UDN(超密集网络)技术详解》之十二
本章节进一步详细解释 LTE 小小区相关的关键技术之三:LTE-A 协作多点传输,并且关联着说明它们对后续 5G NR 小小区的基线性影响和适用情况。
关键技术 三:LTE-A 协作多点传输 | 带你读《5G UDN(超密集网络)技术详解》之十二
|
Linux
Linux环境下安装和配置OpenOffice及常见问题解决
本文主要讲解在Linux环境下,如何安装OpenOfice环境,及配置开机自启动
7168 0
Linux环境下安装和配置OpenOffice及常见问题解决
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
Java Maven Android开发
《Cloud Toolkit User Guide》
Alibaba Cloud Toolkit,面向 IDE(如 Eclipse 或 IntelliJ IDEA )的插件,帮助开发者更高效的开发、测试、诊断并部署适合云端运行的应用
39719 1
|
机器学习/深度学习 算法 数据挖掘
浅谈关于特征选择算法与Relief的实现
一、 背景 1) 问题 在机器学习的实际应用中,特征数量可能较多,其中可能存在不相关的特征,特征之间也可能存在相关性,容易导致如下的后果: 1.     特征个数越多,分析特征、训练模型所需的时间就越长,模型也会越复杂。
5228 0
|
Linux
通过yum下载rpm包及其依赖包
yum是基于Red Hat系Linux系统(如CentOS、Fedora、RHEl等)上的默认包管理器,使用很方便。
2161 0
|
前端开发 JavaScript 索引
从零开始学_JavaScript_系列(12)——jquery<2>(高度自适应,哈希地址及检测,单页面技术)
前注:我在练习的时候,函数命名比较随意,以修改起来简单的简短无意义函数名为主,实际使用时,请使用更易阅读、规范的命名方式 (ps:这篇算是上周的) (26)让某块随着浏览器的高度变化而自动变化 假设该块的标签名为section 于是: function ge() { var m =document.documentElement.client
1357 0
|
10天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
10天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
17天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)

热门文章

最新文章