🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
我是3y,一年CRUD
经验用十年的markdown
程序员👨🏻💻常年被誉为职业八股文选手
好几天没更新austin
的系列文章啦,主要是一直在写austin
的代码。而这篇文章我想了很久标题,最后定为《优雅,不过时》。文章的内容主要由以下部分组成:
- 应用发布重启了怎么办?内存数据不是丢失了吗?
- 什么是优雅停机?如何实现优雅停机?
- 如何优雅地调整线程池的参数?
如果你的项目遇到了类似的问题,也可以借鉴下我今天所讲解的内容,读完我相信你肯定会有些收获。
01、应用发布重启了怎么办
众所周知,如果我们系统在运行的过程中,内存数据没存储起来那就会导致丢失。对于austin
项目而言,就会使消息丢失,并且无法下发到用户上。
这个在我讲述完我是如何设计「发送消息消费端」以及「读取文件」时,尤其问得比较多。为了部分没有追更的读者,我再简单讲述下我这边的设计:
在austin-handler
模块,每个渠道的每种消息类型我都用到了线程池进行隔离而消费:
在austin-cron
模块,我读取文件是把每一条记录放至了单线程池做LazyPending
,目的为了延迟消费做批量下发。