社区胜于代码,我们在阿帕奇软件基金会亚洲大会聊了聊开源中间件的未来

开发者们在开源社区建立起信任,信任是万事的第一步。

为期 3 天的阿帕奇软件基金会亚洲大会(CoC Asia)结束了。CoC Asia 至今举办过 4 届,今年是第二次举办线下会议,这里也是阿帕奇社区开发者们每年一次的网友见面会,大会汇集了 Microservic、Streaming&Messaging、Data、Performance、AI、Websocket 等多个技术领域的 session。

"Community over Code"是阿帕奇软件基金会的核心理念之一,强调社区协作和人的价值高于代码本身。这个理念体现了 ASF 对于开源项目成功的深刻理解,即项目的成功不仅仅依赖于代码的质量和创新,更依赖于背后的支持和推动项目的社区。这可能也是众多开发者线下大会遇见时,有共同语言、迅速拉近彼此关系熟、产生信任的原因。

今年我们在大会第一天的主论坛做了 《阿里云中间件持续进化:从分布式应用架构向云原生 AI 应用架构全面升级》 的演讲,从云厂商的视角分享了贡献开源、推动社区发展的过程。

Apache RocketMQ PMC 林清山

阿里云中间件关键演进历程

  • 阶段 1:分布式互联网架构,彻底告别 IOE,发布 Dubbo/HSF、RocketMQ/Notify、TDDL、Diamond、VIPServer 等一系列划时代的互联网中间件产品。
  • 阶段 2:云原生应用架构,迈向云计算时代,从服务阿里走向服务外部客户,演进云原生架构,提供 Serverless 化中间件云服务。
  • 阶段 3:AI 原生应用架构,面向 AI 原生应用架构,持续演进中。

分布式互联网架构

第一个阶段是分布式互联网架构阶段,最初阿里的电商系统是个庞大的单体巨石应用,在研发效率、稳定性方面都无法满足淘宝、天猫飞速的发展。为了解决这个问题,2008 年阿里发起一次最大规模的架构升级,启动了“五彩石”项目,把单体应用拆分成分布式应用,同时抽象淘宝、天猫的共同底座-共享业务平台,包括交易中心、商品中心、用户中心、库存中心等,在共享业务之上支撑丰富的阿里集团业务,包括淘天、菜鸟、饿了么、闲鱼等等。在共享业务平台之下,诞生了阿里中间件(初期三大件包括消息、RPC、分布式数据层),为电商的分布式互联网架构提供坚实的技术基础。

采用分布式应用,使得阿里电商的系统和团队结构能够按照小型化的业务单元划分,以“高内聚、低耦合”的方式高效协作。

引入分布式互联网架构后,除了提升业务迭代效率之外,也同时解决了双十一极限流量场景的性能、成本问题,整个电商体系具备更强的横向扩展能力。持续多年翻倍的双十一流量峰值,无论是应用、中间件、数据库都可以通过横向扩容来解决。

他山之石可以攻玉,阿里的分布式互联网架构升级采用了大量的开源技术,是开源技术的受益者。这个过程中,我们也基于阿里电商特有的业务场景和流量规模,自主创新,研发了多个更加适合于大规模互联网业务的中间件。我们认为这些中间件对于大型互联网业务具有普适性,未来能解决其他公司可能遇到的问题,于是决定回馈开源。2012 年,阿里云中间件将最核心的消息队列 RocketMQ、RPC 框架 Dubbo 开源,开启了阿里云中间件持续十多年的开源旅程。

云原生应用架构

第二个阶段,我们迈向了云计算的时代,云计算是信息技术发展到一定阶段的必然产物。从需求方来讲,随着移动互联网的普及,企业为了更高效触达消费者、加速业务创新、提升运营效率,都在进行全面的数字化转型。这个过程中,将产生大量的算力需求和软件研发需求。从供给侧来讲,各大互联网公司作为数字化的先行者,积累了领先的基础软件技术和庞大的算力资源,把算力和基础软件产品化、商业化,具备以云计算形态服务外部客户的能力。

在云计算的背景下,关于如何更好的用云,又诞生了云原生的理念。所谓的云原生就是云上原生的软件,云原生架构就是能最大化释放云计算红利的架构。对于云原生应用来说,需要进行微服务改造、采用容器化编排、自动化运维,实现业务敏捷;对于云原生基础软件而言,我们更多的听到的是存算分离,极致弹性,对应用提供 Serverless 化的按量付费服务。

面向云原生技术趋势,阿里云中间件全面进化为云原生中间件,帮助云原生应用规模化落地。云原生应用形态一般以微服务、Serverless 应用为主。

  • 面向微服务形态,发布 SpringCloudAlibaba;支持 ServiceMesh,支持  Sidecar、Proxyless 等多种 Mesh 形态接入方案;治理能力增强,如高可用、混沌测试。
  • 面向 Serverless 应用形态,应用会进行更频繁的弹性伸缩,针对弹性伸缩场景:RocketMQ 5.0 发布轻量无状态 SDK,无分区负载均衡,使得应用弹性和消息服务弹性能够解耦;Dubbo 基于 GraalVM 完成对 Native Image 的支持,加快 Serverless 应用冷启动速度;发布 Serverlessdev,提供全方位的 Serverless 应用工具链。
  • 拥抱 K8s 生态,Higress支持 Ingress  K8s 的网络通信标准规范、支持 xDS 协议
  • 拥抱云原生观测标准,发布 ilogtail,支持 Opentelemetry。
  • 除了支撑云原生应用之外,我们自身的消息引擎也进行云原生架构升级,RocketMQ 发布 5.0,基于云存储的存算分离架构,更高弹性、更低成本;支持多种开源标准协议,gRPC、MQTT、AMQP、CloudEvent。

在这个阶段我们能看到云计算和开源飞速发展,两者属于互相促进、共同成长的关系,本质原因是他们共同通过变革生产关系来提高软件行业生产力。开源改变了软件开发模式,通过开源社区能够快速获取开发者的需求反馈,也能吸引数百数千个开发者协同共建,加速开源软件迭代效率。开源也打破了技术烟囱,促成了软件的标准化,标准化又进一步提升了产业协同效率。云计算则是改变了软件交付方式,让基础设施、基础软件服务化,客户开箱即用,按量付费,为企业数字化降本提效。

也是在这样的背景下,阿里云中间件将开源作为核心战略,从原来的小范围开源、开源少量项目,到如今的全面开源,在这个阶段,已经开源了十多款中间件,并将最核心的几个项目 RocketMQ、Dubbo、Seata 捐赠给 Apache 基金会,实现更大范围的技术普惠。

AI 原生应用架构

今天已经到了第三个阶段,随着大模型技术规模落地,AI 原生应用架构的理念雏形也开始出现。AI 原生应用架构,比较通俗的理解是以 AI 为中心进行设计的系统架构,应用架构全面拥抱大模型服务,通过模型能力组织系统架构,将模型、后端、前端放在同等地位,共同构成完整的系统架构。

经典的应用架构,一般是应用、中间件、数据库、存储系统等,用户的请求链路一般也是通过 app 到服务端应用、执行业务逻辑、对领域模型进行增删改查,持久化数据库。每个请求的耗时比较接近、一般都在毫秒级、请求类型也是短连接为主。

而今天的 AI 原生应用,在原来的基础上引入了大模型服务、向量数据库、AI 编程框架等。客户的请求一般涉及大模型推理链路,请求类型多样化、多模态,比如文生文、文生图、文生视频,不同类型的请求耗时方差很大,而且耗时更久,到了秒级、分钟级,对传统轮询负载均衡技术提出挑战。AI 应用使用场景一般会涉及自然语言交互的模式,对话模式,涉及上下文保存,通常是以长连接的方式为主。AI 原生应用架构本质上也是数据驱动型的架构,对数据的实时性和准确性依赖更大,需要有更好的数据集成能力。

基于目前 AI 原生应用的一些特征,阿里云中间件也面向 AI 场景做了不少演进,希望通过 AI 开发框架+AI 观测能力+AI 网关+事件驱动,一站式助力大模型应用落地:

  • 在 AI 开发框架上,我们继续拥抱 Spring 生态,发布 SpringAI Alibaba,简化 AI 应用开发。
  • 面向 AI 场景的可观测,阿里云可观测探针基于开源 Open Telemetry Python SDK 进行扩展,能够自动获取大模型调用各个阶段的数据,例如 RAG 阶段检索出来的文档内容,模型调用的输入输出,执行时间,消耗的 token 等等数据,全面提升 LLM 应用的可观测性。
  • 面向 AI 场景的网关能力增强,Higress 支持多模型适配,已支持主流大模型供应商,包括通义千问,OpenAI/Azure OpenAI,月之暗面,百川智能等;支持流式输出、请求/Tokens 限流防护、长连接无损热更新,支持最小请求数负载均衡。
  • 事件驱动架构也是 AI 应用的刚需,AI原生应用请求往往耗时过久,全面同步调用会使得系统性能急剧恶化,响应慢,影响客户体验。通过引入 RocketMQ 事件驱动架构,解耦快慢服务,能显著提升性能和体验。面临 AI 应用请求耗时方差大,资源消耗不均匀的特点,RocketMQ 支持主动 Pop 消费模式,动态消费超时时长,能够实时结合模型实例负载和推理请求特点,自适应负载均衡;通过引入事件驱动架构,能够一站式完成实时数据源到企业私有存储的同步更新,实时 embedding 到向量数据库,进一步提升 RAG 架构的实时性和个性化,进而改善大模型应用客户体验。

阿里云 AI 原生应用架构开放日

除了在主论坛的分享,我们在大会第二天组织了阿里云 AI 原生应用架构开放日,以作为主论坛的延续,分享更丰富的内容。

① AIGC 趋势下,通义灵码的智能编码探索与实践

解浩(哑木),阿里云通义灵码产品解决方案架构师

“AIGC 浪潮下,阿里云推出了通义大模型的智能编码辅助工具-通义灵码,它利用了人工智能技术,特别是自然语言处理(NLP)和机器学习算法,来提升软件开发的效率与质量。通义灵码提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码,这样可以大幅减轻程序员的手动编码负担,让他们更专注于解决业务逻辑和创新工作。”

② Spring Cloud Alibaba Al,面向 Java 开发者的 Al 应用开发实践

刘军(陆龟),Apache Member

“阿里云开源基于百炼模型服务的 Spring AI 应用开发框架:Spring Cloud Alibaba AI ,涵盖ChatModel、FunctionCalling、Embedding、Vector Store 等 AI 应用开发基础功能,让 Java 开发者轻松玩转 AI 应用开发。我们深入介绍了 Spring Cloud Alibaba AI 开发框架的架构与基本使用,结合百炼大模型服务平台演示如何快速开发 Java AI 应用。”

③ AI 时代如何做 API 网关选型

张添翼(澄潭),Higress 社区 Maintainer

从网关视角看,AI 流量具备长连接、大带宽、高延时的特征,传统 Nginx 类网关做纯转发没问题,但要发挥网关的可观测、安全防护、流量灰度等能力则会遇到很多问题,基于此,向大家分享 to C 的通义千问 APP,以及 to B 的阿里云百炼 API 服务为何同时选择了 Higress 作为 API 网关。

目前 AI 互联网正在处于类似 Web 1.0(AI 静态检索)的阶段演进到 Web 2.0(AI 主动参与)的阶段,API 是 AI 主动参与互联网的关键所在,阿里云基于 Higress 推出了全新的云原生 API 网关产品,提供强大的 API 管理能力,目前已经开启公测,欢迎大家试用。

④ 无侵入的实现 Golang 大模型应用可观测

张海彬(古琦)阿里云可观测技术专家

随着 Kubernetes 和容器化技术的普及,Golang 在云原生领域和各类业务场景中占据了重要地位,越来越多的新兴业务选择 Golang 作为首选编程语言,相比 Java 可以使用字节码增强技术来实现无侵入的应用监控,Golang 在这方面依然处于劣势,如 OpenTelemetry SDK,需要开发人员手动进行埋点,极大的降低了开发效率和系统稳定性,通过 Aliyun Arms Golang Agent 可以实现无侵入的 Golang 应用监控,通过应用监控大盘、调用链分析、智能告警和持续剖析可以快速定位 Go 应用问题,提高系统稳定性。

开源已不再单单是一场运动,而是以人进行连接的社区,这也是为何 Apache 强调 Community over Code 的原因。虽然应用和架构在随业务而演进,但社区还是那个社区,10 分钟的快闪演讲就能触发 10 分钟的深度交流。

关注公众号,后台回复:0727

免费获得 PPT 合辑

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

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

相关文章

JOOQ-入门手册-全-

JOOQ 入门手册(全)原文:Beginning jOOQ 协议:CC BY-NC-SA 4.0一、欢迎使用 jOOQ 我 15 岁开始从事软件工程(实际上,是严肃的计算机业务),使用 Oracle 8i SQL。是的,从技术上来说,我从小就是个老人了。在我开始上大学之前,玩 SQL* Plus,尝试(并失败)我的第一次 Oracle…

JavaScript-正则表达式入门指南-全-

JavaScript 正则表达式入门指南(全)原文:Introducing Regular Expressions 协议:CC BY-NC-SA 4.0一、正则表达式简介 为了开始介绍正则表达式,我将从一个例子开始。这是一个你已经经历了几百次的问题。当您在线输入客户数据时,许多 web 表单会要求您提供电子邮件地址。为…

基于surging的产品项目-木舟开源了!

一 、 概述因为前段时间电脑坏了,导致代码遗失,踌躇满志马上上线的平台产品付之东流,现在熬夜在写代码希望能尽快推出企业正常使用的平台产品,而这次把代码开源,一是让大家对surging 使用有个深入的了解,二也是开源社区起到监督推动作用,底层的代码基本上已经完成,比如…

SimpleRAG:基于WPF与Semantic Kernel实现的一个简单的RAG应用

SimpleRAG:基于WPF与Semantic Kernel实现的一个简单的RAG应用。SimpleRAG介绍 SimpleRAG是基于WPF与Semantic Kernel实现的一个简单的RAG应用,可用于学习与理解如何使用Semantic Kernel构建RAG应用。 GitHub地址:https://github.com/Ming-jiayou/SimpleRAG 主要功能 AI聊天 …

粒子群算法中对于惯性权重的改进

惯性权重w体现的是粒子继承先前的速度的能力,Shi,Y最先将惯性权重w引入到粒子群算法中,并分析指出一个较大的惯性权值有利于全局搜索,而一个较小的权值则更利于局部搜索。因此,在迭代适应度的同时对惯性权重进行迭代有利于帮助我们寻找最优解 目录一、线性递减惯性权重1.迭…

Git教程2

六、Git的工作区域和文件状态 1、工作区域: (1) 工作区(Working Directory):电脑上可以看到的目录,即实际操作的目录。车间 (2) 暂存区(Staging Area/Index):保存即将提交到Git仓库的修改内容。运输工具 Cache (3) 本地仓库(Local Repository):存储代码和版本信息的主要位…

JavaScript-快速语法参考-全-

JavaScript 快速语法参考(全)原文:JavaScript Quick Syntax Reference 协议:CC BY-NC-SA 4.0一、使用 JavaScript 要开始试验 JavaScript,您应该安装一个支持这种语言的集成开发环境(IDE)。有很多不错的选择,比如 NetBeans、Eclipse、Visual Studio、括号。在本书中,我们…

一个方便下载pdb调试符号的小工具Microsoft.PdbDownloader

在调试Windows的系统组件时,如果能够正确使用pdb文件,能够对调试有非常大的帮助。一般情况下,我们是使用windbg来自动下载符号文件,但是有时候对一些简单的需求来说,用windbg反而比较麻烦。比如我现在有一个PE文件,就想只下载它的pdb文件到当前目录,需求看似简单,但是却…

SpringBoot系列:使用原生JDBC实现对数据库的增删改查

在springboot中使用原生JDBC实现对数据库的增删改查application.ymlspring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.…

tp1200触摸屏画面光标使用方法

1:点击画面空白处 2:编辑Tab排序,就是首次显示当前画面时,光标处于光标为1的对象上 3:当IC卡具备Enter点击功能时,可以直接使用刷卡去触发这个按钮 *******************************************************************************************************1:激活屏幕…

MAC苹果电脑JDK下载安装教程

JDK For Mac在Mac上安装JDK的步骤主要包括下载JDK安装包、‌安装JDK、‌查询JDK安装路径、‌配置Java JDK环境变量以及使配置生效。‌以下是详细的步骤说明:‌下载JDK安装包访问Oracle官网,‌选择适合MacOS版本的JDK安装包进行下载。‌对于M系列芯片,‌选择Arm 64 DMG insta…

通过代码添加的控件的事件如何编写?

背景 这两天在重新复习事件,比如Winform控件的事件,利用vs很方便地实现。比如:想要在窗体加载时,修改窗口的标题;我们只需要双击Form1的标题栏即可;vs便会给我们生成如下代码,且光标自动定位到方法体中:private void Form1_Load( object sender, EventArgs e ) {}然后我…