前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发者必须要了解的架构技术趋势:Service Mesh

开发者必须要了解的架构技术趋势:Service Mesh

作者头像
dys
发布2020-02-19 13:55:00
2K1
发布2020-02-19 13:55:00
举报
文章被收录于专栏:性能与架构性能与架构

内容概要

  • 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,而且服务间的通信不像以前那么直接了,需要经过代理。还有就是成熟度还不是很高,需要大规模线上应用的磨合完善。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容概要
  • 1. Service Mesh 是什么?
    • (1)服务调用复杂度问题
      • (2)Service Mesh 怎么解决的?
      • 2. Service Mesh 功能特性
      • 3. Service Mesh 实现
      • 4. 小结
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档