ServiceMesh简介

  1. 把方便留给别人,把麻烦留给自己
  • Service Mesh简介
  • Service Mesh的特点
  • 理解 Service Mesh
  • 为何使用 Service Mesh?
  • 把方便留给别人,把麻烦留给自己

    Service Mesh简介

    服务网格(Service Mesh)是致力于解决服务间通讯的基础设施层。它负责在现代云原生应用程序的复杂服务拓扑来可靠地传递请求。实际上,Service Mesh 通常是通过一组轻量级网络代理(Sidecar proxy),与应用程序代码部署在一起来实现,而无需感知应用程序本身。

    Service Mesh的特点

    Service Mesh 有如下几个特点:

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

    理解 Service Mesh

    如果用一句话来解释什么是 Service Mesh,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用 Service Mesh 也就无须关系服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给 Service Mesh 就可以了。

    Phil Calçado 在他的这篇博客 Pattern: Service Mesh 中详细解释了 Service Mesh 的来龙去脉:

    • 从最原始的主机之间直接使用网线相连
    • 网络层的出现
    • 集成到应用程序内部的控制流
    • 分解到应用程序外部的控制流
    • 应用程序的中集成服务发现和断路器
    • 出现了专门用于服务发现和断路器的软件包/库,如 Twitter 的 Finagle 和 Facebook 的 Proxygen,这时候还是集成在应用程序内部
    • 出现了专门用于服务发现和断路器的开源软件,如 Netflix OSS、Airbnb 的 synapse 和 nerve
    • 最后作为微服务的中间层 Service Mesh 出现

    Service Mesh 的架构如下图所示:

    CI/CD

    为何使用 Service Mesh?

    Service Mesh 并没有给我们带来新功能,它是用于解决其他工具已经解决过的问题,只不过这次是在 Cloud Native 的 kubernetes 环境下的实现。

    在传统的 MVC 三层 Web 应用程序架构下,服务之间的通讯并不复杂,在应用程序内部自己管理即可,但是在现今的复杂的大型网站情况下,单体应用被分解为众多的微服务,服务之间的依赖和通讯十分复杂,出现了 twitter 开发的 Finagle、Netflix 开发的 Hystrix 和 Google 的 Stubby 这样的 “胖客户端” 库,这些就是早期的 Service Mesh,但是它们都近适用于特定的环境和特定的开发语言,并不能作为平台级的 Service Mesh 支持。

    在 Cloud Native 架构下,容器的使用给予了异构应用程序的更多可行性,kubernetes 增强的应用的横向扩容能力,用户可以快速的编排出复杂环境、复杂依赖关系的应用程序,同时开发者又无须过分关心应用程序的监控、扩展性、服务发现和分布式追踪这些繁琐的事情而专注于程序开发,赋予开发者更多的创造性。


    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wshten@gmail.com

    文章标题:ServiceMesh简介

    本文作者:KevinTen

    发布时间:2019-09-02, 00:00:00

    最后更新:2019-09-04, 10:31:32

    原始链接:http://github.com/kevinten10/2019/09/02/Cloud/servicemesh/Cloud-SM/

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    目录
    ×

    喜欢就点赞,疼爱就打赏

    csdn zhihu github