采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
是在自己程序中创建一个任务队列,让线程池去处理来保证同一时刻与外部服务只有少数 socket吗?
一般一批线程处理缓冲(排队),缓冲可以是内存,但是mq和redis更安全,因为提供持久化机制。另一批线程处理具体的工作,也就是不断从队列中读出任务进行处理
还是感觉有点抽象,两批线程对一个队列进行处理,有点像生产者消费者模型,如果是具体到开发场景,我接收到一个请求,但这个任务比较耗时,我就把任务丢到了任务队列比如 redis 里,然后我要怎么做,是开一个轮询的工作线程痴,每隔10秒就从任务队列里取比如 100条数据,使用一个批量处理的接口每次处理100条,这样一个 socket 就可以做完之前要创建100个socket才能做的事情了
请求没有必有去Redis,因为请求本身不怕失败(比如说0.003%的失败率,是可以接受吧?)。——客户端、或者服务端可以重发请求的。 所以请求本身丢到阻塞队列就可以了。 以nginx为例,nginx就内存中实现了一个缓冲区,然后由多个Worker轮询从缓冲区中读取请求。
登录后可查看更多问答,登录/注册
深度剖析大厂面试高频真题,让你秒变offer收割机
1.5k 6
1.1k 11
1.1k 10
809 10
894 8