当前位置:网站首页>阿里云中间件开源往事
阿里云中间件开源往事
2022-07-06 18:34:00 【InfoQ】
- Apache Dubbo:同步架构通信,从 RPC 框架到全面拥抱云原生基础设施
- Apache RocketMQ :异步架构通信,从 Messaging 到 Streaming 和 Eventing
- Nacos:从架构下沉到关键组件,持续突破性能瓶颈,市场占有率已经超过50%
- Sentinel:首次涉及服务治理领域,但不止于限流降级,即将发布里程碑版本2.0
- Spring Cloud Alibaba:对国内开发者、阿里云、Spring 三方来说,都是一个好消息
- Arthas:一款工具型开源项目,Stat 即将突破 3w
- ChaosBlade:业务稳定,不仅需要事中限流降级,更需要事前故障演练
- Seata:让分布式事务的使用像本地事务的使用一样,简单和高效
- AppActive:Sentinel、ChaosBlade、AppActive,高可用三家马车成功集结
- OpenSergo:解决日益增长的微服务框架混用企业的服务治理难
从 RPC 框架到全面拥抱云原生基础设施


Dubbo3.0 的发布,也源自全面拥抱云原生基础设施的核心演进方向
- Dubbo 3.0 支持应用级服务发现:Dubbo 原本采用接口级别的注册方式,存储在注册中心中的数据会在很大程度上存在重复的内容,随着服务规模的增长,注册中心的数据量就会爆发式地增长,支持应用级服务发现后,不仅大大减少注册中心的内存压力,以获得更强的性能,更重要的是,打通了与其他微服务体系之间在地址发现层面的鸿沟,这是在适配 Kubernetes 等基础设施上,走出的重要一步。
- Dubbo 3.0 提出了下一代 RPC 协议 —— Triple:这是一个基于 HTTP/2 设计的完全兼容 gRPC 协议的开放性新协议,具有极高的网关友好型和穿透性,完全兼容 gRPC 协议是的天然在多语言互通方面上具有优势。这也解决了上一代协议中生态不互通、协议头无法再承载更多元数据信息的问题。
从 Messaging 到 Streaming 和 Eventing

- 首先,消息核心场景全面扩展,RocketMQ 5.0 不再局限于消息解耦场景,将消息的应用场景从 Messaging 拓展到了 Streaming 和 Eventing 领域;
- 其次,技术架构不断演进,逐渐形成一站式融合处理的技术架构和趋势。
技术人的仲夏之夜

- 服务发现性能不够强:在 10W、5W 级客户端下,服务端完全处于 Full GC 状态,推送完全失败,集群不可用;在 2W 客户端规模下,虽然服务端运行状态正常,但由于心跳处理不及时,大量服务在摘除和注册阶段反复进行,因此达不到稳定状态,CPU 一直很高;1.2W 客户端规模下,可以稳定运行,但稳态时 CPU 消耗是更大规模下 2.0 的 3 倍以上。
- 配置管理性能不够强:连接客户端数量达到 6000 时,稳定状态的 CPU 一直很高,且 GC 频繁;当客户端规模达到 1.2w 时,已经无法达到稳态,所以无法支撑这个量级的客户端数。推送规模达到 3000TPS 时,占了 80%的 CPU 资源;一旦达到 6000TPS 时,CPU 资源上升到了 90%。


- 流量控制:某个服务的上限是 1 秒处理 3000 个 QPS,但如果实际情况遇到高于3000的 QPS 该如何解决呢?Sentinel 通过流量统计的方式,当流量超过阈值,会帮助服务通过直接拒绝、冷启动、匀速器三种方式来应对,从而起流量控制的作用。
- 熔断降级:服务之间会有相互依赖关系,例如服务 A 1 秒可以处理上万个 QPS,但服务 B 不具备这么高的处理能力,那么如何保证服务 A 在高频调用服务B时,服务 B 仍能正常工作呢?Sentinel 通过对并发线程数进行限制和响应时间上对资源进行降级,这两种手段来实现熔断或降级,从而保证服务 B 可以正常工作。

夏天过后,开源的热度仍在延续


从分布式应用架构到分布式应用治理


- 分钟级 RTO:恢复时间快,阿里内部生产级别恢复时间平均在 30s 以内,外部客户生产系统恢复时间平均在 1 分钟。
- 资源充分利用:资源不存在闲置的问题,多机房多资源充分利用,避免资源浪费。
- 切换成功率高:依托于成熟的多活技术架构和可视化运维平台,相较于现有容灾架构,切换成功率高,阿里内部年切流数千次的成功率高达 99.9% 以上。
- 流量精准控制:应用多活支持流量自顶到底封闭,依托精准引流能力将特定业务流量打入对应机房,企业可基于此优势能力孵化全域灰度、重点流量保障等特性。

- 控制面:开发者可以通过 CRD 或者 Dashboard 的方式查看、修改服务治理配置,并将这些管控信息下发到数据面,从而 统一了服务治理的规则,开发者不必再绑定到某个开源方案、某个云厂商提供的服务上。
- 数据面:JavaAgent、Servcie Mesh、各个接入 OpenSergo 的微服务框架都能够接收到服务治理配置,并应用到当前的业务流量中。各个数据面都能够认可 OpenSergo 规定的服务治理配置、流量标签等信息,确保降低开发者理解成本。
- OpenSergo Spec:Spec 规定了控制面和数据面的通信约定,确保用户使用一种 Spec 即可描述不同框架、不同协议、不同语言的微服务架构,让开发者不再需要关注底层差异。



边栏推荐
- Baidu flying general BMN timing action positioning framework | data preparation and training guide (Part 1)
- Related programming problems of string
- Modify the system time of Px4 flight control
- BigDecimal 的正确使用方式
- String to date object
- Appium automation test foundation uiautomatorviewer positioning tool
- 一片葉子兩三萬?植物消費爆火背後的“陽謀”
- Image watermarking, scaling and conversion of an input stream
- Box stretch and pull (left-right mode)
- MySQL最基本的SELECT(查询)语句
猜你喜欢
Cisp-pte practice explanation (II)
Analyze "C language" [advanced] paid knowledge [II]
ROS learning (21) robot slam function package -- installation and testing of orbslam
Shell script quickly counts the number of lines of project code
Introduction to microservice architecture
Baidu flying general BMN timing action positioning framework | data preparation and training guide (Part 2)
C语言关于链表的代码看不懂?一篇文章让你拿捏二级指针并深入理解函数参数列表中传参的多种形式
ROS学习(26)动态参数配置
刨析《C语言》【进阶】付费知识【完结】
ROS learning (24) plugin
随机推荐
新工作感悟~辞旧迎新~
New job insights ~ leave the old and welcome the new~
场景实践:基于函数计算快速搭建Wordpress博客系统
Mongodb checks whether the table is imported successfully
First experience of JSON learning - the third-party jar package realizes bean, list and map to create JSON format
Blackfly s usb3 industrial camera: buffer processing
FLIR blackfly s industrial camera: auto exposure configuration and code
How did partydao turn a tweet into a $200million product Dao in one year
JS how to quickly create an array with length n
Time synchronization of livox lidar hardware -- PPS method
String to date object
Mysqlbackup restores specific tables
一文带你走进【内存泄漏】
FLIR blackfly s industrial camera: synchronous shooting of multiple cameras through external trigger
FLIR blackfly s industrial camera: configure multiple cameras for synchronous shooting
Batch delete data in SQL - set in entity
Analyze "C language" [advanced] paid knowledge [i]
STM32F4---PWM输出
Unicode string converted to Chinese character decodeunicode utils (tool class II)
微服务架构介绍