欢迎访问深圳敏捷云计算科技有限公司!

整合甲骨文云OCI函数和OCI事件,实现向私有OSS流发布消息的高效方案

2024-01-15 原创文章

云本地、事件驱动的架构,它巧妙地利用云资源和事件作为服务间的主要沟通机制。这种架构通过分离组件,使系统具备可伸缩性、弹性和敏捷性,能够实时响应事件。它采用事件流和无服务器计算,实现分布式事件驱动通信和处理。

甲骨文云基础设施事件是一个强大的自动化工具,可根据各种云资源的状态变化创建自动化操作。它允许我们创建规则,将事件传递给特定的OCI资源,如甲骨文云基础设施流媒体、OCI函数和甲骨文云基础设施通知。

在某些情况下,我们需要将消息发布到私有流。虽然OCI事件可以直接将事件传递给公共流媒体端点,但目前它不支持直接向私有流媒体端点传递消息,因为私有端点只能在同一虚拟云网络内解析,而OCI事件无法将消息推送到私有流。然而,通过在事件规则中使用OCI函数作为动作类型,可以实现这一点。这种参考架构提供了一个全面的概述,说明如何利用OCI函数与OCI事件,将消息传递到私有流媒体端点。

架构

在这个参考架构中,我们展示了如何利用OCI函数和OCI事件,当Oracle云基础设施对象存储中的文件创建或更新时,向私有OSS流媒体端点发布消息。架构图清晰地描绘了数据流的过程:首先是将文件上传到OCI对象存储中的特定存储桶。随后,基于定义好的事件规则条件,OCI事件被触发。发出的事件随即调用一个函数,该函数提取上传文件中的数据,并将数据及事件消息发布到OCI函数内配置的私有流媒体端点。需要特别指出的是,为了确保OCI函数能够访问私有流媒体消息端点,流媒体服务和函数应该在同一个虚拟云网络(VCN)及私有子网中创建。下图详细说明了这一参考架构。


开始之前

  1. 首先,您需要设置您的OCI函数应用和OCI流媒体服务(流池和流)。
  2. 请准备以下信息。这些值对于配置OCI函数的环境变量是必需的:

用户ID

  • 用于认证的用户OCID。

租户ID

  • 租户OCID。可在用户资料中找到。

指纹

  • 用于认证OCI API。

区域

  • 创建请求的区域标识符。

API私钥

  • API私钥文件位置。

流OCID

  • OSS流OCID。

认证令牌

  • 用户设置中的认证令牌。

流端点

  • OSS流端点(从流信息屏幕的“消息端点”获取)。

该架构包含以下组件:

租户

当您注册甲骨文云基础设施时,甲骨文会在云中为您设立一个安全且独立的部分,这就是租户。您可以在租户内创建、组织和管理您在甲骨文云中的资源。租户可以视为一个公司或组织的同义词。通常,一家公司会有一个租户,并在该租户内反映其组织结构。单个租户通常与单一订阅关联,而单一订阅通常只有一个租户。

区域

甲骨文云基础设施区域是包含一个或多个数据中心(称为可用性域)的地理区域。区域彼此独立,可以跨越国家甚至大洲。

分区

分区是甲骨文云基础设施租户内的跨区域逻辑分割。您可以使用分区来组织甲骨文云中的资源,控制对这些资源的访问,并设定使用配额。为了控制对特定分区中资源的访问,您需要定义策略,指定谁可以访问这些资源以及他们可以执行哪些操作。

可用性域

可用性域是区域内独立、相互独立的数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,提供故障容忍性。可用性域不共享基础设施,如电力或冷却系统,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内其他可用性域。

故障域

故障域是可用性域内的硬件和基础设施分组。每个可用性域包含三个独立电力和硬件的故障域。当您将资源分布在多个故障域时,您的应用程序可以承受物理服务器故障、系统维护和故障域内的电力故障。

虚拟云网络(VCN)和子网

虚拟云网络是您在甲骨文云基础设施区域中设置的可定制、软件定义的网络。像传统数据中心网络一样,VCN让您完全控制您的网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN划分为子网,这些子网可以在区域或可用性域中进行范围限定。每个子网由不与VCN中其他子网重叠的连续地址范围组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。

安全列表

对于每个子网,您可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。

服务网关

服务网关提供从VCN到其他服务(如甲骨文云基础设施对象存储)的访问。从VCN到甲骨文服务的流量通过甲骨文网络基础设施传输,不会穿越互联网。

对象存储

对象存储提供对大量结构化和非结构化数据的快速访问,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以安全且可靠地存储数据,然后直接从互联网或云平台内检索数据。您可以无缝扩展存储空间,而不会影响性能或服务的可靠性。对于需要快速、即时和频繁访问的“热”存储,使用标准存储;对于长时间保存并很少或几乎不访问的“冷”存储,使用归档存储。

事件

甲骨文云基础设施服务产生的事件是结构化的消息,描述了资源的变化。这些事件涵盖了创建、读取、更新或删除(CRUD)操作,资源生命周期状态变化,以及影响云资源的系统事件。

流媒体

甲骨文云基础设施流媒体提供了一个完全托管的、可伸缩的、持久的存储解决方案,用于摄取连续、大量的数据流,您可以实时消费和处理这些数据。流媒体可用于摄取大量数据,如应用程序日志、操作遥测、网站点击流数据;或用于其他连续且顺序产生和处理数据的发布-订阅消息模型的用例。

函数

甲骨文云基础设施函数是一个完全托管的、多租户的、高度可伸缩的、按需的函数即服务(FaaS)平台。它由Fn项目开源引擎提供动力。函数允许您部署代码,并直接调用它或响应事件触发它。甲骨文函数使用托管在甲骨文云基础设施注册表中的Docker容器。

日志

日志是一个高度可伸缩且完全托管的服务,它提供了以下类型的云资源日志访问:

  • 审计日志:与审计服务发出的事件相关的日志。
  • 服务日志:个别服务(如API网关、事件、函数、负载平衡、对象存储和VCN流日志)发出的日志。
  • 自定义日志:包含来自自定义应用程序、其他云提供商或本地环境的诊断信息的日志。

推荐

使用以下建议作为使用OCI函数和OCI事件实现此参考架构的起点。您的需求可能与这里描述的架构有所不同。

VCN

  • 创建VCN时,根据您计划连接到VCN子网中的资源数量,确定所需的CIDR块数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 选择与您打算建立私有连接的任何其他网络(在甲骨文云基础设施、您的本地数据中心或其他云提供商中)不重叠的CIDR块。
  • 创建VCN后,您可以更改、添加和移除其CIDR块。
  • 设计子网时,考虑您的流量流向和安全需求。将特定层或角色内的所有资源连接到同一个子网,这可以作为一个安全边界。

云守卫

  • 克隆并自定义甲骨文提供的默认配方,以创建自定义检测器和响应器配方。这些配方使您能够指定哪种类型的安全违规会生成警告,以及允许对其执行哪些操作。例如,您可能想要检测将可见性设置为公共的对象存储桶。
  • 在租户级别应用云守卫,以覆盖最广泛的范围,并减少维护多个配置的管理负担。
  • 您还可以使用“托管列表”功能,将某些配置应用于检测器。

OCI函数

  • 本架构中的OCI函数是使用Python开发的。请注意,OCI函数支持多种编程语言,您可以选择自己喜欢的语言来开发函数并部署。

OCI流媒体

  • 流池是在VCN的私有子网中创建的。流是使用这个流池创建的。请确保在与私有OSS流相同的VCN中创建函数,并拥有所有必要的访问权限。
  • 流媒体还利用Kafka Connect生态系统直接与第一方和第三方产品接口,通过使用现成的Kafka源和汇连接器。有关使用Kafka Connect的更多信息,请参见“探索更多”。

OCI对象存储

本架构使用标准对象存储上传文件。请确保启用“发出对象事件”,以便触发甚至服务。对于敏感数据,建议使用私有桶。

OCI事件

在本架构中,OCI事件被配置为监听OCI对象存储中的“对象创建”和“对象更新”事件。服务在对象上传到OCI对象存储后被调用,并调用函数进行处理。

考虑因素

在实现这一参考架构时,重要的是要考虑以下几个方面。

性能

OCI事件、OCI函数和OCI流媒体具有很高的可扩展性。根据您预期的文件大小和数量,考虑调整分区和流的数量。

安全性

使用策略来限制谁可以访问OCI资源。

对于OCI对象存储,默认启用加密,且不能关闭。

所有部署在OCI函数中的函数的访问都通过甲骨文云基础设施身份和访问管理(IAM)控制,它允许将函数管理和函数调用权限分配给特定用户和用户组。

建议将秘密和敏感数据存储在OCI保险库中。请考虑使用OCI保险库来存储用于与OCI服务授权的API密钥和认证令牌。

可用性

甲骨文确保了OCI函数、OCI事件、OCI流媒体和OCI日志的高可用性,这些都是云原生且完全托管的。OCI流媒体包括以下高可用性能力:

  • 持续的日志数据流
  • 多线程且可水平扩展的服务
  • 几乎实时的摄取
  • 对短期中断的弹性
  • 针对高效数据使用进行了优化

成本

您只需为函数运行时使用的资源支付费用。

部署

GitHub仓库包含实现此参考架构的OCI函数代码。

  1. 访问GitHub。
  2. 克隆或下载仓库到您的本地计算机。
  3. 遵循README文档中的指导。

开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: