返回首页
最新
我正在构建 Sklad,这是一个用 Zig 编写的小型键值数据库。目前它支持基本的设置/获取/删除操作、TTL(生存时间)和范围查询。其主要思想是使用无锁数据结构,并围绕一个由少量工作线程处理的异步任务队列来构建引擎。任务队列是一个无锁的多生产者多消费者(MPMC)队列。内存表(Memtable)也是一个无锁的跳表。在代码中,我还使用了无锁的仅追加队列和栈。目前我唯一使用锁的地方是写入预写日志(WAL)。
请求处理管道被拆分成小任务。一个 I/O 工作线程接受传入请求。当新请求到达时,I/O 工作线程会发布一个读取请求任务,然后由其中一个通用工作线程来处理。接下来,请求会经过一系列更小的任务:查询处理任务解析查询,执行任务执行操作,最后写响应任务将结果发送回客户端。每个阶段都会将下一个任务发布到队列中,而该任务可能会被不同的工作线程拾取。工作线程的最大数量由配置参数控制,并且有简单的逻辑来淘汰闲置工作线程,并在工作负载增加时生成新的工作线程。
Sklad 还收集内部指标,如请求延迟、任务延迟、队列等待时间、待处理的内存表数量和活跃工作线程数量。目前,这些指标通过专门的指标请求暴露出来,但我希望将它们作为引擎自适应行为的输入,例如扩展工作线程池、决定何时进行合并,以及可能调整 SSTable 参数,如内存表大小或每个键的布隆过滤器位数。
GitHub: <a href="https://github.com/sklad-dev/Sklad" rel="nofollow">https://github.com/sklad-dev/Sklad</a>
Suparagent AI 是一个统一的人工智能工作空间,旨在为希望将所有功能集中在一个地方而无需在多个人工智能工具之间切换的人们提供服务。如果您曾尝试过像 Manus 或 Genspark 这样的产品,Suparagent 是一个强大的替代方案,它将 AI 聊天、AI 编程、AI 研究以及 AI 图像和视频生成等功能整合在一起。
一个简单的宝可梦轮盘工具,用于生成随机队伍和挑战模式,特别适用于Nuzlocke风格的游戏。