Service Mesh微服务架构的崛起

元胞露台
• 阅读 4019

SAMIR BEHARA

本文将解释Service Mesh相关概念,为什么云原生应用需要它,以及这项技术被社区热烈拥抱、积极采用的原因。

毫不夸张地说,微服务已经席卷了整个软件行业。从Monolith过渡到微服务架构,可以让我们频繁、独立而可靠地部署应用。

然而,在微服务架构中,一切都不是绿色的,它必须处理在设计分布式系统时遇到的相同问题。

然而,微服务架构不是万能的,在设计分布式系统时会遇到很多有待解决的问题。说到这里,我们不妨首先回顾一下关于分布式计算的8大谬误——

  • 网络是可靠的(The Network is Reliable)
  • 延迟为零(Latency is Zero)
  • 带宽是无限的(Bandwidth is Infinite)
  • 网络是安全的(The Network is Secure)
  • 拓扑不会改变(Topology does not Change)
  • 有一名管理员(There is one Administrator)
  • 传输成本为零(Transport Cost is Zero)
  • 网络是同质的(The Network is Homogenous)

在微服务体系结构中,对于网络的依赖带来了可靠性问题。随着服务数量的增加,我们必须处理它们之间的交互,监视整个系统的健康状况,处理容错、日志记录,处理多个故障点等等。每个微服务都需要有这些共同的功能,以便服务通信是平滑和可靠的。但是,如果你要处理几十上百个微服务,操作难度光是听起来就有些吓人。

什么是服务网格?

Service Mesh可以定义为在微服务体系结构中处理服务间通信的基础结构层,它减少了与微服务体系结构相关的复杂性,并提供了许多治理功能,如 -

  • 负载均衡(Load Balancing)
  • 服务发现(Service Discovery)
  • 健康检查(Health Check)
  • 身份验证(Authentication)
  • 流量管理和路由(Traffic Management & Routing)
  • 断路和故障转移(Circuit Breaking and Failover Policy)
  • 安全(Security)
  • 监控(Metrics & Telemetry)
  • 故障注入(Fault Injection)

为什么需要Service Mesh?

在微服务架构中,处理服务到服务的通信是企业IT的一大挑战。大多数时候,我们需要依赖第三方库或者组件来提供服务发现、负载均衡、断路器、监控等功能。像Netflix这样的公司,他们开发了自己的库,比如Hystrix for Circuit Breaker、Eureka for Service Discovery、Ribbon for Load balanced等,在其组织中得到了广泛的使用。

然而,这些组件需要在应用代码中进行配置,而且语言不同,实现方式策略也会有所不同。在升级这些外部组件时,我们需要更新应用、验证并部署所有改动。如此便产生了一个问题,我们的应用代码编程了业务和这些附加配置混合体。这种紧密耦合增加了整个应用的复杂性——开发人员现在还需要了解这些组件是如何配置的,以便在遇到任何问题时能够排除故障。

Service Mesh适时出现,将复杂性从应用中分离了出来,并将其放入服务代理(service proxy)代为处理。这些服务代理提供了如流量控制、断路、服务发现、身份验证、监控、安全性等等功能特性。那么对于应用来说,只需要关心业务功能的实现即可。

假设在我们的微服务体系结构中,您有5个服务相互通信。与其在每个微服务中构建配置、路由、遥测、日志记录、断路等常见的必要功能,不如将其抽象为一个单独的组件——这里称为“服务代理”(service proxy)。

随着Service Mesh的引入,责任的划分变得清晰,开发人员的生活也更加轻松——如果存在问题,开发人员可以根据应用程序或网络相关的原因,轻松地确定根源。

Service Mesh是如何实现的?

要实现Service Mesh,可以将代理与服务一起部署,该模式被称为sidecar。

Sidecars抽象了应用程序的复杂性,处理了诸如服务发现、流量管理、负载平衡、线路中断等功能。

Lyft的Envoy是目前非常流行的云原生应用开源代理。特使在每个服务旁运行,并以平台无关的方式提供必要的特性。所有到我们的服务的流量都通过特使代理。

而Istio是一个连接、管理和保护微服务的开放平台。它在Kubernetes社区非常流行,并被广泛采用。

在这一点上,Istio是服务网格的最佳实现之一,它使我们能够在不深入了解底层基础设施的情况下部署微服务。

开源PaaS Rainbond在v3.6.0版本中加入了Service Mesh开箱即用的特性,主要特点包括业务代码无入侵、跨语言&跨协议、支持主流微服务架构、通过插件式扩展来实现治理功能等。


关于Rainbond

Rainbond是一款以应用为中心的开源PaaS,由好雨基于Docker、Kubernetes等容器技术自主研发,可作为公有云或私有云环境下的应用交付平台、DevOps平台、自动化运维平台和行业云平台,或作为企业级的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服务架构治理工具。
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Stella981 Stella981
3年前
28篇论文、6大主题带你一览CVPR2020研究趋势
  !(http://dingyue.ws.126.net/2020/0625/c176bdbej00qchkrg001ld200p000ang00it0080.jpg)  编译|陈大鑫  编辑|丛末  首度于线上召开的CVPR2020会议已经落下帷幕。今年,大会共有1467篇论文被接收,共举办了29个Tutorial、64
Wesley13 Wesley13
3年前
APNG 那些事
!(https://oscimg.oschina.net/oscnet/c4ad8907b66a37678c655eb00fbacb63c08.jpg)凹凸君: GIF存活29年之久,依然大行其道的今天,有没有更合适的动画格式?回答: 或许,可以聊聊APNG。关于APNGAPNG(AnimatedPor
Wesley13 Wesley13
3年前
vite1.0还没学呢 这就出2.0了?
!(https://oscimg.oschina.net/oscnet/d29bdf29db8b46f2bfcf8e1cc1993aaa.gif)前言今天逛微博的时候不小心看到了尤雨溪的一条微博:!(https://oscimg.oschina.net/oscnet/71fc3f8321804e8884e431dfcc5a
Wesley13 Wesley13
3年前
ASP.NET微信开发视频教程
ASP.NETMVC5&微信公众平台整合开发实战(响应式布局、JQueryMobile,WindowsAzure、微信核心开发)课程分类:ASP.NETMVC适合人群:中级课时数量:29课时用到技术:深入MVC开发模式、C核心语言特性、C核心语言特性(二)、视图引擎Razor涉及项目:体育商店、微信公众平台开发
Stella981 Stella981
3年前
Spring Cloud与微服务构建:Spring Cloud简介
SpringCloud简介<fontsize4微服务因该具备的功能</font微服务可以拆分为"微"和"服务"二字。"微"即小的意思,那到底多小才算"微"呢?可能不同的团队有不同的答案。从参与微服务的人数来讲,单个微服务从架构设计、代码开发、测试、运维人数加起来是8~10人才算"微"。那么何为"服务"呢?按照"微服务"概念
Wesley13 Wesley13
3年前
JavaWeb 调用接口
JavaWeb 如何调用接口CreateTime2018年4月2日19:04:29Author:Marydon1.所需jar包!(https://oscimg.oschina.net/oscnet/0f139
Stella981 Stella981
3年前
Jupyter notebook使用技巧大全
点击上方“蓝字”,轻松关注!(https://oscimg.oschina.net/oscnet/3a406a00d29b44568aebb8be9d319d3b.gif)JupyterNotebook简介JupyterNotebook是一款开源的web应用,它允许使用者创建和分享包含代码,公式,可
Stella981 Stella981
3年前
Service Mesh微服务架构的崛起
SAMIRBEHARA(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdotnetvibes.com%2F2018%2F07%2F02%2Ftheriseofservicemesharchitecture%2F)本文将解释ServiceMesh相关概念,为什么云原生应