tera
tera copied to clipboard
master load meta table
大开脑洞的想法: 获得的好处:
- 彻底解决meta和master内存不一致问题
- load/unload/split...不需要单独为meta弄一个if分支
- 对meta的访问不会被其它表影响
- 可以做针对meta的专门优化,例如全内存存储、利于查询的内存结构
带来的问题:
- 写扩展性:写是由master发起的,如果写meta成为瓶颈,那master的处理一定先成为瓶颈。在解决这个问题之前,master需要先拆分。
- 读扩展性:master可以指定一些ts成为meta代理,只提供读服务。
- master不能挂:master本来也不能挂(挂了没人管load),master本来也可以挂(master有热备)。
- 架构不够牛逼啊:如人饮水冷暖自知,牛逼不能当饭吃,如果不是遇到各种问题,我也不会有这想法了。
抛开改动成本这些问题,假如tera是从头开始,你会支持这种设计吗?请写下你的看法。
听起来把master拆成meta server cluster和scheduler可以达成以上效果并避免以上问题。
把meta放在meta server cluster支持tablet热备更容易。