timzaak / blog

8 stars 1 forks source link

scheduler + message queue manager #21

Closed timzaak closed 2 years ago

timzaak commented 6 years ago

在微服务的世界中,各个服务是无状态的,而异步任务和定时任务是需要一个主 master 来做统一管理的。 目前没发现有合适的...

timzaak commented 6 years ago

最想用的 queue 是 Tencent/phxqueue 可惜是 c++ 写的。所以暂时先找个简单的 queue,例如 redis,然后再复杂化,但需要参考其它 Queue API 的设计,好泛化。例如 kafka。 定时任务管理器: Quartz ,毕竟需要 crontab 的解析能力, 至于其任务执行能力是否需要,有待观察 rpc 协议 :Avro / grpahQL / restful Http ? this is a question

整套东西应该是一个可横向拓展的。这就对定时任务如何管理提出了尖锐的需求。 目前先不考虑那没多,先把队列任务做好了再说

消费者和 Queue 之间的交互如何设计, 目前还没想好

timzaak commented 6 years ago

Quartz 本身通过 database 来支持 cluster,感觉太重了。 觉得还是需要写个插件移除掉。 目前有用zookeeper 来搞的。

timzaak commented 6 years ago

scheduler-architectures

看完这篇文章方知道 scheduler 是多么麻烦的事情,以及各大框架具体实现到了哪一个 level。当然这些主要是针对资源做任务分发。可以暂时不用关心。但这些才是最关键的 :) 。

timzaak commented 5 years ago

花了将近半年写的一套交易代码, scheduler + message queue 相关的问题直接用 akka + Quartz 解决。 在消息没达到一定量级的时候, akka + Quartz 完全能搞定各种场景。 Quartz 也只是用来解析处理cron 和 定时问题。具体执行,就是通过发消息到特定的逻辑Actor就可以了。

timzaak commented 4 years ago

目前,我发现我有太多的场景要用到 调度 系统。可能后面会基于 activemq + akka + Quartz 封装一遍。 原因是 activemq 的长链接客户端SDK 比较稳定。

timzaak commented 4 years ago

activemq 换成 rocketsmq,不管哪个,其 高可用 开销还是很大的,扛不起

timzaak commented 4 years ago

线程池调度方面参考: 硬核!Rust异步编程方式重大升级:新版Tokio如何提升10倍性能详解