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

简介: 董振华阿里云智能 云原生应用平台

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
4月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
620 51
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
985 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
4月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
4月前
|
传感器 人工智能 算法
分层架构解耦——如何构建不依赖硬件的具身智能系统
硬件与软件的彻底解耦,并通过模块化、分层的架构进行重构,是突破这一瓶颈、构建通用型具身智能系统的核心基石。这种架构将具身智能系统解耦为三个核心层级:HAL、感知决策层和任务执行层。这一模式使得企业能够利用预置的技能库和低代码工具快速配置新任务,在不更换昂贵硬件的前提下,实现从清洁机器人到物流机器人的快速功能切换。本文将通过对HAL技术原理、VLA大模型和行为树等核心技术的深度剖析,并结合Google RT-X、RobotecAI RAI和NVIDIA Isaac Sim等主流框架的案例,论证这一新范式的可行性与巨大潜力,探讨硬件解耦如何将机器人从一个“工具”升级为“软件定义”的“多面手”,从而
674 3
|
4月前
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。
|
3月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
6月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
308 0