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

BranLiang · December 30, 2020 · Last by xinyuewaisong replied at January 02, 2021 · 1385 hits
Topic has been selected as the excellent topic by the admin.

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

参考文档:

有跑分吗

Reply to hooopo

暂时还没有

Reply to hooopo

简单测了一下 😀

Reply to BranLiang

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

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

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

hooopo mark as excellent topic. 31 Dec 15:59

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

Reply to huacnlee

应该可以

我用 celery,坚如磐石

Reply to Jim

celery python?

You need to Sign in before reply, if you don't have an account, please Sign up first.