NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

服务网格的概述和工具选择

  • 2018-07-22
  • 本文字数:2369 字

    阅读完需:约 8 分钟

要使一个应用的功能运用到最佳,它的应用堆栈的每个部分都需要进行优化和更新(modernized)。容器和容器编组(container orchestration)工具等都在堆栈的基础结构层使用了这种更新技术。应用程序在构建和分布式部署后,代码部署的方式也会发生变化。微服务架构在软件的交付上引入了这种去中心化的方法。
不过,在基础架构层和代码之间,需要无缝工作的是网络层。现在的容器化应用中,人们更多地聚焦在代码的基础架构,打包和发布上,而不像传统的那样聚焦在网络。
随着服务网格的出现,这种方式也发生了变化。

“Containerized app development focuses on infrastructure and code but not as much on networking.”*
点击到 TWEET

什么是服务网格?

网络通信以前是很简单的。网络中继客户机和服务器之间的消息。我们可以很容易地跟踪到路由消息及在网络中的触点,也可以很容易地调试延迟问题或错误,这些使用简单的监控工具如 Nagios 就可以做到。
在一个容器化的应用中,多个松耦合的微服务组成一个应用。每一个微服务由多个容器或 Kubernetes 系统中的 pods 组成。每个请求会涉及到多个服务,而且每个服务都是动态的。在系统发生改变和发布时,容器会自动进行创建和销毁。

这些服务之间仍需要无缝的通信,这正是服务网络的任务。

服务网格是服务间的通信层,它负责处理微服务间的横向通路。微服务中,服务网格很重要,因为在分布式应用中,应用之间的通信的复杂度远远超过独立软件之间的通信。

虽然复杂,不过微服务架构在性能、每个服务的控制、系统适应变化的能力以及网络间的可视化等方面有很大的优势。也因此,我们可以接受复杂系统所引入的管理工作。

服务网格简化了微服务间的网络管理工作。

服务网格的角色定义

服务网格最根本的职责是执行网络的核心任务,比如负载均衡和服务发现。另外,服务网格还引入了先进的方法,比如熔断机制、错误诱导(failure-inducing),来提供云原生应用程序所需要的网络性能。在一个复杂的微服务系统中,发生错误很常见,但重要的是网络需要具备可以重新路由、重试、主动失效和报告这些错误的能力。

服务网格的负载均衡

在云原生应用程序中,负载均衡是动态调整的,各个变化的部分会引起不同的性能。服务网格中的负载均衡器在发送请求到各独立的实例前,需要考虑到它们不同的状况。针对状况不佳的实例,负载均衡器可以阻止或路由其网络流量,避免紧急事件的发生并提供更可靠的服务。

负载均衡器可以主动调整服务网格的各个部件,检查它们的健康状况,也可以主动响应失败的请求,并根据性能关闭实例的流量。

除了这些,服务网络的负载均衡算法,会根据网络状况进行流量路由。过去,路由算法比较简单,如轮询调度算法和随机路由算法。在服务网格中,均衡负载算法还考虑了后端实例的延迟和可变负载。

服务网格中的服务发现

服务发现是定义新实例的过程,如实例创建以及从网络中删除时保留记录。这个记录对于功能间的负载均衡很重要,请求需要由状态良好且可用的实例来进行处理。

在一个动态的多服务应用中,服务发现是自动运行的。针对每个事件,它都有负责启动和停止系统报告的工具。在 Kubernetes 系统中,ReplicationController 负责实例的整个生命周期。

搭档代理(Sidecar proxy)

通常,负载均衡器处于客户机和服务器之间,但现在,先进的服务网格是在客户端附加了一个搭档代理(side-car proxy)。这样,不仅可以确保每个客户机能平等的访问负载均衡器,还能避免单点失效(传统负载均衡器的最大缺陷)。

搭档代理成为分布式系统中实现服务网格的首选方案。

服务网格的监控

可视化对于云原生应用的网络管理很关键。它可以把和网络性能相关的数据,如延迟、带宽和运行时间等组合起来,并在栈的每一层都进行监测,包括 hosts、 containers、 pods 和 clusters,也提供了事件的详细日志信息来帮助我们进行问题解决。

分布式的跟踪是可视化的重要方面。它给每个通过网络的请求都会分配一个 ID,并显示每个请求在网络中的路径。这样,我们可以知道网络中那个部分或那个实例速度慢或是没有响应,从而采取相应的方法去解决这些问题。

随着微服务应用复杂度的增加,我们越来越难重现一个实例的错误。我们需要有力的监控工具来了解请求的路径,识别问题产生的区域(不止一个)。

服务网格工具

服务网格最重要的两个工具分别是 Linkerd 和 Istio。Linkerd 是把服务网格方法带入网络的第一个工具,在生产环境中得到了广泛的应用。Istio 在随后的一年发布,目前在分布式网络中增加了额外的管理层。

Istio 把其它的服务网格工具看作数据平面,而自身为数据平面和控制平面的结合。Istio 使用另一个和 Linkerd 类似的流行工具 Envoy 作为它的数据平面。这些工具之间兼容性很多,Istio 也把 Linkerd 作为自己的数据平面。Istio 带来的是先进的拟合策略(policy-based)管理和抽象层,抽象层可以给网络化带来更有力的分布式方法。

Buoyant 公司最近发布了面向 Kubernetes 的 Conduit。相对于功能大而全的 Linderd,Conduit 采用一种不同的路由,提供更简单的轻量级方案。理想情况下,对于组织而言,这意味着在 Kubernetes 上,它就是一切,从而需要一种能快速启动和方便管理的方法。

安全是网络的关键。Project Calico 是使用拟合策略安全技术的一个工具。和以前只依赖于作用在整个应用外围的防火墙的单层软件不一样,Calio 的策略是为微服务应用的每个服务建立防火墙。这样,可以使服务和其它服务进行隔离,进行细小颗粒度的管理控制,从而加强我们的安全策略。在这样的设计中,假如一个服务出现问题,另外的服务不会受到影响。

从单个软件过渡到微服务模式,我们怎样管理应用网络至关重要。服务网格比传统网络模型相比,是更好的解决方案,也是在更先进的云原生应用中的一个基础。

“An Overview of the Service Mesh and Its Tooling Options” via @twaintaylor
点击到 TWEET

感谢张婵对本文的审校。

2018-07-22 13:051401

评论

发布
暂无评论
发现更多内容

包头市企业如何申请等保测评?去哪里申请?联系电话是多少?

行云管家

网络安全 等级保护 等保测评 等保评测 包头

真香!霸榜掘金首页第一,阿里内部Java性能调优笔记终于开源了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

阿里P8手抄本惨遭泄露,并出现病毒式传播,致28人斩获大厂offer

Java架构师迁哥

鲲鹏BoostKit虚拟化使能套件,让数据加密更安全

华为云开发者联盟

鲲鹏

音视频编解码流程与如何使用 FFMPEG 命令进行音视频处理

声网

音视频 ffmpeg

MySQL日志15连问

Java MySQL 数据库 面试 后端

GitHub榜首的阿里“绝巅版”Java工程师手册,看完才知道差距多大

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

三年开发经验,从抖音组离职后,一口气拿到15家公司Offer

Java架构师迁哥

ShardingSphere 分片利器 AutoTable:为用户带来「管家式」分片配置体验

SphereEx

数据库 开源

没想到我也可以入职阿里!二本毕业、两年crud经验,侥幸通过面试定级P6

Java架构师迁哥

一位年薪 180 万的字节大佬扔给我的四份学习笔记

Java架构师迁哥

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

60w“跳”进腾讯!你知道我经历了什么吗?

Java架构师迁哥

发布60分钟!霸榜Github的阿里面试参考指南,啃透涨薪10k

Java架构师迁哥

足足541页!费了大力气才从GitHub上扒下的阿里Java优化“圣经”

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

The Data Way Vol.4|开源是创造软件诸多方法中最好的一种形式

SphereEx

数据库 开源

某宝付费的Redis核心原理深度实践PDF,竟在GitHub标星86k+霸榜

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡

阿里巴巴云原生

云计算 云原生 混合云

你见过最具有代表性面试是什么样?大三4面上岸腾讯(Java岗)

Java架构师迁哥

炸了!阿里又一力作上传GitHub,Spring Cloud Alibaba差距不止一点

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

诧异!GitHub上竟有阿里专家用800页笔记,只讲MySQL调优而且火了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

开源即巅峰!阿里首次分享:Java架构师全栈“成长笔记”

Java架构师迁哥

不愧是阿里内部“千亿级并发系统架构设计笔记”面面俱到,太全了

Java 架构 面试 后端 高并发

主机监控用什么软件好?监控机制是怎样的?

行云管家

运维 IT运维 主机监控

垃圾弹窗广告,如何清除互联网世界的牛皮癣

石头IT视角

求职季,我是这样拿到百度AI Offer的!

百度开发者中心

百度 AI 求职

软件真的可以定义汽车么?

SOA开发者

软件 物联网 汽车

“京东商城”亿级高并发秒杀系统到底是怎么设计的?自己做该如何下手?

Java架构师迁哥

由于太全被各大厂要求Github连夜下架

Java架构师迁哥

Fish-Lottie:纯Dart如何实现一个高性能动画框架?

阿里巴巴终端技术

flutter 开源 dart 客户端

服务网格的概述和工具选择_语言 & 开发_Twain Taylor_InfoQ精选文章