确定最合适的消息传递服务
了解选择消息传送服务的注意事项,然后使用决策矩阵表根据您的业务需求查看 OCI 服务的不同选项和限制。
选择消息传送服务的注意事项
请考虑以下评估因素来做出决定。
编排或编排
编排和编排是两种架构方法,用于确定如何组织不同的分离组件来协同工作。编排采用的原则是,每个组件独立执行,但会倾听和观察,以确定何时执行其下一个操作。消息代理将提示传送到下一个组件。组件可以非常自治且易于扩展。缺点是,每个组件都需要进一步了解其在整体解决方案中的作用并增加更高的复杂性。消息代理是一个关键元素,其简单性可减少工作量并提高吞吐量。
编排是指像编排这样的组件的想法。每个组件只需要知道其任务,然后等待操作员或编排员提示他们执行操作。因此,指挥者必须了解并拥有指导所有组件的情报。导电体角色是关键及其可伸缩性和可扩展性,直接影响整体解决方案的可伸缩性和弹性。
一些编排产品包括进行编排(例如包括代理)的能力,或者创建使用组件实现分层通信效果的服务。
按消息或事件数支付批量采购
根据对解决方案的成本影响考虑不同的付款模式。如果可能存在批量购买中未使用的消息量,您可以选择按消息付费。考虑这样一个事实,即按消息或事件付费的容量可能会增加,因为服务的最低占用成本必须分布在更少的用途上。
单个或多个消息使用者
队列和主题之间的区别是,消息只能使用一次队列。一个主题可以有许多不同的使用者。队列和主题可以有许多使用者类型的实例。连接到单个主题或队列的同一使用者类型的多个实例通常称为“争用条件”,其中下一个可用使用者获取下一个可用消息。
读后消息保留
某些消息代理在读取(或者在所有使用者阅读消息后)来管理资源后将删除消息。Apache Kafka 跟踪消费者经历过消息的程度,但在阅读后不会将其删除。这样可以在出现问题时重放消息。因此, Kafka 充当数据存储库和消息代理,并支持在消息数据存储上创建数据分析。
保证订单
保证按接收顺序(而不是存储消息的顺序)传送消息会导致复杂性和影响性能。通过中介进行工作时,可以引入延迟问题,因为这可能会在允许使用者收到消息之前等待,以确保在使用延迟消息之前不必将任何延迟消息插入到正确的顺序中。
例如,消息排序对于表示要取消的订单的事件至关重要。订单创建的消息可能会在消息不符合订单时导致应用程序问题。
提供了应用级模式和策略,可以帮助缓和订购问题和抵消经纪人限制。
异步操作
使用中介机制的好处是消息提供者不需要了解使用者,并且不会降低提供者的速度。经纪人知道消费者是谁,他们是否可用,并在消费者有任何问题(如性能)时管理传输。使用中介可以实现异步通信,并且不需要同步提供者和使用者。
最大消息速率、消息保留期和最大保留量
这些因素都影响了提供无服务器解决方案的成本,并且通常需要设置硬限制。软件无法始终提供均匀的性能,因为它可提高预期。您可以设置限制来控制预期,并提供可预测的行为。您必须了解这些限制才能确定它们是否会影响您正在构建的解决方案。
例如,股价变动时,股权交易系统将收到消息。每条消息都很小,但由于更新频率很高,消息量会很高。吞吐量较低但消息大小较大的中介无法支持此要求。
行业 - 标准输入支持和行业 - 标准输出支持
使用行业标准格式和协议发送和接收消息可提高重新配置消息传递机制以及将其用于不同部署和实施提供商的功能。您可以利用通用库来解决低级别的通信机制,并减少供应商连接。
第三方适配器支持
为了帮助开发消息提供商和消费者,通过第三方适配器提供支持可以发挥优势,因为它增加了开发选项。
每个区间的个人部署数
您可以将各个消息传递渠道或流部署到特定区间,并允许解决方案中的服务通过公共控制层进行细粒度集体安全控制。此方法假定可以在区间级别控制所有元素。无法满足每个通道的区间级别控制的解决方案可以提供替代方案。替代方法可能需要额外的配置注意事项。
使用 OCI IAM 验证
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 提供了强大的企业级安全性级别,在安全可以与其他提供商联合的情况下。通过使用单个 IAM 提供程序(无论是否使用联合),可以更方便地管理数据流访问的安全控制。
数据在航班和休息时进行加密
如果通过该服务传递的数据是敏感的,则必须在传输过程中以及中介在传送之前对其进行保护。敏感消息必须通过中介的加密机制进行加密,以保证不会丢失消息。
消息转换
根据采用的架构原则,经纪人可能需要能够转换消息格式。消息提供方或使用方不需要了解通用数据语义,也不需要了解提供方或使用方希望如何设置数据格式。此考虑还可以扩展到正在使用的协议更改。例如,从 REST 转换到 STOMP。
审计线索
为了帮助修复分布式应用程序的问题,审计线索支持跟踪消息传输到和接收位置。必须遵守法规要求时,掌握审计线索会很有用。因此,可能需要了解服务如何支持此要求。
查看决策矩阵
使用以下决策矩阵了解 OCI 服务的可用选择以及选择特定服务的注意事项或评估因素。
| 服务/系数 | 队列 | 流 | 通知 | Oracle Integration (Gen2, Gen3) | Autonomous Database (TEQ 和 AQ) |
|---|---|---|---|---|---|
| 编排与编排 |
编排 |
编排 | 编排 | 编排和编排(取决于集成配置) | 编排和编排(取决于集成配置) |
| 按消息或事件付费而不按批量购买 | Per API call + multiplier for messages > 64 KB |
Per GB data transfer + Storage |
取决于通信渠道。按发送数量定价。 | 每小时 5000 次集成调用的定价(块数) | 否,数据库定价 |
| 消息的单个或多个使用者 |
单一用户。(允许的争用条件,但每条消息仅有一个使用者)。 |
单个和多个 | 单个和多个 | 单个和多个(取决于集成定义) | 单个和多个 |
| 读取后保留消息 | 不 | 是 | 不 | 是(取决于集成定义) | 是 |
| 保证订单 | 尽力服务 | 是,在分区内 | 不 | 是(取决于集成定义) | 部分(关于优先级的规则可以设置,这可以指示消费订单) |
| 异步操作 | 是 | 是 | 是 | 是(取决于集成定义) | 是 |
| 支持的行业标准 | REST API、 STOMP | Kafka 连接 | 来自 OCI 事件和预警的云事件 | 多个不同的适配器 |
JMS 和 SQL 通过提供 REST API,通过定制 ORDS 实施提供额外的风险 |
| 第三方适配器支持 |
开源 STOMP 实施 |
任何符合 Kafka 标准的工具、库或 SDK | 不 | 广泛的行业适配器。可以从 REST 接口或标准 JMS 客户机生成 |
使用标准 JMS 标准库 SQL 得到广泛支持 |
| 产出支持的行业标准 | STOMP 、REST API | Kafka 连接 | Email,电子邮件,Slack,PagerDuty,HTTP/S | 多个不同的适配器 | JMS 和 SQL |
| 最大消息速率 | 10 MBPS |
每个分区每秒 1 MB 每秒至多 250 个 |
HTTP/S 每分钟 60 次 对于电子邮件,每分钟 10 个 通知主题每分钟 60 次 |
未指定任何内容 | 取决于数据库大小调整 |
| 消息保留期 | 7 天(如果已配置,则缩短) | 7 天 | 直到完成交货重试 | 未定义 | 可配置 |
| 最大保留卷数 | 每个队列 2 GB(每个租户 20 GB) | 保留期由每个分区 1 MB/秒的最大写入速率规定,7 天。 | 消息速率和传送重试持续时间的功能。 | 不适用 | 取决于数据库配置 |
| OCI SDK 或 CLI 支持发送消息 | 是 | 是 | 是 | 不 | 不 |
| 每个区间的单个部署 | 是 | 是 | 是 |
不。在区间级别(而不是单个集成)分隔的 Oracle Integration 实例 |
不。数据库实例与区间对齐,而非单个队列 |
| 使用 IAM 验证(RBAC 等) | 是 | 是 | 是 | 是 | 是 |
| 数据在飞行中和静态中进行加密 | 是 | 是 | 是 | 是 | 取决于数据库配置 |
| 消息转换 | 不 | 不 |
有限制。 电子邮件等的友好格式设置。如果端点正在使用 Oracle Functions ,则函数可以转换消息。 |
是 | 是(存储的 SQL 过程) |
| 审计线索 | 是(使用日志记录) | 是(使用日志记录) | 是(使用日志记录) | 是(包括带日志记录的 Oracle Integration ) | 是 |
可以使用以下信息解释矩阵:
- 付款模式:指每条消息或批量购买容量。
- 争用条件:当队列具有多个使用者时,使用者将被描述为处于“争用状态”,因为下一条消息由使用者处理,该使用者首先准备好另一条消息。
- 基于 REST 的端点:某些服务提供基于 REST 的端点。如果使用 Open API 规范对 REST 有效负载进行建模,则可能无法提供特定于有效负载的 SDK。在这种情况下,您可以使用 API 网关服务生成 SDK。有关详细信息,请参阅 OCI 文档关于为 API 资源生成 SDK 。
除了 OCI 服务,矩阵还提到以下技术:
- STOMP :简单(或流处理)文本定位消息协议。它提供可互操作的线路格式,以便 STOMP 客户机可以与任何 STOMP 消息代理通信,从而在许多语言、平台和代理之间提供简单而广泛的消息传送互操作性。
- STOMP 实现:指已知的符合 STOMP 的消息服务器。
- Kafka Connect :此工具支持在 Apache Kafka 和其他系统之间可靠地传输和扩展数据。使您可以快速定义将大型数据收集移入和移出 Kafka 的连接器。
您可以在浏览部分中阅读有关这些技术的其他信息。