我打算将来自商业网站的大批量订单交易记录存储到存储库(这里必须使用 cassandra,这是我们的数据库)。让我们将此组件称为commerceOrderRecorderService。
问题的第二部分是 - 我想处理这些订单并推送到其他下游系统。这个组件可以称为batchCommerceOrderProcessor。
commerceOrderRecorderService 和 batchCommerceOrderProcessor 都将在 Java 平台上运行。
我需要对这些组件的设计提出建议。特别是下面的:
commerceOrderRecorderService
考虑到性能和可扩展性,他设计色谱柱的最佳方式是什么?我是否应该将整个订单(复杂实体)存储为单个 JSON 对象。订单属性没有搜索要求。我们至少可以等到它们被批处理器处理。考虑 - 单个订单可以包含许多子项目 - 在处理时,每个子项目都可以以不同方式完成。为这种数据结构设计列可能是一种矫枉过正
什么应该是关键,因为数据量会很高。假设在高峰期每秒进行 10 次交易。在 cassandra 中创建此类事务数据的任何库或最佳实践?TTL也能有效使用吗?
batchCommerceOrderProcessor
- 应该如何检索行进行处理?
- 如何确保批处理器的多线程实现(也可能在多个节点上运行)将具有行级隔离。也就是说,没有两个实例会同时读取和处理同一行。没有重复处理。
- 如何在一段时间后清除数据,同时对压缩等 cassandra 进程友好。
欣赏设计输入、代码示例和库指针。谢谢。