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

控制平面

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

最后分享一波我的面试宝典——一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

点击《一线互联网大厂Java核心面试题库》即可免费领取,整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

还有源码相关的阅读学习

h2p0tTD-1624462626306)]

还有源码相关的阅读学习

[外链图片转存中…(img-OgyUzRyD-1624462626308)]

长春java开发能开多少钱,从理论到实践!相关推荐

  1. Java开发社招面试总结!长春java开发能开多少钱

    前言 苦苦寻觅找工作之间,殊不知今日之时乃我心之痛,难道是我不配拥有工作嘛.自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦.每每想到不由心中一紧.正处为难之间,手机忽然来了个短信 ...

  2. java开发人员工资多少钱_全世界有多少Java开发人员?

    java开发人员工资多少钱 Oracle说 是9,000,000 . 维基百科声称 是10,000,000 . 来自NumberOf.net的人员似乎是最精确的–他们知道那里确实有9,007,346 ...

  3. java开发一年多少钱_JAVA开发程序员一个月到底能拿多少钱?年薪百万是真是假?...

    近年来,在网上只要是薪资排行榜,必然会出现IT行业,IT互联网行业常年在薪资排行榜上高居前三,因此都说程序员是个高薪行业,是个多金行业.既然如此,让我们来看看2020年JAVA开发程序员的薪资水平到底 ...

  4. java软件开发案例整合_30个java练手实战项目,让理论与实践相结合,献给嗜学如命的奋斗人...

    给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行巩固. JAVA基础 ...

  5. java开发五年多少钱,附超全教程文档

    一.分布式架构学习路线图 据统计,人的阅读时间在20分钟以内是能够达到全身心投入的,顾文章单张篇幅以后会尽量缩短,但更新会尽量相应频繁一些. 二.计算机软件发展历史 首先我们了解下计算机软件的发展历史 ...

  6. java开发一年多少钱_Java

    Java工程师10万年薪需要几年经验? 我国目前对软件人才的需求已达20万,并且以每年20%左右的速度增长.在未来5年内,合格软件人才的需求将远大于供给.2008年,我国软件人才的缺口已达42.5万, ...

  7. java开发一年多少钱_4年Java程序员:月薪不过3万,就不要拿命换钱了

    TIOBE 公布 2020 年 9 月的编程语言排行榜:Java占有率继续下降,从上个月的14.43%降到13.48%,同比下降3.18%. 在Java的学习群里,问到大家工作3-5年的瓶颈,回答基本 ...

  8. linux/ubuntu下安装java开发环境

    在ubuntu下安装和配置java开发环境,下面对自己的一些实践做了一下总结. Sun JDK的安装一般有两种方式: 一.通过ubuntu提供的包管理工具进行安装 ubuntu在其包仓库里都包括有JD ...

  9. 怎么能学好Java开发,学好Java一般需要多少钱

    怎么能学好Java开发,学好Java一般需要多少钱?互联网时代,掌握一门潮流的编程语言就意味着高薪和广阔的就业前景,而Java是很多人的一致选择.不过用户需求的不断变化促使企业对Java开发人员的技能 ...

最新文章

  1. 陈芳,高考之后我要学计算机专业,将来做 IT 发财了,我就娶你!
  2. python dataframe 如何去除缺失值
  3. 区块链学习之密码学安全技术(五)
  4. jQuery的load()方法
  5. 服务上的图片直接在浏览器上可以打开,但是在img上报404错误
  6. 基于django快速开发一个网站(一)
  7. mysql mac版本_mysql的安装、启动和基础配置 —— mac版本
  8. asp小偷转html,ASP之XMLHTTP小偷程序的简单代码范例
  9. 乒乓球单循环赛_乒乓球单循环赛积分表(比赛规则、对比表)
  10. 思科模拟器基础实验完整流程-初级
  11. android eclipse三合一,创新巅峰之作全能型Orbitrap Eclipse三合一质谱仪
  12. CAD关于文字样式删除文字样式操作(com接口c#语言)
  13. Roman number -- 罗马数字
  14. W806+ST7735R+tftLCD程序开发
  15. 高可用解决方案:同城双活?异地双活?异地多活?怎么实现?
  16. 贴片电阻有哪几类封装尺寸?
  17. 20192132055 李欣桐 第三次作业
  18. 从 Eligibility 浅谈英中翻译消除歧义的重要性
  19. css 光影掠过文字显现动画
  20. 如何将PDF文件转换成Excel呢?

热门文章

  1. 2021年中国住宅保安系统市场趋势报告、技术动态创新及2027年市场预测
  2. android thermal 机制,一种系统过热保护机制的实现方法及系统与流程
  3. 中奖名单出炉,本期“开发者大调查”的奖品花落谁家?
  4. 直接拿来用的 CTO 创业技术栈指南!
  5. 面试官:Object o = new Object() 占用了多少字节?
  6. 中国实现量子计算第一个里程碑:原型机 “九章”比最快的超级计算机快一百万亿倍...
  7. 1200 美元创业成硅谷首富,甲骨文创始人埃里森传
  8. 何时不应该使用 Rails?
  9. 美国 AI 博士爆料:掌握这9个要点,赚钱不再艰难
  10. 又一 5G+AIoT 的强强联手!