本文共 599 字,大约阅读时间需要 1 分钟。
Seastar 是一个 c + + 库,用于在现代多核机器上编写高效的复杂服务器应用程序。
传统上,用于编写服务器应用程序的编程语言库和框架被划分为两个不同的阵营: 注重效率的阵营和注重复杂性的阵营。 有些框架非常高效,但是只允许构建简单的应用程序(例如,DPDK 允许单独处理数据包的应用程序) ,而其他框架允许构建极其复杂的应用程序,代价是运行时效率。 Seastar 是我们两全其美的尝试: 创建一个允许构建高度复杂的服务器应用程序的库,同时实现最佳性能。
Seastar的灵感和第一个用例就是Scylla,是对 Cassandra 的重写。 Cassandra 是一个非常复杂的应用程序,但是,通过 Seastar,我们能够重新实现它,吞吐量增加了10倍,并且大大降低了延迟并且更加一致。
Seastar 提供了一个完整的异步编程框架,它使用两个概念——future
和continuations
——来统一表示和处理每种类型的异步事件,包括网络 i / o、磁盘 i / o 以及其他事件的复杂组合。
由于现代多核和多套接字计算机对于在核心之间共享数据(原子指令、缓存线跳动和内存栅栏)有很高的要求,Seastar 程序使用无共享编程模型,也就是说,可用内存在核心之间分配,每个核心在其自己的内存部分处理数据,核心之间通过显式消息传递进行通信(当然,这本身就是使用 SMP 的共享内存硬件)。
转载地址:http://yjxgj.baihongyu.com/