作者:shiva 
译者:詹叶 
校对:王凯
译文来源:ServiceMesher 社区
原文:medium.com/@tak2siva/w…

除非你长期与世隔绝,否则你应该听说过Kubernetes,他已经称为高速发展的互联网公司的一条准则。最近又有一个热门话题--Service Mesh(服务网格),它已经被这些高速发展公司用来解决一些特定的问题。所以如果你想了解什么是Service Mesh,接下来我可以给你一个更好的解释。

互联网应用的演进

为了理解Sevice Mesh的重要性,我们通过四个阶段来简短的回顾下互联网应用的发展历程。

阶段0:单体应用

还记得那些年吗?所有的代码库都打包成一个可执行和部署的软件包。当然,至今在某些使用场景下这个方式依然是很管用的。但是对于一些业务快速增长的互联网公司,在应用的可扩展性、快速部署和所有权等方面遇到了阻力。

阶段1:微服务

微服务的思想很简单,依照SLA(服务等级协议)将单体应用拆分成多个模块。这种方式运行效果显著,所以广泛为企业所接受。现在,每个团队都用他们喜爱的语言、框架等自由地设计他们的微服务。然后它开始看起来就像下面这样。

我们曾经在我的一个项目中开玩笑说,那里有各种语言的微服务:)

尽管微服务解决了单体应用的一些问题,但现在公司有一些严重问题。

  • 为每个微服务定义VM(虚拟机)规范

  • 维护系统级别依赖操作系统版本、自动化工具(如chef)等

  • 监控每个服务

对负责构建和部署的人来说这就是一个噩梦。

而且这些服务在虚拟机中共享同一个OS,但为了达到可移植性,服务之间需要隔离或者被封装到独立的VM镜像。微服务典型的架构设计如下图所示:

但为每个服务/副本安装在一台独立的虚拟机上,花费是非常高的。

阶段2:容器化

容器是利用Linux中的 cgroups 和 namespace 的一种新的操作系统级别的虚拟化技术,通过共享主机的操作系统,实现为不同的应用隔离运行环境的。Docker是目前最流行的容器运行时。

所以我们会为每个微服务创建一个容器镜像并以容器形式发布成服务。这样不仅可以在一个操作系统上实现应用运行环境的隔离,而且启动新的容器相比于启动新的VM速度更快、成本也更低!使用容器技术之后的微服务设计看起来就像这样。 容器化解决了构建和部署的问题,但还没有完美的监控解决方案!那要怎么办?我们还有其他问题吗?管理容器!

使用容器运行一个可靠的基础设施层需要注意以下几个重要的点:

  • 容器的可用性

  • 生成容器

  • 扩容/缩容

  • 负载均衡

  • 服务发现

  • 调度容器到多个主机

阶段3:容器编排

Kubernetes是当下最流行的容器编排工具,它彻底改变了我们对基础设施的看法。Kubernetes侧重于健康检查,可用性,负载均衡,服务发现,扩展性,跨主机调度容器等等,很神奇!

我们要的就是这样吗?

并不完全是,仅仅这样还不能解决在微服务阶段提到的服务监控/观测的问题。这只是冰山一角。微服务是分布式的,所以管理微服务不是件容易的事。

我们需要考虑一些最佳实践来便捷地运行微服务。

  • Metrics(延迟,成功率等)

  • 分布式链路追踪

  • 客户端负载均衡

  • 熔断

  • 流量迁移

  • 限速

  • 访问日志

像Netflix这样的公司已经推出了几种工具,并接受了那些运行微服务的做法。

  • Netflix Spectator(Metrics)

  • Netflix Ribbon(客户端负载均衡/服务发现)

  • Netflix Hystrix(熔断器)

  • Netflix Zuul(边界路由)

现在,为了满足这些最佳实践的唯一方法是在每个微服务上使用一个客户端库来解决每个问题。所以每个服务的结构看起来就像这样。 但这是针对像Service A这样的用JAVA写的服务,那其他的服务要怎么办? 如果我使用其他语言没有类似java的库要怎么办? 怎样才能让所有团队使用/维护/升级库版本? 我们公司有上百个服务,我要修改所有应用都使用上面的库吗?

发现了吗?自微服务诞生以来,这些一直都是个问题(语言限制、应用代码改造)。

阶段4:服务网格

目前有多种代理为Service Mesh提供解决方案,如:Envoy、Linkerd和Nginx。本文只关注Envoy的Service Mesh。

Envoy是针对微服务产生的这些问题设计出来的服务代理。

Envoy能够作为 SideCar 运行在每个应用的旁边,形成抽象的应用网络。当基础设施中的所有服务流量通过Envoy网格流动时,通过一致的可观察性来问题区域变得容易。

如下图所示,当把Envoy作为SideCar添加到服务后,所有微服务的入站和出站流量都通过各自的Envoy代理

Envoy拥有许多方便的功能

  • 支持HTTP,HTTP/2和gRPC

  • 健康检查

  • 负载均衡

  • Metrics

  • 追踪

  • 访问日志

  • 熔断

  • 重试策略

  • 超时配置

  • 限速

  • 支持Statsd、Prometheus

  • 流量迁移

  • 通过发现服务来动态调整配置(XDS) 等……

所以通过从服务中抽象出整个网络,使用Envoy作为SideCar形成网格组成数据平面,允许我们控制上面列出的能力。

欢迎反馈,谢谢!

为什么要使用 Service Mesh?相关推荐

  1. 聊聊Service Mesh:linkerd

    [编者的话]随着企业逐渐将传统的单体应用向微服务或云原生应用的转变,虽然微服务或者云原生应用能给企业带来更多的好处,但也会带来一些具有挑战的问题,如怎么管理从单体应用转向微服务所带来的服务间通讯的复杂 ...

  2. 下一代 Service Mesh -- istio 架构分析

    前面的分享中,我们讲到,出于性能和稳定的考虑,我们没有采用以 istio 为代表的第二代 service mesh技术,而是直接使用了 Envoy 搭配自己的 xDS 服务. 然而我们还是有必要去了解 ...

  3. 百度大规模Service Mesh落地实践

    导读:百度过去基于rpc框架的服务治理存在各种框架能力层次不齐.业务自身服务治理效率低.全局可观测性不足等诸多问题.本文介绍了百度内部落地service mesh的实践过程,以基础稳定性能力治理和流量 ...

  4. 基于Service Mesh构建更现代的服务架构

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 前言 传统业务模型中,客户端和服务端之间放置一个负载均衡器,比如nginx.我们的客户端可以是移动程序或者web系统. 当服 ...

  5. 实施Service Mesh前,你需要考虑这几个问题

    随着我们需要治理的微服务数量越来越多,我们必须开始着手解决服务间通信的复杂性问题,而Service Mesh(服务网格)的出现恰逢其时,作为基础设施层,它能够以透明代理的形式提供安全.快速.可靠的服务 ...

  6. Service Mesh是大方向,那Database Mesh呢?

    在微服务和云原生大潮的卷席之下,服务化一直以来是人们关注的重点.但服务化之后,真正绕不开的数据访问却鲜有论道.尽管目前的关系型数据库远达不到云原生的要求,并且对分布式的不友好在长期以来也饱受诟病,但不 ...

  7. 十问 | 关于Service Mesh 和Kubernets的最前沿思考

    小蚂蚁说: 在7月6日ArchSummit全球架构师峰会2018深圳站上,蚂蚁金服平台数据技术部的杨冰.Service Mesh布道师敖小剑.蚂蚁金服技术专家毛小云和来自阿里大文娱UC基础部的曾彬,四 ...

  8. Service Mesh:调度千军万马微服务,2.0妥妥的

    冠望 发自 凹非寺 量子位 报道 | 公众号 QbitAI 过去一年,继Kubernetes风靡,Service Mesh已成功上位变成当之无愧的技术网红. TA不但可以极大简化用户使用体验,还将大中 ...

  9. Service Mesh — Overview

    目录 文章目录 目录 微服务的两个层面 微服务架构服务治理的难点 Service Mesh(服务网格) Service Mesh 的设计思想 Istio 的实现原理 Service Mesh 的问题 ...

  10. Service Mesh — APIGW vs ServiceMesh

    目录 文章目录 目录 APIGW vs ServiceMesh 原本清晰的界限:定位和职责 APIGW 访问内部服务,算东西向还是南北向? Sidecar:真正的重合点 如何融合东西向和南北向的通讯方 ...

最新文章

  1. matlab肌电信号平滑滤波_BCIduino 滤波和频谱计算操作
  2. 如何安装JHipster
  3. java项目所需jar包的下载--maven仓库
  4. 金属,塑料,傻傻分不清楚
  5. 各种数字显示屏接口:LVDS, DVI, HDMI, DisplayPort, DSI
  6. 5折购票ing!与字节、阿里、腾讯、百度等大厂技术大佬线下面基!
  7. docker registry push 覆盖_Maven一键部署Springboot到Docker仓库,为自动化做准备
  8. 生成CFree 5.0 注册码
  9. 对九个超级程序员的采访
  10. 1688api 图片搜索功能 item_search_img-按图搜索1688商品(拍立淘)
  11. unity如何往下挖地形_Unity 地形
  12. Linpack的安装与测试(Mpi+Goto+hpl)
  13. Photoshop CC 2017 For Mac 安装与破解
  14. C++中cout<<后面加endl什么意思?
  15. RDMA技术--华为精华
  16. iOS 获取 WKWebView 里面图片
  17. 电脑硬件故障的排除方法经典收集大全
  18. 8款惊艳的HTML5粒子动画特效,超级惊艳 8款HTML5动画特效推荐源码
  19. linux替换大文件内容,Linux批量替换文件内容
  20. 谷歌翻拉取别的分支_如何将品牌分支机构的位置添加到Google地图

热门文章

  1. python对于办公有什么帮助-日常工作中python能够有哪些帮助?
  2. python3.6.2安装教程-CentOS 6.5中安装Python 3.6.2的方法步骤
  3. python入门基础代码图-python入门基础知识(代码)
  4. python 读下一行-Python-将前一行和下一行绑定到当前行。
  5. python语言翻译-从Python到CIL(C中间语言)的翻译
  6. NVIDIA Jetson Xavier NX分配磁盘空间
  7. Leetcode上的题目
  8. Challenges(分组、聚合、连接)
  9. spoj Simple Average
  10. UVa1339 - Ancient Cipher