我们正在开发分布式数据处理系统,Hazelcast是我们正在使用的组件之一。
我们有一个流数据输入到集群,我们必须处理数据(更新/累积等)。存在分布式请求映射,其具有本地入口监听器。我们处理一个新的请求(在内存中更新/累积)并放到另一个分布式地图,这是实际的数据网格。
因此,我们可以在不锁定的情况下同时处理每个请求。但是,将数据放入主数据网格可能涉及网络旅行。
有没有办法可以强制指定选择哪个节点?基本上我想把它放在datagrid的本地地图中。这可以通过避免网络旅行来提高整体吞吐量。
通过使用分区识别密钥,我可以指定所有这些密钥都转到同一个分区,但是,我希望实际上指定'分区。这可能吗?
答案 0 :(得分:1)
您可以为特定分区创建密钥。我们经常这样做进行测试。
为每个分区创建这样的密钥后,您可以使用
map.put(" yourkey @ partitionkey",value)
查看git repo并查找HazelcastTestSupport.generateKeyOwnedBy(hz)。
重要提示:可能是分区在某个时间点属于成员,但分区可以在系统中移动。例如。当成员加入/离开集群时,解决方案可能很脆弱。