- 异步化:或者使用协程。原则是不要阻塞线程。
- 区分优先级:不要让低优先级的作业阻碍高优先级的作业。可以设置一个比例,保证低优先级的作业,也有执行的机会,不会被高优先级的作业饿死。
- 作业的投递者,可以设置超时时间,如果发现超时,那么直接abort,不再执行,避免作业堆积后性能崩溃。
- 需要设计作业的批量处理机制。很多类似的作业,他们挨个处理和批量处理,性能相差非常大。例如一个读取版本号的作业,如果10000个节点都发来这个请求(作业),那么就对应10000个请求,如果挨个执行,那么可能需要对同样的流程执行10000遍(每次执行就是加锁、读版本号、解锁)。但是如果批量处理,那么可能只需要执行一次就可以拿到结果,把结果返回给10000个不同的节点就可以。这个对性能会有极大的提高。
- 考虑对于读、写作业,区分不同的线程。
- 考虑支持abort
- 性能统计(方便定位出耗时的作业)
- 高可靠作业的实现:考虑持久化作业,必须需要考虑恢复作业时的顺序。
- 考虑设计互斥集(并发集):可以从作业层面控制哪些作业可以一起执行,哪些作业一定不可以一起执行。这块设计其实挺复杂的,不展开细说了。
- 给作业关联一些label,类似k8s,这样可以方便做select,做统一的调度。
大量高并发作业调度、处理经验总结
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一.处理机调度相关基本概念 处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行。 提高处...
- 原文出处: 杨步涛的博客 一、 设计理念 1. 空间换时间1) 多级缓存,静态化客户端页面缓存(http head...