全部产品

消息管控(专有云)

更新时间:2020-09-25 10:29:49

目前,许多金融机构正在使用 IBM ESB 作为 SOA 化解决方案。该方案将各个专业的应用系统、外联系统以及渠道接入以标准的接口方式进行整合集成,从而围绕 IBM ESB 构建出一个以服务为中心的 IT 架构体系。与常见的微服务架构基于 RPC 通信不同,ESB 架构使用消息驱动,通过成对的 request-response 消息来实现服务调用。

针对这种传统的 IBM ESB 架构,SOFAStack 服务网格提供了消息 Mesh 能力,通过为 MOSN 引入 IBM MQ 协议解析和流量代理能力,帮助传统应用平滑迁移到云上。应用可以在无需任何改造的前提下,借助 Mesh 化享受到上云所带来的技术红利,包括可视化的消息服务治理、精细化的消息流量调拨与路由、以及完善的可观测监控与链路分析能力等。

您可以按照以下操作步骤实现 IBM ESB 架构的应用 Mesh 化上云,并通过服务网格对消息服务进行管控、治理与监控等。

云端应用部署

  1. 进入 应用管理 > 应用列表 页面,创建两个消息应用。
    • 应用名称:自定义应用名称,如 ibmmq-provideribmmq-consumer
    • 技术栈:选择 技术栈 2.0 架构 > SOFABoot
      创建应用
  2. 进入发布部署服务控制台,在 应用服务 > 服务实例列表 页面,在刚刚创建的应用下分别创建服务实例。
    • 应用:选择刚刚创建的应用。
    • 服务实例名称:自定义应用服务实例名称,如 ibmmq-provider1ibmmq-consumer1
    • 技术栈版本:使用 2.2.0-ANTCLOUD 及以上的最新版本。
      创建服务实例
  3. 进入服务实例详情页,创建云服务器 ECS 与负载均衡 SLB 资源,并将该 ECS 挂载到该 SLB。
    • 创建 ECS 时,规格必须是 2C4GB 及以上。
    • 创建 SLB 时,需添加监听器,前后端协议、端口均为 TCP 协议、22 端口。
      创建 SLB
  4. 在服务实例详情页中,切换至 环境参数 标签页,新增并确认以下参数配置:
    技术栈参数
    • ac.enable_mesh:是否启用服务网格。参数值为 true,表示启用。
    • ac.ibm_queue_configs:IBM MQ 配置。参数值是 JSON 字符串。支持配置多个队列。每个队列具体的配置内容均必须包含以下三个元素,每个元素需根据实际情况进行设置。
      • channel_name:IBM MQ 队列通道名
      • queue_mgr_name:IBM MQ 队列管理器名
      • ibm_server_addr:IBM MQ 实际的 IP 地址与端口
        示例如下:
        1. {
        2. "ibm_queue_configs": [
        3. {
        4. "channel_name": "SVR_1",
        5. "queue_mgr_name": "QMUIBPS_STABLE",
        6. "ibm_server_addr": "127.0.0.1:40001"
        7. },
        8. {
        9. "channel_name": "SVR_2",
        10. "queue_mgr_name": "QMUIBPS_SIT",
        11. "ibm_server_addr": "127.0.0.1:40002"
        12. }
        13. ]
        14. }
    • 如需消息路由功能,还必须新增以下两个参数,否则 Sidecar 将无法获取后端应用的健康状态,导致路由不符合预期甚至失败。
      • com.antcloud.antvip.enpoint:即 AntVIP 地址,需前往中间件 Portal 页面获取该地址。
      • ibm.client.port:即 MOSN 反向检查业务应用进程监听端口,需根据业务系统自身所监控的端口进行设置,如 Web 应用通常会开启监听 8080 端口。
  5. 在本地编译应用,将其打包成一个可执行 Jar 包。
  6. 应用服务 > 发布包管理 页面,找到之前创建的应用,点击 管理,进入包管理界面,点击 上传发布包,将本地的 Jar 包上传。
    上传发布包
  7. 点击页面右上方的 发布部署,然后在新窗口中选择之前创建的服务实例以及刚才上传的版本,点击 立即发布,跳转至发布单页面,点击 整体发布
  8. 发布过程中,检查已发布机器业务是否正常,如有异常,需及时止损。
    • 执行 ps aux | grep mosn,检查 sidecar 是否成功注入。
    • 检查各项业务是否正常运作。

添加消息队列

  1. 进入服务网格控制台页面,在左侧导航栏选择 消息管控
  2. 点击 添加消息队列,在右侧窗口中,配置以下队列信息,将应用与队列进行关联。
    添加消息队列
    • 队列名称:根据实际业务系统,输入消息队列名称。
    • 队列类型:选择 IBMMQ。
    • 关联应用名:输入之前创建的应用名称,应用名之间使用英文逗号分隔。
      说明:可在 应用管理 > 应用列表 页面获取需要的应用名称。
    • 通道名:输入消息通道名称。
    • 队列管理器名:输入消息队列管理器名称。
    • 队列管理器 IP、端口:输入队列管理器的 IP 地址与端口号,如 127.0.0.140001
      说明:通道名、队列管理器名以及队列管理器 IP、端口,必须与服务实例添加的技术栈参数 ac.ibm_queue_configs 配置一致。
  3. 确认信息无误后,点击 提交

消息管控

前往 服务网格 > 消息管控 页面,即可进行消息服务管控与治理。

消息管控

  • 点击队列名称,进入该队列的详情页,即可查看队列更多信息,如队列提供者信息等,还可以对消费方进行 限流版本路由
  • 点击队列右侧的 编辑 按钮,即可修改该队列的配置信息。
  • 点击队列右侧的 删除 按钮并确认后,即可将该队列删除。

队列限流

  1. 消息管控 页面,点击目标队列名称,进入该队列详情页。
  2. 切换至 队列限流 标签页,点击 添加限流规则
  3. 在新窗口中,配置相应的限流规则信息:
    队列限流
    • 规则名称:自定义限流规则名称。
    • 运行模式:目前仅支持 拦截模式,即限流生效的模式。若匹配上规则,会将方法调用进行限制,调用配置的“限流后操作”。
    • 方法:需要限流的目标方法,支持 get(收消息)或 put(发消息)方法。
    • 限流算法:目前仅支持 令牌桶算法。有关该算法的详细信息,参见 限流算法介绍 > 令牌桶算法
    • 限流后操作:目前仅支持 抛出异常,即匹配上限流规则,限流后,抛出异常。
    • 限流域值
      • 条件模式:目前仅支持 QPS,即根据单位时间内的请求数进行限流。
      • 单位时间:打印限流日志的周期。对于单位时间内访问次数的限流条件,也表示统计周期。单位为毫秒(ms)。最小值为 1000 ms。
      • 限流阈值:QPS 计数值,单位时间内的请求数。
  4. 点击 提交,返回限流规则列表,开启 该规则。

队列路由

  1. 在目标队列的详情页,切换至 队列路由 标签页,点击 添加路由规则
  2. 在新窗口中,配置相应的版本路由信息:
    队列路由
    • 规则名称:自定义路由规则的名称。
    • 应用:选择需要进行流量调拨的目标应用。
    • 方法:目前仅支持 get 方法。
    • 路由类型:目前仅支持按版本路由。
    • 版本权重:设置各版本权重,且需确保各版本都是合法的,版本权重和必须为 100%。
      说明:可在 发布部署服务 > 应用服务 > 发布包管理 页面获取需要的版本信息。
  3. 点击 提交,返回路由规则列表,开启 该规则。