2022云栖精选—以服务治理为基石 构建可管可控互联网应用架构

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 董振华阿里云智能 云原生应用平台

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

一、微服务落地与挑战    

image.png

CSDN今年发布中国开发者报告显示,有 40% 云原生开发者专注于微服务领域,其中有不少开发者非常关注服务编排、服务治理,这也符合阿里云典型用户上云过程的特点。

云上部署作为第一阶段,主要解决是如何将 IDC 内传统应用平滑迁移至云上。此阶段一般关注计算资源,应用往往不会做任何修改。用户上云以后,为了能够更好利用云上强大的调度弹性容错能力,会进行云原生化改造,将原虚机部署方式转为容器化部署。

随着业务发展,传统单体应用已经无法满足业务需求。用户需要进行微服务化改造,进一步提升开发迭代的效率。但随着微服数量越来越多,调用链路越发复杂,用户需要进入第四阶段:服务治理。从开发联调上线发布,从流量管控错误故障排查,进行全方位服务治理,进一步提升效率、稳定和安全性。

image.png

众所周知微服务并不是银弹,从微服务开发测试运行,用户面临各种问题和挑战。在开发阶段,如果微服务没有很好地进行拆分,所带来的问题可能会超过微服务架构本身带来的红利。开发人员需要非常规范 API接口以及统一配置管理才能提高开发迭代效率。而微服务之间调用链路非常复杂,会带很多不确定因素,排查故障也愈发困难。因此,我们需要有可靠微服务组件以及专业治理能力提高整个系统性能和稳定性,并且需要用户建立可观测以及故障排查能力。

通过服务集团内部项目以及外部商业化客户,阿里针对此类挑战积累了大量丰富经验,同时也开源了比如DubboSpringCloudAlibabaNacosSentinelArthas等优秀开源项目。


二、微服务引擎 MSE 3.0 发布

image.png

微服务引擎 MSE正是结合了阿里云微服务开源项目商业化方案以及双 11 大规模落地最佳实践提供面向业界主流开源微服务生态一站式平台,包含了原生网关、注册配置中心和微服治理三大能力。

用户可以自由选择一个或多个能力,并与其他云产品结合构建自己微服架构。业务应用无论是部署在 ECS 还是容器服务上,或是托管在EDASSAEPaaS平台上,都可以使用原生网关作为统一服务出口。监控服务日志服务可观测组件,获取从网关入口业务应用全链路可观测数据。注册配置中心解决了微服务间同步调用注册发现以及配置管理需求。异步逻辑通过消息队列实现。微服务治理,则支持了 SpringCloud Dubbo 近五年版本,用户无需修改任何一行业务代码,即可获得全链路流量控制能力,提升微服务系统稳定性和安全性。

image.png

2020年初,阿里云发布了MSE商业化服务1.0 版本提供了注册中心,主要解决服务间的注册发现以及通信问题,帮助用户快速构建应用。2.0版本新增了配置中心以及服务治理基本功能,比如服务查询以及无损下线,帮助用户快速提升开发运维效率,落地企业级能力。

今年,阿里云推出了 MSE3.0包括云原生网关以及全新服务治理中心。注册配置中心也全面升级,让用户享受到云原生时代下微服务最佳实践。

image.png

注册配置中心提供了 Nacos以及ZooKeeper 的商业化托管服务,并且兼容Eureka协议。在微服务场景下,除了服务注册发现Nacos还能集中管理分布式架构环境配置信息,降低用户管理配置成本。也有很多用户使用ZooKeeper托管服务,在大数据场景下比如HBase KafkaHadoopFlink集群中,使用专业ZooKeeper组件实现稳定高性能的分布式协调、分布式锁。

全新注册配置中心基于阿里巴巴DragonWell 构建,且进行了深度调优,性能较开源自建提升 40% 以上。可观测方面,我们开放了 70 多个资源和业务监控指标,让用户对整个系统运行了如指掌,且可与用户自建 Grafana 大盘进行对接,并且提供服务推送以及配置变更推送轨迹查询能力。如果用户遇了服务发现或配置变更没有生效问题,可以通过白屏化方式快速进行问题排查,提升效率。

另外在日常运维中,很多用户在实例容量节点配置以及客户端服务端版本方面均存在不少问题。最新推出的健康自检功能能够风险点进行自动评估,并将优化建议推送给用户,使用户实例处于健康状态。

MSE3.0提供了全白屏化迁移工具,使 NacosEurekaZooKeeper一键热迁移至托管实例,整个过程无需停机,避免对业务应用造成影响。

image.png

MSE3.0推出的云原生网关,兼容了 K8s ingress 标准,将负责南北向路由流量网关、东西向调度微服网关以及安全网关三合一。集成了 13 种阿里云产品,包括数字证书服务web应用防火墙、AHAS流量防护、IDaaSSLSARMS等,从安全、高可用、可观测方面提供了全方位能力。支持8种服务来源,无论是容器服务上 service 还是注册在NacosZooKeeper 微服务,亦或是托管在EDASSAE各种应用,甚至是传统通过固定地址暴露服务,都可以一键导入至原生网关中做统一管理,非常适合各种应用架构、部署方式并存场景。

性能方面,云原生网关经过了阿里双 11 高流量洪峰的检验,可以轻松应对数十万笔/交易,相比于自建 NGINX Ingress TPS 高出90%相比微服网关 ZUUL高出400%。通过硬件加速能力,HTTPS请求RT会进一步下降50%

通过插件市场机制,用户可以做多语言扩展,满足用户在安全、流量管控以及请求响应方面个性化需求。而且插件更新以及安全路由策略更新均毫秒级生效,对业务应用无感。

目前在阿里云 EDAS以及容器服务 ACK 控制台上, ingress 入口选型中已经提供了 MSE 云原生网关选择。需要特别提出的是,云生网关兼容Nginx ingress 核心注解,用户已有Nginx ingress 路由规则无需更改,原生网关可以自动监听,并在网关侧生效,实现几乎零成本平滑迁移。

我们的客户费芮互动原来使用的 Nginx ingress 业务应用混部有稳定性问题,而且缺少TLS版本设置、IP黑名单等功能,通过上述平滑迁移方式更换成云原生网,关完美解决了这些问题,高效支撑了大规模业务。

image.png

微服务规模发展到一定阶段,用户会出现服务治理需求。但相关技术实现较复杂,是困扰开发和运维同学难题。

以变更发布为例,很多IT 从业者都会有熬夜做新版本上线发布经历。这种方式一方面对开发运维人员的工作带来了极大不便,另一方面也无法满足业务快速迭代的需求。CNDN 报告也显示,有 44% 用户需要做不定时发布,更有甚者一周需要做上百次发布。如此频繁发布下前提下应用启停会对线上流量造成巨大影响,另外如果新版本有 bug 引发大面积生产故障也是灾难性的事故。

而微服务治理无损上下线和全链路灰度可以完美解决上述问题。阿里在微服务治理方面积累了近十年的经验我们将微服务治理能力产品化产品基于 Java agent 全面兼容开源拥抱 K8s 用户无需修改业务代码,也无需担心被厂商锁定,只需在 K8S 集群中安装组件,就可以针对命名空间或应用开启治理

服务治理覆盖了微服务开发测试到运行的整个生命周期,提供了数十种功能。技术同学无需再花费大量精力自己实现相关功能,帮助开发测试提效50%,微服落地周期降低30%


三、利用 MSE 落地微服务最佳实践

image.png

生产环境绝大多数故障自于变更发布,阿里提出的安全生产三板斧包括可灰度可观测、可回滚,首要是可灰度。在微服务数量众多情况下,如果为每一个新版本都构建一套独立灰度环境,需要付出巨大的运维成本和资源成本。而现在,通过 MSE全链路灰度能力,只用部署一套稳定基线环境,再针对有新版本的服务,额外部署对应实例节点并进行打标,同时对灰度流量进行特征规则设置。灰度流量经由原生网关可以动态路由至对应版本实例节点,并向下传递。如果没有新版本,选择基线环境,再往后传递,最终形成了一条一条逻辑隔离流量泳道。方案支持了多种网关,SpringCloudDubbo微服务框架,以及RocketMQ 和数据库组件,用户能够快速低成本验证自己新版本,消除 80% 以上变更风险。电科技使用 MSE构建了全链路灰度能力大幅提高了发布效率和稳定性,降低了运维成本。

除了线上灰度发布流量治理也可以拓展至开发环境隔离场景。在微服务开发环节feature 变更点可能分散在不同微服务应用,涉及不同开发团队多个 feature 可能同时进行开发测试,所以需要非常好地进行协同,又不互相干扰。最简单办法是为每个feature提供一套独立物理资源成本过高。

与全链路灰度发布同理,在开发测试环境中只用部署一套稳定基线环境再单独部署各 feature需要改动的应用。通过打标及流量特征设置,让不同流量能够在不同 feature 环境和基线环境中正确流转。对于开发人员而言这与独立环境效果相差无几。

致景科技正利用原生网关和服务治理构建开发测试环境,将构建周期从天级降至分钟级,开发测试资源使用量降低80%实现了其数智化综合服务平台的快速迭代。

image.png

稳定性治理方面, MSE覆盖了从云原生网关应用层缓存、数据库以及第三方依赖全方位高可用防护。比如通过服务预热以及无损上线,对于新启动应用节点,可以实现流量渐进递增,避免了应用在启动时因为来不及初始化被大流量击垮。通过无损下线主动通知能力,使得服务提供方停止时不会再被调用,防止流量受损。

在大流量场景下,通过网关层粗粒度规则设置以及应用层接口细粒度防护规则,可以进行整体流量防护。对于慢 SQL 以及不稳定第三方应用,可以快速识别隔离,避免 DB 连接池打满线程资源无法释放各种问题。

万师傅和云优选使用 MSE无损上下线以及流量防护能力,实现了应用发布以及扩缩容时流量无损,大促业务高峰期保证系统稳定性。

image.png

信任安全也是现在企业越发关注的问题。MSE在原生网关入口层面,支持了从入口以及出口后端 TLS 双向认证。在认证鉴权上,除了JWTOIDC标准认证服务也支持用户自定义鉴权,且集成了 IDaaS可支持第三方认证机制。对于恶意流量,云原生网关集成了阿里云web应用防火墙,可以实现路由级别细粒度的安全防护。通过插件市场,可以选用数十种安全插件或自定义插件进行能力扩展。

应用层,用户可以在微服务治理中心配置服务间调用策略,进一步降低应用内部安全风险。注册配置中心支持 RAM 鉴权以及基于 KMS 配置加密,可以防止应用实例信息配置信息敏感数据恶意篡改和访问。


四、拥抱开源 贡献开源

image.png

MSE产品全面拥抱开源近期重磅发布了两个开源项目OpernSergoHigress

在微服务治理领域,各家企业更多的是在落地解决一个一个的问题,而最终能够实现的能力和边界,业界并没有统一标准,这也使得开发人员在沟通和理解上存在一定成本。而且微服务领域存在很多组件以及开源框架,不同框架配置和规则下发逻辑不兼容,导致各种组件和框架无法进行统一治理和协调。

OpenSergo 旨在提供一套开放通用、面向原生服务、覆盖微服务上下游组件治理标准与实现。

在控制面,用户可以通过 CRD 方式查询更新服务治理配置,并下发管控规则至数据面。OpenSergo Spec规定了控制面和数据面的通信约定,确保用户使用一种 Spec 即可描述不同框架、不同协议、不同语言的微服务架构。在数据面,无论用户是通过 SDK Java agent 还是Sidecar方式接入OpenSergo都可以正确接收控制面下发治理规则,进而应用在自己业务流量最终实现异构微服务之间相互通信以及统一治理。

阿里已经联合了字节、B 站等多家企业、多个社区一起合作,共同建立开放标准计划覆盖网关、服务框架、消息数据库、缓存更多开源组件。我们也欢迎更多微服务领域开源方加入我们丰富OpenSergo覆盖范围,帮助更多企业落地微服治理。

image.png

本次云栖大会也重磅开源了原生网关 Higress

Higress从阿里内部孵化开发,电商交易等核心场景进行大规模生产验证,到MSE进行商业化,至今已有两年半的历程。Higress开源 IstioEnvoy核心,除了兼容 K8s ingress 也遵循了社区正在推进新一代 Gateway API 可以通过 K8S CRD 方式管理实例生命周期,进行规则以及策略配置和更新,也支持OpenKruise Roolout灰度发布

Higress将流量网关 + 微服务网关 + 安全网关三合一,能够极大的降低网关的部署及运维成本。通过支持开源注册中心,限流降级,以及监控组件,它可以统一订阅广泛的服务来源,并提供完善的大流量防护和可观测能力。Higress的插件市场,提供丰富的默认插件,包括WAF防护、认证鉴权、协议转换等,方便用户在安全、服务管理等方面进行扩展。除了WasmLua插件,它还将支持进程外插件扩展机制,让用户可以用自己熟悉的语言编写插件。很多开源网关做配置变更,需要reload 引起流量抖动。Higress的路由、安全规则,WASM 插件都支持热更新,规则变更毫秒级生效且业务无感知。

上述所有特点经过生产验证,让Higress有了很好起点。也欢迎感兴趣小伙伴加入我们,一起将Higress不断迭代演进。最后,也希望通过MSE产品的持续演进,微服务开源项目的社区共建,以及用户们的支持和参与,将互联网应用架构推向新的阶段。

lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
15天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
14天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
11天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
55 4
|
9天前
|
Kubernetes API Docker
构建高效后端服务:微服务架构的深度实践与优化####
本文深入探讨了微服务架构在现代后端开发中的应用,通过剖析其核心概念、设计原则及实施策略,结合具体案例分析,展示了如何有效提升系统的可扩展性、可靠性和维护性。文章还详细阐述了微服务拆分的方法论、服务间通信的最佳实践、以及容器化与编排工具(如Docker和Kubernetes)的应用技巧,为读者提供了一份全面的微服务架构落地指南。 ####
|
14天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
43 5
|
15天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
13天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
13天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
20天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
2天前
|
监控 持续交付 API
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
9 0
下一篇
无影云桌面