分享 Octokiq!🐙, 基于 ractor 的后台处理服务 🚀(附简单跑分)

BranLiang · 2020年12月30日 · 最后由 xinyuewaisong 回复于 2021年01月02日 · 1396 次阅读
本帖已被管理员设置为精华贴

Ruby 3.0 终于在圣诞节发布了🎉

对其中 ractor 带来的多核支持比较感兴趣,于是基于测试的态度开发了一个简单的类 sidekiq 后台服务。gem 已经发布 0.1.0 版本,有兴趣的也可以下载进行测试体验。暂时还只有最最基础的功能,不过整个代码结构也为未来的扩展提供了空间。

项目地址: https://github.com/BranLiang/octokiq

Octokiq demo

说一下总体感受:

  • 速度貌似有不小的提升
  • 第三方 gem 的 ractor 支持不是很理想,包括基础的 redis-rb 的使用都存在问题
  • ENV 在非 main-ractor 环境下面无法访问,ractor 里面能够访问的 object 限制较大
  • 如何让自己的代码保持 ractor safe 是今后需要考虑的内容
  • 如何判断代码是否 ractor safe?

跑分

https://github.com/BranLiang/octokiq/tree/main/examples/benchmark

运行 50 万个同样任务花费的时间

Sidekiq Octokiq(Thread) Octokiq(Ractor)
86s 75s 42s

参考文档:

有跑分吗

hooopo 回复

暂时还没有

hooopo 回复

简单测了一下 😀

BranLiang 回复

看起来不错 有内存和 cpu 相关的数据吗

最近在搞一个业务逻辑相对简单,并发量比较大的任务,都打算用 crystal.cr 了,如果 sidekiq 资源利用率和稳定性可以的话,就不用改代码了...

https://github.com/mperham/sidekiq.cr

hooopo 将本帖设为了精华贴。 12月31日 15:59

实在点的需求,能集成 ActiveJob 用到 Rails 项目里面不?

huacnlee 回复

应该可以

我用 celery,坚如磐石

Jim 回复

celery python?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号