我开始讨论https://disqus.com之类的 Spring Boot 应用程序。
- 用户可以创建圈子(社区/组)
- 用户可以订阅/取消订阅/取消订阅一个圈子。
- 用户可以将文档/图像/视频发布到圈子或个人用户
- 每个用户都有一个收件箱提要
专为具有高可扩展性要求的高用户活动而设计,我正在关闭以 Kafka 为骨干的 Activity Streams (W3C Activity Stream 2.0)。
我已经使用 Angular 2.0 前端设置了分布式云原生微服务架构(Spring 配置服务器、API 网关、Eureka Discovery)。
我正在研究 Kafka,并希望您对我应该如何进行架构和设计来满足我的要求的看法。
再具体一点:
Kafka producer 负责将通过 HTTP 发送的 Activity 转换为基于 Activity 2.0 规范的 POJO 并发布到 Kafka。我应该如何设计发布者来处理,比如每秒一百万条消息。
消费者是不同的服务,如圈子服务、推荐服务、用户服务等。我幼稚的想法是让这些服务订阅一个主题并只提取他们感兴趣的那些消息。例如,如果一个用户在一个圈子上发帖,圈子服务将使用它来复制并分发给该圈子的所有用户圆圈。这里的另一个问题。如果一个圈子包含 1000 个用户,那么制作副本的最佳方法是什么?
提前致谢。