#actor-system #instance #real-time #messages #framework #entities #experimental

nightly kay

为Rust设计的实验性高性能actor系统框架

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 异步

MIT 许可证

80KB
1.5K SLoC

kay

kay是一个...

  • 高性能actor系统,适用于Rust
  • 适用于实时模拟数百万实体
  • 这些实体只通过异步消息进行通信

kay可以透明且简单地进行...

  • 扩展到多个核心
  • 多个网络计算机
  • 使用cargo webwasm的浏览器客户端

它提供了...

  • 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