内容概要

  • Service Mesh 是干啥的?解决了什么问题?
  • Service Mesh 的特性
  • Service Mesh 的主流实现有哪些?

1. Service Mesh 是什么?

简单来讲,Service Mesh 简化了微服务架构中服务间调用复杂度

这就涉及到了2个问题:

  • 服务调用怎么复杂了?
  • Service Mesh 怎么解决的?

(1)服务调用复杂度问题

对于每个微服务,我们可以简单的视为包含2个部分:

  • 业务逻辑
  • 网络功能

其中网络部分是非常复杂的,需要解决很多问题,例如:

  • 使用什么网络传输协议(HTTP1.x/2.x, gRPC ……)
  • 服务发现
  • 熔断机制
  • 处理超时
  • 重试
  • 服务调用时的负载均衡
  • ……

每个微服务都需要处理这些网络问题,如果所有微服务都使用同一套语言还好,可以使用一个框架统一解决,但如果使用了多种语言,那么每种语言又需要统一处理一遍。

所以,可以说:

微服务架构中,最复杂的不是构建服务本身,而是处理服务间调用问题

(2)Service Mesh 怎么解决的?

核心部分说明:

  • 业务逻辑

微服务实现自己的业务功能。

  • 内部网络功能

虽然很多网络功能都可以统一由 Service Mesh 解决,但有些基础的功能还需要微服务自己来解决。

例如,和 Service Mesh 如何沟通呢?使用 HTTP1.x, gRPC, TCP?

这部分功能通常由开发框架中的网络库来解决。

  • Service Mesh Sidecar(边车)

这部分就是用来解决应用级别通用的网络问题,例如熔断、超时、服务发现 ……。

把这些问题与微服务中的业务代码完全隔离开,开箱即用。

  • Service Mesh Control Plane

负责管理所有 service mesh 的代理。

例如:

1)访问控制

2)监控

3)服务发现

……

2. Service Mesh 功能特性

梳理一下 Service Mesh 的核心功能:

  • 服务间调用的弹性处理:熔断、超时、重试、错误处理、负载均衡、故障转移。
  • 服务发现:通过专用服务注册表发现服务终结点。
  • 路由:提供原始的路由功能,不涉及服务中业务相关的路由功能。
  • 监控:度量、监控器、分布式日志、分布式跟踪。
  • 安全:传输层安全,key 管理。
  • 访问控制:基于黑名单、白名单的访问控制。
  • 部署:原生支持容器,Docker 和 Kubernetes。
  • 通信协议:HTTP1.x, HTTP2, gRPC, TCP。

3. Service Mesh 实现

非常流行的2个开源实现:

  • Linkerd
  • Istio

他们的架构都比较简单,实现机制不同。

4. 小结

Service Mesh 把通用的服务调用需要处理的问题都统一处理了,你可以更加专注于服务自身的业务了,也可以放心的使用不同开发语言。

但 Service Mesh 也有不足,首先就是增加了系统整体的复杂度,例如增加了 Sidecar、Control Plane,而且服务间的通信不像以前那么直接了,需要经过代理。还有就是成熟度还不是很高,需要大规模线上应用的磨合完善。

推荐阅读:

开发者必须要了解的架构技术趋势:Service Mesh的更多相关文章

  1. 大规模微服务架构下的Service Mesh探索之路

    小结: 1. 第一.二代Service Mesh meetup-slides/敖小剑-蚂蚁金服-大规模微服务架构下的Service Mesh探索之路.pdf https://github.com/se ...

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

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

  3. 微服务架构之「 下一代微服务 Service Mesh 」

    Service Mesh 被大家称为下一代的微服务,是微服务领域的一颗新星,被大家讨论的非常多. 我在大家的讨论中,还看到有人说 “目前的微服务架构我都没学会呢,现在又来一个下一代微服务,真学不动了” ...

  4. Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh

    架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...

  5. 2017值得一瞥的JavaScript相关技术趋势

    2017值得一瞥的JavaScript相关技术趋势从属于笔者的Web 前端入门与工程实践,推荐阅读2016-我的前端之路:工具化与工程化获得更多关于2016年前端总结.本文主要内容翻译自,笔者对于每个 ...

  6. 牛年 dotnet云原生技术趋势

    首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...

  7. 技术趋势:React vs Vue vs Angular

    React.Vue 和 Angular 这两年发展状况如何?2019 年哪个技术最值得学习? 前几天 Medium 上有一位作者发表了一篇关于 React.Vue 和 Angular 技术趋势的文章( ...

  8. Java架构技术进阶之:从分布式到微服务,深挖Service Mesh

    自从几十年前第一次引入分布式系统这个概念以来,出现了很多原来根本想象不到的分布式系统使用案例,但同时也引入了各种各样的新问题. 当这些系统还是比较少比较简单的时候,工程师可以通过减少远程交互的次数来解 ...

  9. 4星|《超级技术:改变未来社会和商业的技术趋势》:AI对人友好吗

    超级技术:改变未来社会和商业的技术趋势 多位专家或经济学人编辑关于未来的预测,梅琳达·盖茨写了其中一章.在同类书中属于水平比较高的,专家只写自己熟悉的领域,分析与预测有理有据而不仅仅是畅想性质. 以下 ...

随机推荐

  1. javascript基础的一些总结

    一 闭包 各种专业文献上的"闭包"(closure)定义非常抽象,很难看懂.我的理解是,闭包就是能够读取其他函数内部变量的函数. 由于在Javascript语言中,只有函数内部的子 ...

  2. 有状态无状态回话bean

    1.有状态(Stateful) 可以在不同的方法调用间保持针对各个客户端的状态 与客户端的联系必须被维持,这样做开销要大一些 有状态也可以这样理解,它存在存储能力,也就是说至少有一个属性来标识它目前的 ...

  3. 2018-8-10-C#-写系统日志

    title author date CreateTime categories C# 写系统日志 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 17:23:3 ...

  4. 【58.75%】【BZOJ 1087】[SCOI2005]互不侵犯King

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3040  Solved: 1786 [Submit][Status][Discuss] Descri ...

  5. Mybatis 框架

    在之前的内容中,我写了Java的基础知识.Java Web的相关知识.有这些内容就可以编写各种各样丰富的程序.但是如果纯粹手写所有代码,工作量仍然很大.为了简化开发,隐藏一些不必要的细节,专心处理业务 ...

  6. 一个APP从启动到主页面显示经历了哪些过程?

    ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求: ②system_server进程接收到请求后,向zygote进程 ...

  7. windows系统锁屏及修改密码项目开发经验记录

    改造windows开机.锁屏登录流程需要使用微软停供的Credential Providers工程,编译出来是dll,安装在C:\windows\system32目录下,然后注册注册表(运行工程生成的 ...

  8. Linux: 在某个路径及其子目录下查找所有包含“hello abcserver”字符串的文件。

    find /etc -name “*” | xargs grep “hello abcserver” 在 / 及其子目录下查找所有包含UNEXPECTED_SCHEMA find /  -name * ...

  9. 基于 HTML5 + WebGL 的无人机 3D 可视化系统

    前言 近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,也被称为“会飞的照相机”.但作为军事使用,无人机的各项性能要求更加严格.重要.本系统则是通过 Hightopo 的   ...

  10. spring boot 中事物的使用

    一.什么是事务? 事务,通俗的说就是,同时做多个事,要么全做,要么不做,也是其特性.举个例子来说,好比你在某宝.某东.某多上购物,在你提交订单的时候,库存也会相应减少,不可能是钱付了,库存不减少,或者 ...