其他分享
首页 > 其他分享> > 基于 ASK + EB 构建容器事件驱动服务

基于 ASK + EB 构建容器事件驱动服务

作者:互联网

简介:本篇文章以“在线文件解压场景”为例为大家展示经典 EDA 事件驱动与容器如何搭配使用。

作者:冬岛、肯梦

导读

EDA 事件驱动架构( Event-Driven Architecture ) 是一种系统架构模型,它的核心能力在于能够发现系统“事件”或重要的业务时刻(例如交易节点、站点访问等)并实时或接近实时地对相应的事件采取必要行动。那么 EDA + 容器能擦出怎样的火花呢?本篇文章将带领大家一起在云上借助 ASK 容器服务 + EB 能力构建一套完整的事件驱动架构。

本篇文章以“在线文件解压场景”为例为大家展示经典 EDA 事件驱动与容器如何搭配使用。

服务架构

在线文件解压以 EB OSS 事件通知为驱动点,架构方案如下:

EDA 架构的核心是对事件的应用,OSS 事件默认可以通过云服务总线完成采集,自定义通知事件。本场景是通过 EventBridge 把 OSS 上传文件的事件实时传递给 ASK 中的服务,然后 ASK 中的服务对上传的 ZIP 文件进行下载、解压和再次回传到 OSS。

用到的云服务

场景实践

OSS、ASK 以及 EventBridge 三个云产品的操作步骤如下:

OSS 资源配置

zip:放置需要解压的zip包

unzip:放置解压后的文件

打开 RAM 控制台[1],点击「创建用户」。

ASK 资源配置及代码解析

ASK(Serverless Kubernetes) 运行应用程序用于接受来自 EventBridge 发过来的关于 OSS 的事件,所以您首先需要创建一个 ASK 集群,然后部署解压服务。

1)创建 ASK 集群

填写集群名称,勾选最下面的《服务协议》,其他都使用默认配置然后就可以创建一个集群出来。

如果创建集群过程中遇到问题,可参考创建集群文档[3]解决,也可以通过群号 31544226 加钉钉群找答疑解决。

2)部署解压服务

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eb-ask-demo
spec:
  selector:
    matchLabels:
      app: eb-ask-demo
  template:
    metadata:
      labels:
        app: eb-ask-demo
    spec:
      containers:
      - name: eb-ask-demo
        image: "registry.cn-hangzhou.aliyuncs.com/kubeway/demo-ossunzip:v0.0.1-20211218152144_master_37323b1"
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 8080
        env:
        - name: OSS_ACCESSKEYID
          value: "ak"
        - name: OSS_ACCESSKEYSECRET
          value: "sk"
        - name: OSS_ENDPOINT
          value: "oss-cn-hangzhou.aliyuncs.com"

3)获取到服务暴露 URL

EB 资源配置

EB 总线分为云服务总线和自定义总线,云服务总线用于接受云服务事件 E.g. OSS ,自定义总线用于接受自定义事件 E.g. 解压完成信息。

更多事件模式说明[6]参考文末更多链接。

 

{
    "source": [
        "acs.oss"
    ],
    "type": [
        "oss:ObjectCreated:PostObject",
        "oss:ObjectCreated:UploadPart",
        "oss:ObjectCreated:PutObject",
        "oss:ObjectCreated:UploadPartCopy",
        "oss:ObjectCreated:InitiateMultipartUpload",
        "oss:ObjectCreated:AppendObject",
        "oss:ObjectCreated:CompleteMultipartUpload"
    ],
    "subject": [
        {
            "suffix": ".zip"
        }
    ],
    "data": {
        "oss": {
            "bucket": {
                "name": [
                    "eb-ask"
                ]
            },
            "object": {
                "key": [
                    {
                        "prefix": "zip/"
                    }
                ]
            }
        }
    }
}

效果验证

服务已经准备好了,现在找一个 zip 文件上传到 OSS 就能看到效果了。上传一个 zip 文件到 zip 目录以后应该能在 unzip 目录中看到解压后的文件。

您可以创建一个文本文件,然后压缩成 zip 格式。或者可以打开我们的示例程序Github 工程[7],下载此工程源码的 zip 文件,可以直接获得一个 zip 文件。

打开 OSS 控制台[8] ,选择配置好的 bucket,进入 zip 目录。

优势及总结

参考资料

[1] RAM 控制台:

https://ram.console.aliyun.com/users

[2] 容器服务控制台

https://cs.console.aliyun.com/

[3] 创建集群文档

https://help.aliyun.com/document_detail/86377.htm?spm=a2c4g.11186623.0.0.350f3e068qu6bW#task-e3c-311-ydb

[4] 容器服务页面

https://cs.console.aliyun.com/#/k8s/cluster/list

[5] github

https://github.com/AliyunContainerService/serverless-k8s-examples/oss-unzip

[6] 更多事件模式说明:

https://help.aliyun.com/document_detail/181432.html

[7] 示例程序 Github 工程

https://github.com/AliyunContainerService/serverless-k8s-examples

[8] OSS 控制台

https://oss.console.aliyun.com/

[9] EventBridge 控制台

https://eventbridge.console.aliyun.com

[10] zip 解压源代码

https://github.com/AliyunContainerService/serverless-k8s-examples/tree/master/oss-unzip

原文链接

本文为阿里云原创内容,未经允许不得转载。

 

标签:解压,服务,zip,创建,OSS,EB,事件驱动,点击,ASK
来源: https://www.cnblogs.com/yunqishequ/p/15793142.html