43个版本
0.5.1 | 2020年4月10日 |
---|---|
0.5.0 | 2019年7月9日 |
0.4.11 | 2019年7月2日 |
0.4.1 | 2019年1月5日 |
0.2.10 | 2018年7月29日 |
#1445 in 异步
80KB
1.5K SLoC
kay
kay是一个...
- 高性能actor系统,适用于Rust
- 适用于实时模拟数百万实体
- 这些实体只通过异步消息进行通信
kay可以透明且简单地进行...
- 扩展到多个核心
- 多个网络计算机
- 使用
cargo web
和wasm
的浏览器客户端
它提供了...
- Actor
ID
识别- Actor类型的实例
- 向Actor类型的所有实例广播
- 泛型(类型擦除)Actor特质ID
- 网络计算机上的Actor实例
- 一个
Recipient<Message>
特质,用户为Actor可以接收的每种消息类型实现消息处理 -
InstanceStore
- 大量Actor类型实例的集合- 由
chunky
提供的紧凑且高效管理的内存存储,用于动态大小的实例状态 - 将消息派发到单个实例
- 非常高效地将消息广播到所有实例
- 由
- 使用内存映射文件实现的无序列化持久性、快照和加载actor和系统状态,由
chunky
实现 - 用于等待和聚合其他actor异步响应的未来和map-reduce等抽象
- "Essential" 消息类型,即使在Actor发生panic后也会处理,允许交互式检查整个panic的系统
它内部使用...
- 每个Actor类型有一个无界、多写单读、无锁的消息队列
- 多写单读
- 单读者
- 无锁
- 实验性的
TypeId
特性,用于给消息块标记其类型ID,以便在运行时进行消息处理函数派发 - 在
InstanceStore
中使用槽映射,为实例分配唯一的ID
,同时始终将它们保持在连续的内存块中。这使得在遍历它们进行广播消息时非常快速。
Kay受到面向数据游戏开发、Erlang以及面向对象原始思想的启发,因此以Alan Kay的名字命名。
依赖项
~5MB
~122K SLoC