zoukankan      html  css  js  c++  java
  • 开发者必须要了解的架构技术趋势:Service Mesh

    内容概要

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

    推荐阅读:

  • 相关阅读:
    利用Python编写简单的Web静态服务器(TCP协议)
    UDP-TCP介绍与区别
    Linux基本知识-命令
    Python中多线程与join()的应用
    Python实例---对一组含有四则运算,括号,空格的字符串进行计算
    分组查询注意事项
    oracle分页查询
    springMVC文件上传配置
    ssm网站页面乱码问题解决
    redis-server.exe闪退
  • 原文地址:https://www.cnblogs.com/yogoup/p/12204118.html
Copyright © 2011-2022 走看看