有状态服务例如:MySQL 、PG 、Redis (算半个吧毕竟当缓存用的时候不 care )、Prometheus
这些服务可以做 Sharding ,例如 10 个 MySQL 实例负责 Hash(xx) % 10 的数据范围,Prometheus 可以通过 Operator 实现。
但是有些设计不当的场景,这些有状态的服务可能过度扩容了,例如扩到了 10 个 MySQL 实例,实际上过了某个时间(例如双 11 )只需要 2 个就可以支撑业务。
有什么设计和缩容机制可以应对类似的场景呢?( PS:不需要局限于上面这个例子,例如等数据自然过期然后清理掉实例也算一种解决方案,不同的解决方案都适合什么样的场景?)