线程锁竞争和切换的开销几乎为0,代码也不用考虑多线程竞争,逻辑大大减化;此外Niagara是一个全异步执行引擎,采用了基于future,promise和continuation的方式来表达咱们的异步执行逻辑,比传统的callback方式逻辑清晰明了了不少,很舒服的同时也不易出错。promise
存储内核方面,在调研了多种存储模型之后,最终咱们选择了LSM结构,由于它能让咱们方便的进行读、写和空间放大的调节。相比同是LSM架构的RocksDB,咱们作了多方面的优化来提高性能,包括:多线程
在做为Blink statebackend的集成中,咱们作了checkpoint时候不清memtable的优化,从而减小了latency抖动问题。架构
[1] Seastar: http://www.seastar-project.org
[2] Masstree: https://pdos.csail.mit.edu/papers/masstree:eurosys12.pdf异步