Kafka如何向具体用户发送消息?
How does Kafka sends message to concrete user?
系统包含用户实体。
每个用户都可以按类型获取消息。
如何在 Kafka 中组织这个?
我知道,我可以通过关键用户 ID 创建主题消息和存储消息,但如果有百万用户怎么办?
百万个分区?
默认情况下,Kafka 将使用消息密钥的哈希值,并根据分区数对消息进行循环。如果您有一百万个唯一键值和两个分区,则每个分区将获得 500,000 个键。如果您有十个分区,每个分区都有 100,000 个键,依此类推。
阅读更多:
- http://kafka.apache.org/25/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html
- https://medium.com/streamthoughts/understanding-kafka-partition-assignment-strategies-and-how-to-write-your-own-custom-assignor-ebeda1fc06f3
- https://www.youtube.com/watch?v=06iRM1Ghr1k&list=PL5T99fPsK7prvk569_RAbHuBXhEHLar4g&index=2&t=5s
如果使用 user-id 作为键时有一百万个用户,这意味着他们将在使用默认分区程序时按 hash(user_id) % num_partition
在分区之间进行拆分,即当您的 user-id没有倾斜。选择最适合您的用例的分区数。
系统包含用户实体。 每个用户都可以按类型获取消息。
如何在 Kafka 中组织这个? 我知道,我可以通过关键用户 ID 创建主题消息和存储消息,但如果有百万用户怎么办? 百万个分区?
默认情况下,Kafka 将使用消息密钥的哈希值,并根据分区数对消息进行循环。如果您有一百万个唯一键值和两个分区,则每个分区将获得 500,000 个键。如果您有十个分区,每个分区都有 100,000 个键,依此类推。
阅读更多:
- http://kafka.apache.org/25/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html
- https://medium.com/streamthoughts/understanding-kafka-partition-assignment-strategies-and-how-to-write-your-own-custom-assignor-ebeda1fc06f3
- https://www.youtube.com/watch?v=06iRM1Ghr1k&list=PL5T99fPsK7prvk569_RAbHuBXhEHLar4g&index=2&t=5s
如果使用 user-id 作为键时有一百万个用户,这意味着他们将在使用默认分区程序时按 hash(user_id) % num_partition
在分区之间进行拆分,即当您的 user-id没有倾斜。选择最适合您的用例的分区数。