什么是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中,不再将数据平面代理视为一个个孤立的组件,而是将这些代理连接在一起形成一个全局的分布式网络。

控制平面

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

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友,点击这里即可免费获取

…(img-3kb5zZXL-1627371283381)]

[外链图片转存中…(img-TSESW5l1-1627371283383)]

Java工程师简历范文大学生,最全Java知识总结相关推荐

  1. 资深java工程师简历

    资深 Java 工程师简历应该包含以下内容: 个人信息:包括姓名.电话.电子邮件.地址等. 教育经历:包括学校名称.专业.学位.毕业时间等. 工作经历:包括公司名称.职位.工作时间.工作职责.项目经验 ...

  2. web项目怎么打包上线_高级前端web工程师简历范文,【工作经历+项目经验+自我评价】怎么写...

    高级前端web工程师简历范文,工作经历+项目经验+自我评价怎么写 [网盘下载]100+清新大气简历模板下载: https://zhuanlan.zhihu.com/p/115911695 https: ...

  3. java软件工程师工作业绩_嵌入式软件工程师-简历范文,【工作经历+项目经验+自我评价】怎么写...

    嵌入式软件工程师-简历模板下载 [网盘下载]100+清新大气简历模板: https://zhuanlan.zhihu.com/p/115911695 https://zhuanlan.zhihu.co ...

  4. 月薪2万的Java工程师简历是这样的

    小编之前采访过一个大佬, 写过一篇软件工程师简历应该注意些什么, 反响不错, 今天有幸采访了一些Java圈子里的行家, 来讨论下Java工程师的简历应该怎么写. 现在简历大多数是网站式录入,比如你在智 ...

  5. 【java面试】6万字最全Java知识体系梳理,还在找面试题?看这篇就够啦

    文章目录 一.基础 1.1JVM 1.JVM五大内存区域 2.新生代和老年代 3.加载类的过程 4.OOM 5.JVM调优 1.2 GC 1.可达性分析 2.java中的引用 3.GC回收算法 4.G ...

  6. Java笔记-Java日常笔记-Java核心语言-史上最全Java笔记-Java烂笔头-实时更新(~v~)

    阿一的日常Java笔记,实时更新,有什么问题可以留言交流一下,大家一起共同进步!!! 1.Java基础 1.1.基本语法 1.1.1.关键字 ​ 定义:被java赋予特殊含义的字符串(单词): ​ 关 ...

  7. Java基础-->一篇讲全Java常用类(详细易懂,建议收藏)

    Java基础–>一篇讲全Java常用类(详细易懂,建议收藏) 文章目录 Java基础-->一篇讲全Java常用类(详细易懂,建议收藏) 1.字符串相关的类 String类 概述 创建Str ...

  8. 开发工程师的自我评价_给排水工程师-简历范文,【工作经历+项目经验+自我评价】怎么写...

    给排水工程师-简历模板,工作经历+项目经验+自我评价怎么写 [网盘下载]100+清新大气简历模板: https://zhuanlan.zhihu.com/p/115911695 https://zhu ...

  9. gitee项目能用SVN拉取吗_安卓开发工程师-简历范文,【工作经历+项目经验+自我评价】怎么写...

    安卓开发工程师-简历模板,项目经验+自我评价怎么写 [网盘下载]100+清新大气简历模板: https://zhuanlan.zhihu.com/p/115911695 https://zhuanla ...

最新文章

  1. 1084 Broken Keyboard
  2. Android Studio之导入安卓项目gradle编译出现问题分析日志思路
  3. html、css、js实现简易计算器
  4. 学习记录012-NFS
  5. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_9_字节输入流读取字节数据...
  6. 软件工程 毕业设计题目汇总
  7. mysql 复制 数据 表结构_MySQL复制表结构和表数据
  8. 苹果系统无法更新无法连接网络连接服务器,iTunes无法联系iphone软件更新服务器 不可连接解决方法...
  9. 9款好用的SSH客户端软件推荐
  10. Weakly-Supervised Salient Object Detection via Scribble Annotations
  11. netbackup如何手动获取主机ID证书。
  12. 【5G核心网】free5GC UPF源码分析
  13. Android6.0以下系统判断相机权限
  14. 计算机接口IDE接什么,IDE接口硬盘数据线_IT /计算机_数据的正确连接方法
  15. 极客战记[森林]CHALLENGE:MAGIC EXAM
  16. java虚拟机32位_jre1.6java虚拟机运行环境下载|jre1.6官方版32位/64位下载_v1.6.0_9号软件下载...
  17. 多场景下的固定资产全生命周期管理解决方案来了
  18. oracle 自增id,oracle实现自增id
  19. USAT(USIM Application Toolkit)技术与BIP协议
  20. 『滴滴出行』产品分析(PPT)

热门文章

  1. java解压出来损坏_在Java中解压缩错误
  2. 关于LeakCanary检测华为手机内存泄漏问题
  3. win10 android软件下载,windows10模拟器安卓版
  4. 杨超越的经历故事性太强了,现实版的娱乐圈爽文
  5. mybatis入门学习之环境的搭建——helloworld
  6. c++中的构造数据类型----结构体
  7. 使用freemarker导出html格式的word(调整页边距,页面视图,正常表格样式)
  8. 中文分词jieba学习笔记
  9. 简单计算机英语口语对话视频,优秀简短的英语口语对话
  10. 电脑族的视力保护常识