通过Knative事件驱动实现消息发送

Knative是一款基于Kubernetes的开源Serverless应用编排框架,其目标是制定云原生、跨平台的Serverless应用编排标准。ACK Serverless Knative基于容器服务 Serverless 版之上,在完全兼容社区Knative的同时,支持事件驱动、自动弹性。本文通过一个示例介绍如何通过Knative部署消息处理和Homepage,并最终实现弹幕消息发送。

前提条件

步骤一:部署消息处理服务和HomePage

消息处理用于接收弹幕请求,并根据请求数进行自动扩缩容。HomePage用于发送和接收弹幕消息。部署消息处理服务和HomePage操作步骤如下。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative

  3. Knative页面,单击服务管理页签,然后单击使用模板创建

    默认创建一个名为danmu-message的服务。示例代码中的image需根据集群所在地域进行替换。本文以华北2(北京)地域为例进行创建,请根据不同地域替换代码中的image

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: danmu-message
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: "10"
            autoscaling.knative.dev/minScale: "1"
        spec:
          containerConcurrency: 2
          containers:
            - args:
                - /message
                - --url=http://danmu-portal.default.svc.cluster.local/api/result
              env:
                - name: POD_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
              image: registry-vpc.cn-beijing.aliyuncs.com/acs/knative-danmu-message:v1.0
              name: user-container
              ports:
                - containerPort: 8080
                  name: http1
  4. 重复执行上一步。清空模板内容,将下方HomePage的YAML示例粘贴至新的空白模板,然后单击创建

    默认会创建一个名为danmu-portal的服务。示例代码中的image需根据集群所在地域进行替换。本文以华北2(北京)地域为例进行创建,请根据不同地域替换代码中的image

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: danmu-portal
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: "1"
            autoscaling.knative.dev/minScale: "1"
        spec:
          containers:
            - image: registry-vpc.cn-beijing.aliyuncs.com/acs/knative-danmu-portal:v1.0
              name: user-container
              args:
              - /danmu
              - --url=http://danmu-message.default.svc.cluster.local/web/api/process
              ports:
                - containerPort: 8080
                  name: http1
  5. 服务管理页签,当danmu-messagedanmu-portal的状态变为成功时,表明消息处理服务和HomePage部署成功。

    记录此处访问网关的IP地址,在下一步操作中使用。

步骤二:绑定访问网关地址和域名

消息处理服务和HomePage部署完成后,需要将上一步记录的访问网关地址绑定到待访问的用于发送和接收弹幕消息的HomePage的域名danmu-portal.default.example.com

找到计算机中Hosts文件所在位置,然后在Hosts文件中添加绑定信息,具体格式为访问网关+空格+域名例如,47.96.XX.XX danmu-portal.default.example.com,然后通过域名直接对服务进行访问。

步骤三:部署服务

完成以上操作后,在浏览器输入域名http://danmu-portal.default.example.com直接访问弹幕服务。在访问页面设置如下弹幕的参数,然后单击发送消息,查看弹幕信息。

配置项

说明

示例

消息

具体发送的消息。

welcome

并发

弹幕消息的并发数。

20

持续

弹幕消息的持续时间,单位为秒。

30

image