下一代微服务架构——服务网格Service Mesh

  • 下一代微服务架构——服务网格Service Mesh
  • 服务治理
    • 什么是服务治理
    • 系统架构形态演进
    • 现阶段存在的问题
  • Service Mesh是什么
    • 概述
    • 服务网格架构
  • Sidecar pattern
    • 边车模式设计
    • 边车模式解决了什么问题
    • 从边车模式到 Service Mesh
    • Service Mesh的具体实现
  • 服务网格全景图
  • 相关资料

下一代微服务架构——服务网格Service Mesh

服务治理

随着互联网行业的兴起,现在的系统架构越来越复杂,短短时间,服务架构为了最大限度的提升服务性能和开发,部署速度,衍生出了很多概念:微服务,面向服务编程,人工智能等等。今天我们要谈论的主要是关于微服务的发展。

什么是服务治理

服务治理可以理解为对服务生命周期的相关要素的管理。包括服务的系统架构设计、发布、定义、版本管理、线上监控管控、故障处理、系统安全性等。

比如我们常说的服务熔断,服务降级,服务异常剔除,对服务的性能监控等都输入服务治理的范畴。

系统架构形态演进

单体服务:在最初的业务简单,流量并不是很大的时候我们所有的业务都放在一个系统中,足以完成我们的业务。

特点: 1.部署相对简单,只需要进行单机部署。

​ 2.模块之间进程之内调用

​ 3.由于所有的业务都在一个系统,耦合度高

​ 4.开发人员自己实现服务治理

微服务:随着业务越来越复杂,流量也越来越高,导致系统的性能面临着瓶颈,为了解决这个问题,微服务诞生了。微服务把原有的单体服务进行细化拆分成较小的服务,独立部署,服务间进行通信,完成业务。

特点:
1.功能模块独立部署

​ 2.功能模块进程间调用

​ 3.开发人员自己实现服务治理

SDK:将服务治理功能设计为一个公共库 SDK,让业务逻辑与这些功能减低耦合度,提高重复利用率,更重要的是开发者只需要关注公共库 SDK 的依赖及使用,而不必实现这些功能,从而更加专注于业务逻辑的开发。

特点:
1.SDK引用
2.SDK实现服务治理逻辑,可直接复用

现阶段存在的问题

耦合:业务逻辑和服务治理逻辑耦合在一起,具备了基本的服务治理能力,易于实现,但是会有一些缺陷:

​ 1.基础设施功能(服务发现,服务注册, 服务熔断等 )和业务逻辑耦合。

​ 2.不易于管理,假如某个服务的负载均衡变化,调用方都需要变化。

  1. 开发者需要兼顾服务治理的开发,不能致力于业务开发。

SDK升级问题:服务治理逻辑与应用系统混合在一个进程内,应用既有业务逻辑,也有服务治理逻辑,升级SDK也面临着应用变更,基础设施演进困难。

Service Mesh是什么

概述

从上边的阅读我们知道,我们要解决的问题就是**把服务治理下沉到基础设施。让业务更加专注于业务逻辑**。

说的直白点就是把我们的业务逻辑和服务治理的逻辑分开,找一个东东专门管理我们的服务治理,不需要我们操心了。这个管理服务治理的东东就是服务网格——Service Mesh。

服务网格的概念是由buoyant的CEO——William Morgan于 Linkerd产品在2016年并被首次提出,并解释了为什么云原生应用需要 Service Mesh。(有兴趣的同学请参照:https://buoyant.io/service-mesh-manifesto)

正如上边所说,Service Mesh 是一个基础设施层,其独立运行在应用服务之外,提供应用服务之间安全、可靠、高效的通信,并为服务通信实现了微服务运行所需的基本组件功能,包括服务注册发现、负载均衡、故障恢复、监控、权限控制等等。Service Mesh 的中文译为 “服务网格”。

它可以被用于处理服务与服务(service-to-service)之间的通信。通过构建云原生的现代化应用,服务网格能够使用复杂服务拓扑,来可靠地传递各种请求。服务网格的实现,实际上是与应用代码一起部署的轻量级网络代理阵列。服务网格通常实现为一组轻量级网络代理,它们与应用程序部署在一起,而对应用程序透明

一句话概括:Service Mesh是一组处理服务间通信的网络代理。

可能有些人是第一次听到服务网格这个名字,到这里你可能会有一个疑问:既然服务网格在2016年就被提出来了,而且还能解决这么多的问题,为什么很多公司没有使用到服务网格呢?(就是说我的公司没有用到呢?说白了就是为什么我自己怎么也没听过?)刚刚我们提到过,服务网格是基于云原生技术(Cloud Native)的,在云原生领域也是炙手可热的技术,在大部分的云厂商比如腾讯,阿里,AWS等等已经被广泛使用。服务网格提供了一个基础设施,使得开发人员更致力于业务逻辑的开发。但是Service Mesh的技术难度较高,现在的很多的公司云原生技术都不会使用,基于云原生的Service Mesh就更不会使用到了。但是大到随着时代的进步和发展,小到公司业务的复杂度和发展,我相信服务网格会越来越被广泛使用,真正成为下一代的微服务架构。

服务网格架构

(图片来自servicemesh.es)

浅色的Microservice就是我们上边提到的业务微服务,深色的Sidecar叫做边车服务(下边会对边车进行详细说明。)Sidecar作为业务微服务的代理来完成基础设施功能:如网络通信、安全、监控、流量控制等。从一个全局视角来看,Sidecar 连接成网,就是我们所说的网格mesh.

TCP 协议催生了分布式系统,分布式系统催生了微服务,Service Mesh 就是下一代微服务技术的代名词,是微服务时代的 TCP 协议。Service Mesh 以 Sidecar 形式,将服务治理从业务逻辑中剥离,并拆解为独立进程,实现异构系统的统一治理和网络安全。

控制平面:

控制和管理数据平面中的 Sidecar 代理,完成配置分发、服务发现、流量路由、授权鉴权等功能,以达到对数据平面的统一管理。控制平面不会直接解析请求数据包。通常提供 API 或者命令行工具可用于配置版本化管理,便于持续集成和部署。

数据平面:

**由整个网格内的 Sidecar 代理组成,这些代理以 Sidecar 的形式和应用服务一起部署。**这些代理负责协调和控制应用服务之间的所有网络通信。每一个 Sidecar 会接管进入和离开服务的流量,并配合控制平面完成流量控制等方面的功能。

服务网格特点

  • 应用程序间通讯的中间层
  • 轻量级网络代理
  • 应用程序无感知
  • 解耦应用程序的重试/超时、监控、追踪和服务发现

Sidecar pattern

所谓边车模式(Sidecar pattern ),也译作挎斗模式,是分布式架构中云设计模式的一种。因为其非常类似于生活中的边三轮摩托车而得名。该设计模式通过给应用程序加上一个“边车”的方式来拓展应用程序现有的功能。这种设计模式出现的很早,实现的方式也多种多样。现在这个模式更是随着微服务的火热与 Service Mesh 的逐渐成熟而进入人们的视野。

(生活中的摩托车)

提示:这里所说的边车模式是一种设计理念,而服务网格里边的sidecar是对边车模式的实现,这一节说的是这种设计理念。

边车模式是一种分布式架构的设计模式。如上图所示,边车就是加装在摩托车旁来达到拓展功能的目的,比如行驶更加稳定,可以拉更多的人和货物,坐在边车上的人可以给驾驶员指路等。边车模式通过给应用服务加装一个“边车”来达到控制逻辑的分离的目的。

比如日志记录、监控、流量控制、服务注册、服务发现、服务限流、服务熔断等在业务服务中不需要实现的控制面功能,可以交给“边车”,业务服务只需要专注实现业务逻辑即可。如上图那样,应用服务你只管开好你的车,打仗的事情就交给边车上的代理就好。这与分布式和微服务架构完美契合,真正的实现了控制和逻辑的分离与解耦。

边车模式设计

在设计上边车模式与网关模式有类似之处,但是其粒度更细。其为每个服务都配备一个“边车”,这个“边车“可以理解为一个 agent ,这个服务所有的通信都是通过这个 agent 来完成的,这个 agent 同服务一起创建,一起销毁。像服务注册、服务发现、监控、流量控制、日志记录、服务限流和服务熔断等功能完全可以做成标准化的组件和模块,不需要在单独实现其功能来消耗业务开发的精力和时间来开发和调试这些功能,这样可以开发出真正高内聚低耦合的软件。

这里有两种方法来实现边车模式:

通过 SDK 、 Lib 等软件包的形式,在开发时引入该软件包依赖,使其与业务服务集成起来。

这种方法可以与应用密切集成,提高资源利用率并且提高应用性能。但是这种方法是对代码有侵入的,受到编程语言和软件开发人员水平的限制,但当该依赖有 bug 或者需要升级时,业务代码需要重新编译和发布。同时,如果该依赖宣布停止维护或者闭源,那么会给该服务带来不小的影响。

以 Sidecar 的形式,在运维的时候与应用服务集成在一起。

这种方式对应用服务没有侵入性,不受编程语言和开发人员水平的限制,做到了控制与逻辑分开部署。但是会增加应用延迟,并且管理和部署的复杂度会增加。

边车模式解决了什么问题

边车模式在概念上是比较简单的,但是在实践中还是要了解边车模式到底解决了什么问题,我们为什么要使用边车模式?

控制与逻辑分离的问题

边车模式是基于将控制与逻辑分离和解耦的思想,通俗的讲就是让专业的人做专业的事,业务代码只需要关心其复杂的业务逻辑,其他的事情”边车“会帮其处理,从这个角度看,可能叫跟班或者秘书模式也不错

下一代微服务架构——服务网格Service Mesh相关推荐

  1. 微服务架构基础之Service Mesh

    ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础. 那么到底什么是 Serv ...

  2. 微服务的未来,服务网格Service Mesh!!!

    微服务确实为分布式架构带来了极大的改善,但是侵入到服务中的各种配置也确实令人眼花缭乱,最近偶然接触到了Service Mesh(服务网格),感觉确实是个好东西,下面借鉴一些网络资源,简单的整理一下思路 ...

  3. 服务网格(Service Mesh)是什么?

    1. Service Mesh是什么(What) Service Mesh中文含义服务网格,是一种微服务网络层治理方案. 服务网格将微服务中与网络相关的部分抽象出来,形成一个应用层的抽象网络层,专门负 ...

  4. 微服务架构-服务注册中心和服务网关(6.8) (转载)

    原文链接:微服务架构-服务注册中心和服务网关(6.8) 这篇文章还是基于SpringCloud开源框架体系来谈下对Eureka服务注册中心和Zuul服务网关在使用上的一些理解和说明.在使用微服务架构进 ...

  5. 从分布式到微服务,深挖Service Mesh

    摘要:在前一段时间,我们CSDN推出了<深度剖析Service Mesh服务网格新生代Istio>一文,大家应该深刻理解了Istio的架构和功能,该篇文章可以看作是这篇的前传,本文由易到难 ...

  6. 什么是服务网格(Service Mesh)

    本文来说下什么是服务网格 文章目录 Service Mesh是什么 服务调用复杂度问题 Service Mesh怎么解决的 Service Mesh功能特性 Service Mesh实现 本文小结 S ...

  7. istio简介和基础组件原理(服务网格Service Mesh)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 微服务对于每个功能的开发细化了,但是对与系统的管理复杂度增强了,尤其是网络流量的管理. 试想一下:黑名单,导流,加密,访问控制,流量监控,熔断,限速, ...

  8. 服务网格Service Mesh学习整理

    服务网格从总体架构上来讲,就是一堆紧挨着各项服务的用户代理,外加一组任务管理流程组成. 代理在服务网格中被称为数据层或数据平面(data plane), 管理流程被称为控制层或控制平面(control ...

  9. Spring Cloud构建微服务架构-服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: 愿意了解源码的朋友直接求求交流分享技术 一零三八七七四六二六 我们使用Sp ...

最新文章

  1. 连续发表三篇核酸研究数据库文章
  2. springmvc二十七:springmvc-ResponseBody与ResponseEntity
  3. java学习--基础知识第六天--笔记
  4. association 实现MyBatis分步查询与延迟加载
  5. VS2013 加快编译速度 的方法整理
  6. 拓端tecdat|matlab使用移动平均滤波器、重采样和Hampel过滤器进行信号平滑处理
  7. java流程控制if_[Java]Java基本语法结构(运算符,流程控制语句,if语句)
  8. fastdfs 集群 java,第四套:FastDFS 分布式文件系统集群与应用(视频)
  9. AVG Anti-Virus System 7.5.433注册码生成器
  10. 实验记录 | 8/8 阶段性结果整理(二)
  11. 企业外贸出口业务流程图 进出口贸易流程细节
  12. text显示下标的字体 unity_Text Mesh Pro中文版
  13. 英语语法笔记——名词性从句(三)
  14. 小程序获取收货地址流程
  15. uniapp:使用百度API提取身份证信息(微信小程序适用)
  16. 猫,路由器,宽带(光纤,ADSL),带宽的区别和联系
  17. Oracle - 索引
  18. STM32实现低功耗待机(电流低至5.7uA)
  19. 新站被收录后nbsp;15天打造关键词百度…
  20. 数据结构专题——虚树

热门文章

  1. nowcoder19153 无限手套
  2. Docker 端口映射
  3. 2022.10.16 英语背诵
  4. java mq_java实现MQ消息收发两种方式
  5. IP地址概述——IP地址1.1.1
  6. 【网络协议】SNMP与Netconf
  7. 用webstorm搭建vue项目(亲测,绝对实用)
  8. TerminateProcess 杀进程
  9. 管段超声波流量计大口径
  10. cmd 删除文件命令del 删除目录树命令rmdir