进入操作模式
RocketMQ 解决会话通知及状态连续性问题

RocketMQ 解决会话通知及状态连续性问题

官网控制台部署
Terraform 模板 IaC 部署
官网控制台部署
Terraform 模板 IaC 部署

一键部署

30

https://www.aliyun.com/solution/tech-solution/rocketmq-for-multi-agent-communication

方案概览

本方案利用云消息队列RocketMQ版的LiteTopic能力,为分布式Web应用中的长连接会话管理提供了高效解决方案。它解决了消息的精准投递与会话状态一致性的核心挑战。

方案架构

方案提供的默认设置完成部署后在阿里云上搭建的系统如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。

image

本方案利用云消息队列RocketMQ版的LiteTopic能力,为分布式Web应用中的长连接会话管理提供了高效解决方案。它解决了消息的精准投递与会话状态一致性的核心挑战。

方案优势

  1. 精准消息路由: LiteTopic能够将每个会话创建一个独享的LiteTopic,每个服务节点订阅当前管理的会话的LiteTopic集合。这使得消息可以被精准路由到持有该会话的服务节点,实现了高效的点对点推送,避免了在集群内进行无效广播。

  2. 会话状态连续性:在会话连接重连后,应用服务节点可动态更新订阅关系,新的服务节点可接着之前的消费进度继续消费。既避免了重复执行大模型任务,又保障了应用服务节点的无状态,降低代码复杂度,提升了服务的横向扩展性。

说明

您可以访问代码仓库下载应用源码。

本方案的技术架构包括以下基础设施和云服务:

基础设施和云服务

说明

专有网络VPC

为云服务器ECS等云资源构建云上私有网络。

云服务器ECS

用于部署 Multi-Agent 系统。

云消息队列RocketMQ版

提供消息队列服务,实现会话状态连续性的异步通道。

阿里云百炼大模型服务平台

提供模型服务。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值等准备工作。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。

资源开通

登录阿里云百炼大模型服务平台,阅读并同意协议后,将自动开通阿里云百炼,如果未弹出服务协议,则表示您已经开通。

  • 当您首次开通阿里云百炼时,平台会自动为您发放各模型的新人专属免费额度。详情请参见新人免费额度。

    说明

    仅华北2(北京)地域模型享有免费额度,其他地域无免费额度。

  • 如果开通服务时提示“您尚未进行实名认证”,请先进行个人实名认证。

通过Terrafrom模板快速部署

5

为什么使用 Terraform

Terraform 是一款业界领先的基础设施即代码(Infrastructure as Code, IaC)工具,专门用于云资源的自动化部署与管理。其核心优势包括:

  • 自动化部署:通过声明式代码自动创建和配置云资源,避免手动操作带来的错误风险,显著提升部署效率。

  • 环境一致性:确保开发、测试、生产环境配置完全一致,消除环境差异导致的安全隐患。

  • 版本化管理:支持 Git 等版本控制系统,实现基础设施变更的审计追踪和回滚能力。

  • 智能依赖管理:自动处理资源间的依赖关系,确保按正确顺序创建或销毁资源。

  • 多云适配能力:支持阿里云、AWS、Azure 等主流云平台,便于构建混合云安全架构。

方案资源

本方案的 Terraform 模板将自动创建并配置以下云资源:

  • 1个专有网络VPC:为云服务器ECS等云资源构建云上私有网络。

  • 1 个交换机:将云服务器ECS等资源连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。

  • 1个安全组:用于限制专有网络VPC下云服务器ECS的网络流入和流出规则。

  • 1 台云服务器ECS:用于部署示例应用程序。

  • 1个云消息队列RocketMQ版实例:用于实现Agent之间的异步通信。

费用说明

本方案 Terraform 模板创建的云资源,将根据模板中配置的资源规格进行计费。预估费用:5 元 / 小时(实际费用可能因资源规格、配置或版本的不同而有所差异,请以云产品控制台显示的费用为准)。

说明

当资源不再使用时,请及时销毁,以避免产生不必要的费用。

操作步骤

  1. 访问部署页面。

    访问Terraform 部署页面,系统将自动加载本方案的模板。

  2. 配置部署地域。

    • 默认地域:西南1(成都)。

    • 修改方法:单击左侧目录 > main.tf,设置provider > region为公共云中的地域ID。例如:region = "cn-chengdu"。

      重要

      本方案当前仅支持在上述默认地域部署。

  3. 配置必填参数。

    单击左侧目录 > variable.tf,配置如下参数的default值:

    说明

    如需调整更多资源配置,请参考资源列表中的相应资源参数进行设置。

    参数

    说明

    ecs_instance_password

    设置 ECS root 用户密码。

  4. 执行部署。

    单击创建按钮开始部署。等待约 5 分钟左右,资源栈信息页面的状态变为创建成功,即表示资源部署完成。

  5. 单击输出页签,输出关键字为ecs_login_address对应的值,其为已创建的ECS实例的登录地址。

创建Topic和Group

当前已创建了1个云消息队列 RocketMQ 版实例,需等待实例状态变为运行中。接下来您需要创建所需的Topic和Group。

  1. 登录云消息队列 RocketMQ 版管理控制台。

  2. 点击左侧导航栏实例列表。

  3. 在顶部菜单栏左上角,选择西南1(成都)地域。

  4. 在列表中点击已创建的RocketMQ实例,跳转到实例详情页。

  5. 创建Topic:

    1. 在左侧导航栏中单击Topic管理。

    2. 多次单击创建 Topic,共创建2个Topic,配置参数见下表,其余参数保持默认。

      名称

      消息类型

      描述

      LLM_TOPIC

      普通消息

      LLM应用Topic

      WorkerAgentResponse

      轻量消息

      用于接收响应的轻量级Topic

  6. 创建Group:

    1. 在左侧导航栏中单击Group管理。

    2. 多次单击创建 Group,共创建2个Group,配置参数见下表,其余参数保持默认。

      Group ID

      消费模式

      Topic

      投递顺序性

      描述

      LLM_CID

      CLUSTERING

      -

      并发投递

      LLM应用消费者CID

      CID_HOST_AGENT_LITE

      LITE_SELECTIVE

      WorkerAgentResponse

      顺序投递

      订阅轻量级Topic的消费者CID

  7. 获取RocketMQ服务的访问用户名和密码:

    1. 在左侧导航栏中单击访问控制。

    2. 选择智能身份识别,打开内网免身份识别,记录用户名和密码以便在下一步中使用。image

获取百炼API Key

  1. 前往阿里云百炼的API Key页面。

  2. 在 API-Key 页签下,创建或查看 API Key。

    重要
    1. 子账号需要通过主账号完成授权后再去创建 API Key。

    2. 请不要将 API Key 以任何方式公开,避免因未经授权的使用造成安全风险或资金损失。

  3. 单击 API Key 列中的image,复制 API Key。

应用部署

10

开通了云资源后,接下来您需要执行以下操作部署示例应用程序:

  1. 远程连接云服务器ECS。

    1. 登录ECS管理控制台,在实例页面,找到前面步骤所创建的 ECS 实例。

      重要

      必须在上述指定地域才能查看已创建的实例。

    2. 在右侧操作列,单击远程连接,并选择通过Workbench远程连接。根据页面提示登录,进入终端页面。具体操作请参见:使用Workbench登录ECS实例。

      说明

      如果系统弹出“安全组白名单开通提示”面板, 请按照页面引导完成端口一键添加。

  2. 部署示例应用程序:

    1. 替换以下脚本中的配置项值并执行脚本。

      cat << EOF >> ~/.bash_profile
      export BAILIAN_API_KEY=sk-***
      export ROCKETMQ_INSTANCE_ID=rmq-***-***
      export ROCKETMQ_ENDPOINT=rmq-***-vpc.***.rmq.aliyuncs.com:8080
      export ROCKETMQ_USERNAME=***
      export ROCKETMQ_PASSWORD=***
      EOF
      
      source ~/.bash_profile

      配置项名称

      说明

      BAILIAN_API_KEY

      在阿里云百炼的密钥管理页面,在 API-Key 页签下,创建或查看 API Key。单击 API Key 列中的image,复制 API Key。

      ROCKETMQ_INSTANCE_ID

      在云消息队列 RocketMQ 版管理控制台目标实例下的实例详情 > 基本信息页签获取实例 ID。

      ROCKETMQ_ENDPOINT

      在云消息队列 RocketMQ 版管理控制台目标实例下的实例详情 > 基本信息页签,在TCP 协议接入点区域,获取VPC专有网络的接入点和网络信息。

      ROCKETMQ_USERNAME

      在云消息队列 RocketMQ 版管理控制台目标实例下的访问控制 > 智能身份识别页签获取用户名和密码。

      ROCKETMQ_PASSWORD

    2. 安装并启动应用。

      curl -fsSLO https://help-static-aliyun-doc.aliyuncs.com/install-script/multi-agents-rmq/install-llm-agent-web-gateway.sh
      chmod +x install-llm-agent-web-gateway.sh
      ./install-llm-agent-web-gateway.sh

      等待应用启动完毕,直到终端显示所有服务已成功启动字眼,代表启动成功。

      image

验证及清理

5

方案验证

3

验证应用功能 - Web页面
  1. 安全组入方向增加端口。

    1. 登录ECS管理控制台,在安全组页面,点击安全组ID进入安全组详情页。

    2. 在入方向的页签下点击增加规则,按图增加规则后,点击提交。

      image

      1. 协议:自定义TCP。

      2. 访问来源:任何位置。

      3. 访问目的:9090、9191、9292。

  2. 获取ECS公网IP地址。

    1. 登录ECS管理控制台,在实例页面,找到前面步骤所创建的 ECS 实例。

      重要

      必须在上述指定地域才能查看已创建的实例。

    2. 在基本信息页签,查看并复制公网 IP。

      说明

      如果没看到基本信息页签,请点击左上角的切换至简捷版。

  3. 在浏览器地址栏中输入上述ECS公网 IP:9090并回车,即可访问应用的Web页面。

  4. 在对话框中输入帮我介绍下RocketMQ。

    image

  5. 智能体执行任务过程中,可以点击重连会话,可以看到节点已经切换并由其他节点重新订阅消息,最终会返回RocketMQ的概念。

    image

查看消息轨迹
  1. 登录云消息队列 RocketMQ 版管理控制台。

  2. 单击左侧导航栏实例列表。

  3. 在顶部菜单栏左上角,选择西南1(成都)地域。

  4. 单击目标实例进入其详情页,单击左侧导航栏消息轨迹,可以按Topic或按LiteTopic查询到相关的消息轨迹。

资源释放

2

清理一键部署创建的资源
  1. 登录ROS控制台。

  2. 在左侧导航栏,选择资源栈。

  3. 在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。

  4. 在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。

清理手动创建的资源

在本方案中,您创建多个云资源实例。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:

删除百炼应用:

在应用管理页面,找到前面步骤中创建的应用,然后单击右下角image,在下拉列表中点击删除应用。