深入探索 Java EE 中 CQRS 系统的实现与通信策略
1. 应用边界的实现
在 Java EE 中实现应用边界,这更多是一个系统架构层面的问题,而非单纯的实现问题。微服务之间的通信应采用与技术无关的协议。Java EE 对 HTTP 有很强的支持,因为 HTTP 和 REST 服务都使用超媒体。
2. CQRS 实现概述
CQRS(命令查询职责分离)为创建分布式应用提供了一种有趣的方法,可实现可扩展且最终一致的业务用例。目前,虽然大家对 CQRS 兴趣浓厚,但企业中对其使用的了解还比较少。不过,CQRS 是一种架构风格,开发 CQRS 系统并非一定需要特定的框架。
3. 系统接口
CQRS 系统接口用于从系统外部发起业务用例。例如,客户端访问服务员系统来订购汉堡。这些接口供外部使用,理想情况下应使用与技术无关的协议实现。
- 对于类似 REST 的 HTTP 服务,命令服务实现修改资源的 HTTP 方法,如 POST、DELETE、PATCH 或 PUT。
- 查询服务通常仅实现通过 GET 查询资源的方法。
在示例中,客户端向命令服务资源发送 POST 请求来创建新的餐食订单,而查询服务通过 GET 资源检索餐食订单。这些 HTTP 接口用于外部通信,而应用内部通过事件中心发布的事件进行通信。
4. 使用 Apache Kafka 的示例场景
这里使用 Apache Kafka 作为分布式消息代理,它具有高性能和高吞吐量,支持发布/订阅模式。不过,在当前阶段,Apache Kafka 并未实现所有 JMS 语义,示例将使用 Kafka 特定
超级会员免费看
订阅专栏 解锁全文
360

被折叠的 条评论
为什么被折叠?



