如何解决单宿主机多实例部署导致的多宿主机资源分配不均?
设计两种算法来自动均衡多宿主机间的资源:
1. 预留制。算法比较简单,就是找到一个合适的内存充足的宿主机给实例漂移过去(什么叫漂移)
2. 完全平衡制。每台物理宿主机可以容纳的实例有限,可能由于某些实例设置的参数和实际使用不符,导致一些实例空占用了宿主机的实例配额。完全平衡制算法是先将内存空余较大的宿主机里内存使用率最小的实例迁移出去,然后再将其他宿主机上内存使用率高的实例迁移进来,通过不断的这样迁移来平衡多个宿主机间的内存平衡。
如何解决成本?
1. 通过SSD替换内存
2. 为了解决云上Redis售价高,自开发Redis海内外同步工具
如何解决水平扩容?
1. 将一层一致性hash改为多层,当需要扩容时,将需要扩容的分片设置为虚拟分片,然后给命中该分片的请求再次计算hash,从下一层分片中查找。由之前的一层一致性hash改为树形
2. 多层hash无法解决缩容问题,且扩容时风险程度较高,优化为当为某一集群扩缩容时,新建新集群先同步双写新老集群,数据同步以后直接切到新集群。
文章:
https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697269642&idx=1&sn=d480528b83b54c6c1d61d25126d17256&chksm=8376eebeb40167a83a10ce289280b6beba295fd298f5600eebe8355cb87456f64640a6bbf985&scene=21#wechat_redirect
https://m.ctrip.com/oa/trippal/chat/info/18f0b49d-a99d-55b1-9568-24a076989b37