美文网首页Java 杂谈Java架构进阶
ServiceMesh究竟解决什么问题?

ServiceMesh究竟解决什么问题?

作者: java架构进阶 | 来源:发表于2019-04-24 15:16 被阅读0次

前言

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

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

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

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

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

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

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

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

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

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

  • MQ-send-client

  • MQ-server

  • MQ-recv-client

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

例如:负载均衡

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

  • 轮询

  • 随机

  • 取模

  • 一致性哈希

RPC-client需要进行升级。

例如:数据收集

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

画外音,处理时间分为:

  • 客户端视角处理时间
  • 服务端视角处理时间
    如果要收集后者,RPC-server也要修改与上报。

又例如:服务发现

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

再例如:调用链跟踪

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

下面这些功能:

  • 负载均衡

  • 数据收集

  • 服务发现

  • 调用链跟踪

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

完美!!!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 绿色为biz

  • 蓝色为proxy

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

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

思路比结论更重要。

读者福利

感谢大家的阅读,文章的本意也是分享出来能够帮助各位程序员们,也是欢迎Java工程师朋友们加入我的粉丝群Java高级架构攻城狮:1015919075 ,点击加入群聊,群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis, Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关文章

  • ServiceMesh究竟解决什么问题?

    前言 服务网格(ServiceMesh)这两年异常之火,号称是下一代微服务架构,接下来两个月,准备系统性的写写这个...

  • 直面现实也是一种勇气

    本堂课的核心内容 1、自律究竟解决什么问题? 2、情绪问题如何解决? 3、什么才是真自由? 自律能解决什么问题? ...

  • NLTK Book

    看看自然语言处理究竟是解决什么问题的。

  • The way to freedom

    之前老师在做课程分享的时候说过:“自律是用来解决问题的”,那么究竟要解决什么问题?又要如何解决?(需要找到本质),...

  • 真自由 Day two

    自律:缩小现实和期待的偏差。 目的: 1,澄清自律究竟解决什么问题。 2,澄清真自由是什么。 3,情绪问题如何解决...

  • k8s/k3s 开启服务网格导致集群异常-解决方案:卸载ist

    误将servicemesh修改为打开,导致集群域名访问的服务出现异常。 servicemesh: enabled:...

  • 下一代的微服务架构基础是ServiceMesh?

    今年,ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh ...

  • 02、佛陀究竟帮你解决什么问题

    【内容来自得到《熊逸书院》】 佛教最根本的修行目的,梳理下来只需要记住一句话:“苦海无边,回头是岸”,这句话里包含...

  • 2021.01.11

    2021.01.11 读书四问:一 这本书究竟讲了什么?二 作者通过这本书解决了什么问题? 三 这本书说的...

  • DevOps团队绩效考核重点

    前面的文章中介绍了DevOps的概念以及其落地经验,参考如下: DevOps究竟能给企业解决什么问题[https:...

网友评论

    本文标题:ServiceMesh究竟解决什么问题?

    本文链接:https://www.haomeiwen.com/subject/iorggqtx.html