一种比较流行的解决方案是使用 Ambassador 模式。
可以理解,将在主应用程序旁边启动一个附加应用程序。分片分发逻辑将放置在大使中。这样,主要服务将被卸载。
- 第一步,客户端发送具有适当有效负载的请求。
- 第二步,应用服务器决定必须将此有效负载保存在数据库中,并将带有数据的请求发送到大使应用。
- 该大使又具有一种在分片之间(通过元信息或哈希函数)分配数据的算法。
- 最后一步,信息被发送到所需的分片。
通过这种方法,分发服务和不必要的负载从主服务中删除。
值得注意的是,将大使置于一台物理主机中以减少网络延迟很重要。
这可能不是最好的方法,而只是一个选择。