【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

  • 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:051381

评论

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

大促活动如何抵御大流量 DDoS 攻击?

京东科技开发者

安全 电商 DDoS 电商大促 防护

Java培训学习技术需要具备哪些能力

小谷哥

首批合作伙伴!博云携手中科院共建 SERVE 云平台规范

BoCloud博云

云计算 云原生 处理器

SAP UI5 的规则构建器控件介绍

Jerry Wang

JavaScript SAP SAP UI5 ui5 9月月更

给工作加点料——试一试python

为自己带盐

Python 爬虫 9月月更

硬实力!旺链科技与蚂蚁、腾讯共同入选国家工信安全中心“区块链优选计划”

旺链科技

区块链 产业区块链 Baas 企业号九月金秋榜 融合创新

OpenHarmony Camera源码分析

OpenHarmony开发者

OpenHarmony

Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

spring 9月月更

库调多了,都忘了最基础的概念-HashMap篇

知识浅谈

HashMap底层原理 9月月更

【运营下班指南】有人准点下班,有人凌晨搬砖

HMS Core

分析

数字藏品NFT电商交易平台:APP系统开发

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

2022-09-05:作为国王的统治者,你有一支巫师军队听你指挥。 :给你一个下标从 0 开始的整数数组 strength , 其中 strength[i] 表示第 i 位巫师的力量值。 对于连续的一

福大大架构师每日一题

算法 rust 福大大

Flink 资料集

Joseph295

好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快

程序知音

Java spring 程序员 后端 框架

零信任态势评估:安全控制自动化

权说安全

零信任 动态评估

Baklib|FAQ常见问题对产品推广的重要性

Baklib

产品 FAQ

黑石创始人,在初入职场时,用这三个问题来开场。

叶小鍵

江南农村商业银行容器云平台建设经验分享

BoCloud博云

云计算 云原生 容器云

知识管理对企业的作用不容小觑

Baklib

知识管理 企业

干货 | 如何实现软件自动化部署?

嘉为蓝鲸

运维 IT 应用发布 应用部署

数据治理(八):Atlas集成Hive

Lansonli

数据治理 9月月更

VUE 如何将父组件中的数据传递到子组件中

HoneyMoose

《小米创业思考》之二:互联网简史

郭明

读书笔记

访问控制系统的质量评价

权说安全

网络安全 零信任 访问控制

守护园区安全安全解决方案亮相

创意时空

这一刻,听见华为FTTR的星光四重奏

脑极体

Java加密技术(四)非对称加密算法RSA

No Silver Bullet

RSA密码 9月月更 非对称加密算法

超长序列,超快预测!深势科技联手阿里云,AI蛋白质预测再下一城

阿里云大数据AI技术

人工智能 深度学习 企业号九月金秋榜

5 分钟比较理解 require() vs import()

掘金安东尼

前端 9月月更

TiFlash 源码解读(八)TiFlash 表达式的实现与设计

PingCAP

源码阅读 TiDB TiDB 源码解读

详解AUTOSAR:AUTOSAR方法论(理论篇—3)

不脱发的程序猿

汽车电子 嵌入式开发 AUTOSAR方法论

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