写点什么

docker 容器网络不通,看完这一篇你就懂了

发布于: 2021 年 07 月 30 日

什么是 Service Mesh

作为 Service Mesh 技术探索和实践的先行者,全球第一个真正的 Service Mesh 项目 Linkerd 负责人、Buoyant 公司创始人兼 CEO William Morgan 第一次完整地阐述了 Service Mesh。按照 William Morgan 的定义,Service Mesh 是一个致力于解决服务间通信的基础设施层,其负责在现代云原生应用的复杂服务拓扑下实现请求的可靠传递,在实践中 Service Mesh 通常实现为一组轻量级网络代理,这些代理与应用程序部署在一起,并且对应用程序透明。


从上述 Service Mesh 的定义看,基础设施层是 Service Mesh 的定位,致力于解决本书第 1 章提出的微服务基础设施标准化、配置化、服务化和产品化问题;服务间通信是 Service Mesh 技术面对的问题域,对微服务屏蔽通信的复杂度,解决微服务的通信治理问题;请求的可靠传递是 Service Mesh 的目标;轻量级网络代理是 Service Mesh 的部署方式;对应用程序透明是 Service Mesh 的亮点和特色,Service Mesh 接入对业务无侵入,可以非常方便地获取 Service Mesh 带来的便捷性,算是 Service Mesh 的一大优势。


综合来看,Service Mesh 主要解决用户如下 3 个维度的痛点需求。

完善的微服务基础设施

Service Mesh 通过将微服务通信下沉到基础设施层,屏蔽了微服务处理各种通信问题的复杂度,可以看成是微服务之间的抽象协议层,抽象层面可以看成是 TCP/IP 协议栈的一部分。对于微服务的开发者来说,比如当前使用 HTTP 或者 Thrift 进行 RPC 通信时,你不需要关注 TCP/IP 这一层的具体实现;有了 Service Mesh 之后,微服务也不再需要关注 RPC 通信(包含服务发现、负载均衡、流量调度、限流降级、监控统计等)的一切细节,真正像本地调用一样使用微服务,通信相关的一切工作直接交给 Service Mesh。


因此,对于一些需要通过微服务改造提升业务敏捷性,但没有相应技术能力的中小团队来说,可以借助 Service Mesh 提供的完善微服务基础设施,加速微服务的落地。

语言无关的通信和链路治理

功能上,Service Mesh 并没有提供任何新的特性和能力,Service Mesh 提供的所有通信和服务治理能力在 Service Mesh 之前的技术中均能找到,比如 Spring Cloud 就实现完善的微服务 RPC 通信和服务治理支持。Service Mesh 改变的是通信和服务治理能力提供的方式,通过将这些能力实现从各语言业务实现中解耦,下沉到基础设施层面,以一种更加通用和标准化的方式提供,屏蔽不同语言、不同平台的差异性,这样不仅有利于通信和服务治理能力的迭代和创新,业务使用的时候也会更加方便。


Service Mesh 避免了多语言服务治理上的重复建设,通过 Service Mesh 语言无关的通信和服务治理能力,助力多语言技术栈的效率提升。

通信和服务治理的标准化

  1. 微服务治理层面,Service Mesh 是标准化、体系化、无侵入的分布式服务治理平台。

  2. 标准化方面,Sidecar 成为所有微服务流量通信的约束标准,同时 Service Mesh 的数据平面和控制平面也通过标准协议进行交互。

  3. 体系化方面,从全局考虑,提供多维度立体的微服务可观测能力(Metric、Trace、Logging),并且提供体系化的服务治理能力,比如限流、熔断、安全、灰度等;最为重要的是,Service Mesh 通过透明无侵入的方式提供全面的服务治理能力,对微服务本身不会带来直接影响。


通过标准化,带来一致的服务治理体验,减少多业务之间由于服务治理标准不一致带来的沟通和转换成本,提升全局服务治理的效率。

Service Mesh 的基本模式

根据 Service Mesh 的发展历程和使用方式,我们可以把 Service Mesh 划分为两个模式。

Sidecar 模式

在 Service Mesh 发展早期,Service Mesh 以 Sidecar 的形态存在。Sidecar 模式下,网络代理服务在微服务旁边,为微服务提供通信和链路治理功能。因此,数据平面代理服务也经常被简称为 Sidecar。


此时,只有数据平面的网络代理服务没有控制平面,和外部基础设施服务的交互直接在网络代理服务中进行。


Sidecar 模式可以看作是第一代 Service Mesh,代表有早期的 Linkerd 和 Envoy。


第一代 Service Mesh 通过采用 Sidecar 模式,通过将通信和通信链路治理功能从微服务中剥离出来,实现了通信基础设施的下沉和服务化,这里也体现了架构解耦的思想,通过解耦减少了微服务的负担。

第二代 Service Mesh 模式

Sidecar 模式的 Service Mesh 有一个突出的问题,将通信和通信链路治理的所有功能都放到这个代理服务中,导致数据平面代理很重,并且由于承载了太多的特性和功能,使得数据平面代理的更新和修改特别频繁,频繁的更新和升级会导致代理服务出问题的概率增大,影响代理服务的稳定性。同时,Service Mesh 模式下,数据平面代理承载了微服务通信的全部流量,对稳定性要求极高,这个服务的任何故障都会对整个系统的稳定性产生很大的影响。为了解决上述频繁升级和稳定性之间的矛盾,将策略和配置决策逻辑从代理服务中脱离出来,形成了独立的控制平面,这就是第二代 Service Mesh。


第二代 Service Mesh 最重要的标志就是控制平面和数据平面分离。数据平面和控制平面并不是新的概念,路由器/交换机等数据通信产品架构上,就有运行于专门处理器上的控制平面和多个独立运行、用于路由或交换功能的数据平面。SDN(Software Defined Network,软件定义网络)将数据平面和控制平面分离,控制平面具有可编程性,使得网络更加智能、灵活和易扩展,激发了网络技术的又一次革命。


第二代 Service Mesh 借鉴了 SDN 的思路,基于控制平面和数据平面分离思想,有了完善的控制平面:①所有的代理服务都由控制平面掌控,因为控制平面可以控制整个系统,所以提供了强大的控制能力和策略能力;②将具体的控制逻辑从数据平面移除,简化了数据平面的设计,数据平面不需要和外部系统进行交互,数据平面完全聚焦在变更频率很低的流量路由和转发逻辑上,提升了数据平面的稳定性。

Service Mesh 架构

第二代 Service Mesh 的基本架构上分为数据平面和控制平面两个部分,大致如下图所示。


数据平面

数据平面负责代理微服务之间的通信,具体包含 RPC 通信、服务发现、负载均衡、降级熔断、限流容错等,数据平面可以认为是将 Spring Cloud、Dubbo 等语言相关的微服务框架中通信和服务治理能力独立出来的一个语言无关的进程,并且更注重通用性和扩展性。在 Service Mesh 中,不再将数据平面代理视为一个个孤立的组件,而是将这些代理连接在一起形成一个全局的分布式网络。

控制平面

控制平面负责对数据平面进行管理,定义服务发现、路由、流量控制、遥测统计等策略,这些策略可以是全局的,也可以通过配置某个数据平面节点单独指定。控制平面通过一定的机制将策略下发到各个数据平面节点,数据平面节点在通信时会使用这些策略。

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf 文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以关注+点赞,点击这里免费获取


程序员代码面试指南 IT 名企算法与数据结构题目最优解


这是” 本程序员面试宝典!书中对 IT 名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近 200 道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!



《TCP-IP 协议组(第 4 版)》


本书是介绍 TCP/IP 协议族的经典图书的最新版本。本书自第 1 版出版以来,就广受读者欢迎。


本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共 30 草和 7 个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即 IPv6 协议:第六部分介绍网络安全问题:第七部分给出了 7 个附录。



Java 开发手册(嵩山版)


这个不用多说了,阿里的开发手册,每次更新我都会看,这是 8 月初最新更新的**(嵩山版)**



MySQL 8 从入门到精通


本书主要内容包括 MySQL 的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP 操作 MySQL 数据库和 PDO 数据库抽象类库等。最后通过 3 个综合案例的数据库设计,进步讲述 MySQL 在实际工作中的应用。



Spring5 高级编程(第 5 版)


本书涵盖 Spring 5 的所有内容,如果想要充分利用这一领先的企业级 Java 应用程序开发框架的强大功能,本书是最全面的 Spring 参考和实用指南。


本书第 5 版涵盖核心的 Spring 及其与其他领先的 Java 技术(比如 Hibemate JPA 2.Tls、Thymeleaf 和 WebSocket)的集成。本书的重点是介绍如何使用 Java 配置类、lambda 表达式、Spring Boot 以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。



JAVA 核心知识点+1000 道 互联网 Java 工程师面试题




企业 IT 架构转型之道 阿里巴巴中台战略思想与架构实战


本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。



用户头像

还未添加个人签名 2021.07.03 加入

VX:Lzzzzzz63 领取资料

评论

发布
暂无评论
docker容器网络不通,看完这一篇你就懂了