微服务用户为什么要用云原生网关

简介:下文将为你解说云原生网关如何助你解决一系列痛点,优雅玩转云上微服务架构升级。

作者:百丈

随着云原生技术的发展,微服务的架构选型也是日新月异。在 Kubernetes 重塑运维体系的云时代,我们在安全、降本提效、精细化运营等方面都有了更高的要求和更多的选择。曾经关炙手可热的 Zuul/SpringCloud Gateway/Kong 等在其网关位置上开始显得力不从心。它们欠缺发现容器服务的能力,性能可能不如 Nginx Ingress,可观测、安全等方面都需要二次开发再集成,这些关键短板都阻碍着技术发展。今天来看云原生网关如何助你解决这些痛点,优雅玩转云上微服务架构升级。

微服务(网关)的发展

微服务发展大事记

随着 Martin Fowler 在 2014 年的文章总结梳理 [1]“微服务”概念开始逐渐深入人心。之后各类开源或商业支持如雨后春笋般涌现,到如今笔者按年份简单整理了每年的大事记,其中两个变化值得大家需要关注:

  1. 微服务从单点支持向平台解决方案发展,例如 SpringCloud 解决方案、 Kubernetes 体系。
     
  2. 开源和商业产品融合得更加紧密,云原生的发展让技术从业者有了更多的选择。

微服务网关的变化

笔者按时间整理了几个简单对比:

  1. 2013 ZUUL:Netflix 开源的负载均衡组件,简单易上手,不过早期的 ZUUL 1 性能上限稍低。
  2. 2015 KONG:基于 Nginx 的 API 网关,性能强劲,Lua 国内开发者相对较少。
  3. 2016 SpringCloud Gateway:网关开始作为整个微服务解决方案的门面出现。
  4. 2019 Ambasssador(现在更名 Emissaey-ingress):支持 Kubernetes ingress 标准,且与 Istio 无缝集成。

微服务逐步向平台解决方案发展的同时,对网关的集成能力也有了更高的需求。这也是我们看到了这个趋势,云原生网关应运而生,而且云原生网关不仅集齐了他们的优点,而且功能更丰富、性能更强劲、稳定更可靠。  

Kubernetes 微服务

这里为什么单独提 Kubernetes 微服务?这需要回到没有 Kubernetes 的时候采用微服务架构我们碰到哪些问题?

  1. 拆分了微服务后相应的构建部署工作量开始翻倍,运维压力急剧提升;
  2. 随着业务迭代,微服务之间调用链路变的复杂,强弱依赖不清晰,故障/瓶颈排查困难;
  3. 不同业务团队使用异构的服务框架或技术栈,相互依赖集成成本增加。

通过合理的拆分服务可以降低协作成本及控制变更风险,这是微服务思想带来的价值,然而随之而来的也有巨大的治理难度和运维压力。

不过 Kubernetes 以其完整的网络、服务、负载均衡的标准定义似乎解决了我们不少问题。

统一的服务定义及服务发现机制

得益于 Kubernetes 的网络模型和 Pod 标准,Kubernetes Service 可以将运行在一组 Pods  [2]上的应用程序抽象为网络服务(Kubernetes 微服务),你无需修改应用程序即可使用不熟悉的服务发现机制。Kubernetes 为 Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。

userspace 代理模式:

iptables 代理模式:

IPVS 代理模式:

负载均衡 Ingress 标准

Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。流量路由由 Ingress 资源上定义的规则控制。

有了容器及 Kubernetes 的运维调度能力及标准服务、负载均衡基础,微服务架构可以往更高的层次发展,满足更多技术场景。

技术趋势及痛点

云原生时代的高要求和可选择

Kubernetes 是好,同时其庞大的体系和众多的概念标准也给技术从业者带来了学习成本,DevOps 似乎比之前多了不少的工作量,好在云原生时代,商业化产品满足高要求的同时给了我们更多的选择。

上图展示了在代码中通常包括三部分:业务代码、三方软件、处理非功能特性的代码。其中“业务代码”指实现业务逻辑的代码;“三方软件”是业务代码中依赖的所有三方库,包括业务库和基础库;“处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。

从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、 可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。

精细化运营的需求

微服务架构的一路发展过来,从简单的拆分服务到服务发现机制,再到支持 Sidecar 代理治理流量,最终的形态是什么样的?或者我们技术需求是怎么样?

简单的拆分

服务发现机制

Sidecar代理流量

云原生架构成熟度模型 & API 安全质量报告

在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、 可用性与安全性。应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性, 降低应用架构的复杂度。云原生的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、 可控制性、可容错性等特性。

我们可能需要类似上述一个模型描述架构在服务化能力、弹性能力、可观测性及自动化能力等维度的成熟度,虽然这样比较全面,似乎不太适合总结沟通。如果用简单概念来描述,笔者总结几个阶段层次:

  1. 极致弹性:应对突发流量,弹性能力是重要的手段,是否极致对应着故障的恢复速度,弹性能力有时候还依赖于服务化程度。
  2. 可观测体验:能够应对突发流量后开始关注性能优化及故障处理,体系化的可观测体验及指标数据对我们的治理工作至关重要。
  3. 故障无感自愈:能够 360 度发现问题就能总结规律制定常用的预案及检查机制,常规故障即可自动化恢复。

最重要的结果衡量还有我们用户的体验,比较好代表用户的应该就是 API 安全质量报告,如果 API 的可用率提升了,如果 API 的响应 RT 减少了,这显然说明架构升级/治理给我们带来了巨大的价值,满足精细化运营的需求。

架构升级的痛点

架构升级(治理)能带来的价值有目共睹,甚至我们也有了相关架构持续演进的闭环方法论。

网关作为技术架构的门面,在架构整体成熟度的度量及可持续演进集成兼容等方面至关重要,以网关作为架构治理升级的切入口是个不错选择,但是,有些痛点还是实实在在的摆在我们面前:

  1. 怎么发现当前微服务架构的问题?
  2. Kubernetes Ingress 后面再部署微服务网关影响性能吗?
  3. 用户登录鉴权逻辑能否集中处理/升级?
  4. 多个 Kubernetes 集群是否可以共用一个网关?
  5. 同时使用 SpringCloud 和 Kubernetes svc 怎么灰度?

此处只是稍作举例,实际的痛点大家深有体会,开源产品往往和我们的业务需求不是那么匹配,接下来看云原生网关是如何解决这些问题的。

云原生网关的优势

云原生网关=流量网关+微服务网关+?

云原生网关从开始就一直在强调,将流量网关(Kubernetes Ingress、Nginx)和微服务网关(Spring Cloud Gateway、Zuul 网关等)二合一,降低 50%资源成本,同时缩短了请求时间,降低运维复杂度。

仅仅只是二合一显然不够满足我们的期望,看看它还有什么:

  1. 开箱即用, 默认支持全局看板、实例监控、日志检索、业务 TOP 榜、日志投递、链路追踪及报警管理等体系化可观测能力,让你轻松了解微服务及 API 质量情况。
  2. 卓越的性能,详见下文性能更强劲。
  3. 支持 Ingress 标准,Kubernetes 体系首选网关产品。
  4. 多种服务发现,支持 ACK 容器服务、Nacos 等多种服务发现方式,可以同时接入多个 Kubernetes 集群。
  5. 基于 envoy+istio 实现,完美兼容服务网格,技术大势所趋。

功能更丰富

除了体系化的可观测能力,还有完整的安全防护能力、丰富的服务/流量治理能力、生产大规模实践的高可用经验以及精细化的 API 管理和扩展支持。  

性能更强劲

压测结果:

  • 云原生网关的 TPS 基本是 SpringCloud Gateway 的 2 倍,是Zuul 1 的 5 倍。
  • 云原生网关的 TPS 相比 Nginx Ingress 高出约 90%。

稳定更可靠

  • 自内部 2020.5 上线,云原生网关已在支付宝、钉钉、淘宝、天猫、优酷、飞猪、口碑等阿里各业务系统中使用,两年以来可用率 100%,无任何故障
  • 历经 2020、2021 双 11 海量请求的考验,大促日可轻松承载每秒承载数 10 万笔请求,日请求量达到百亿级别。

重磅功能层出不穷

原文链接

本文为阿里云原创内容,未经允许不得转载。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15 分钟实现企业级应用无损上下线

简介:很多用户量大并发度高的应用系统为了避免发布过程中的流量有损,一般选择在流量较小的半夜发布,虽然这样做有效果,但不可控导致背后的研发运维成本对企业来说是一笔不小的负担。基于此,阿里云微服务引擎 MSE 在应用…

基于 Observable 构建前端防腐策略

简介:To B 业务的生命周期与迭代通常会持续多年,随着产品的迭代与演进,以接口调用为核心的前后端关系会变得非常复杂。在多年迭代后,接口的任何一处修改都可能给产品带来难以预计的问题。在这种情况下,构建更稳健的前端…

动态卡片:富媒体内容井喷式增长下,新一代移动端动态研发的模式

简介:「蚂蚁动态卡片」新品发布会全程回顾 在 iOS 和 Android 系统近期推送的更迭版本中,系统环境已经逐渐发展出了将部分内容和服务前置化展示的趋势。 同时,伴随着富媒体内容井喷式增长以及内容的多样化、年轻化,一款移动应用…

Windows 上创建的文件,上传到 Linux 服务器,文件名乱码?

作者 | 刘光录来源 | TIAP先来说一下问题,在 Windows 下创建的一系列文件,上传到 Linux 服务器后,出现文件名乱码,导致文件无法读取的情况。事情的起因是这样的...最近有这样一个需求:在Java Web工程中读取本地某一个文…

阿里云成为首个通过“虚拟化云平台性能测试(大规模)”的云厂商

简介:2021年7月27日,在可信云大会上,中国信息通信研究院发布了《虚拟化云平台性能评估方法》,同时,宣布了阿里云成为首个通过“虚拟化云平台性能测试(大规模)”的云厂商,并获得“202…

阿里云神龙团队拿下TPCx-BB排名第一的背后技术

简介:阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000世界排名第一的成绩。 一 背景介绍 近日,TPC Benchmark Express-BigBench(简称TPCx-BB)公布了最新的世界排名,阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000排名第…

从中国移动财报透视:什么在支撑移动云发展韧性?

8 月 11 日,中国移动公布 2022 年中期业绩报告。报告显示,上半年中国移动营运收入达人民币 4969 亿元,同比增长 12.0%。净利润 703 亿元,同比增长 18.9%,盈利能力全球领先。其中,移动云收入达人民币 234 亿…

vue 前期准备,项目结构

环境 1、node -v 检测 没有就下载node,装到C盘 http://nodejs.cn/download/ 2、vue -v 检测 没有就 npm install -g vue/cli 或者 yarn global add vue/cli 安装脚手架 网址 https://cli.vuejs.org/zh/ 也可以从网址里找到…

如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始

简介:业级应用架构是在不断的演进和迭代,但是我始终感觉企业应用架构的形成过程是在一种看起来科学的方法论下,但是又不完全科学的过程中实现的。 作者:焦方飞 大年初一,看完中国队 1:3 越南队的比赛,在思…

如何从容应对复杂性

简介:软件的复杂性,是一个很泛的概念。但是一直都是开发过程中的一个难题,本文旨在探讨如何去从容应对复杂性。 作者 | 無涯 来源 | 阿里技术公众号 软件的复杂性,是一个很泛的概念。 但是一直都是开发过程中的一个难题&#xf…

阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec

简介:经历6年时间,在各团队的努力下,阿里巴巴集团大规模稀疏模型训练/预测引擎DeepRec正式对外开源,助力开发者提升稀疏模型训练性能和效果。 作者 | 烟秋 来源 | 阿里技术公众号 经历6年时间,在各团队的努力下&#…

产学融合如何促进技术创新,英特尔打了个样

作者 | 宋慧 出品 | CSDN 经过多年的积累与扎实科研,中国的科学与技术水平正在达到和超越世界一线水平。这离不开中国有基数庞大的用户和应用场景,为科学界和工业界提供了将理论付诸实践的机会,反复打磨迭代,以提升技术指标。 作…

3大能力升级,云效+钉钉,让研发协作更「敏捷」

简介:你的团队是否面临如下问题:没有敏捷经验,不知道如何落地敏捷或者敏捷实施不规范?研发交付过程信息更新不及时,无法及时跟进交付结果?员工入职离职,多套账号权限管理难?缺乏交付…

阿里云张献涛:自主最强DPU神龙的秘诀

简介:读懂云计算,才能看清DPU热潮。 微信公众号搜索“弹性计算百晓生”,获取更多云计算知识。 如果细数最近火爆的科技概念,DPU必然位列其中。 这是英伟达一手捧红的新造富故事,是2021年SoC领域最热火朝天的创业赛道…

Gartner发布2022年新兴技术成熟度曲线,推动沉浸式、AI自动化发展

编辑 | 宋慧 供稿 | Gartner Gartner 2022年新兴技术成熟度曲线列出了25项值得关注的新兴技术,这些技术正在推动沉浸式体验的发展和扩展、加速人工智能(AI)自动化并优化技术人员交付。 Gartner研究副总裁Melissa Davis表示:“新兴…

阿里云张献涛:公共云正不断向外延伸,一云多态是未来趋势

简介:一云多态是公有云的未来趋势,包括产品的多形态、部署的多形态和生态的多形态。 编者按:2021年10月22日,在云栖大会《一云多形态部署最佳实践》分论坛,阿里巴巴集团研究员、阿里云弹性计算产品线负责人张献涛发表…

4种典型限流实践保障应用高可用|云效工程师指北

简介:4种典型限流实践保障应用高可用,本文总结了一份AHAS限流实践指南,如果你的系统有被恶意用户攻击的风险,或者系统中某个应用出现异常可能会造成雪崩效应,那么这篇文章会对你有所帮助。 大家好,我叫黄博…

阿里巴巴云原生大数据运维平台 SREWorks 正式开源

简介:阿里巴巴云原生大数据运维平台 SREWorks,沉淀了团队近10年经过内部业务锤炼的 SRE 工程实践,今天正式对外开源,秉承“数据化、智能化”运维思想,帮助运维行业更多的从业者采用“数智”思想做好高效运维。 作者 | …

阿里云 VPC 内网性能测试最佳实践

简介:本文介绍了在阿里云 VPC 内网执行性能测试的方法。相较于传统的公网性能测试,VPC 内网性能测试完全在客户 VPC 环境进行,无需暴露服务到公网,安全性更高,灵活性更强。 作者:风起 背景 随着互联网的快速发展&am…

​在可视化大屏中轻松完成机器学习建模和调参应用实例

Streamlit 是一个开源 Python 库,可帮助开发人员为其系统创建交互式图形用户界面。它专为机器学习和数据科学家团队设计。使用 Streamlit,我们可以快速创建交互式 Web 应用程序并进行部署。前端工作对数据科学家来说并不重要,他们只想要一个小…