Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 当用户创建大量的 sg 且写入少量数据时,可能导致产生大量的 raft 组,对集群的 CPU 资源产生浪费,这对存储引擎的线程模型提出了一定的挑战。
    • 可能的解决方案(可以都做):
      • 方案 1:目前单机版推荐用户的存储组数 * VSG 个数 = 总核数,在新分布式架构中,可以为 sg 指定 vsg 的参数,默认为集群总核数/副本数。这样一方面方便单 sg 用户去充分利用集群所有的存算资源,也能给为多 sg 用户做细粒度的资源分配提出方案。
      • 方案 2:在存储上,此方案更便于做到 IO 的隔离。在计算上,参照 TiDB,CockroachDB 等数据库去做 multi-raft 的优化,包括但不限于心跳合并,线程池合并等。可以抽象出一些复用的线程池并对计算做一些管理。其实就跟操作系统对不同进程提供的保证一样,在我看来,没必要去限制进程个数不多于核数。尽管当进程过多时进程切换会带来一定的性能损耗,但其扩展性一定是更强的,而且聪明的程序员一定能从自己的应用场景考虑去避免频繁的进程切换。的优化,包括但不限于心跳合并,线程池合并等。可以抽象出一些复用的线程池并对计算做一些管理。其实就跟操作系统对不同进程提供的保证一样,在我看来,没必要去限制进程个数不多于核数。尽管当进程过多时进程切换会带来一定的性能损耗,但其扩展性一定是更强的,而且聪明的程序员一定能从自己的应用场景寻找到避免频繁进程切换的解决方案。


调研

TDengine

tdengine 允许通过配置参数的方式去限制最大 vnode 的个数,其一个 vnode 只能管理一个 database 的数据。

...