分布式系统-异步
异步,是分布式系统重要的设计原则之一。
为什么异步很重要呢?
试想一个场景,在电商业务中,用户下单并支付成功后,需要给店家推送一个消息,告诉店家来订单了,抓紧发货。
这个推送功能,如果和支付回调接口做成同步,会有什么问题呢?
要知道,系统总是不可能绝对稳定的。如果推送接口异常或者超时了,主流程就会受到影响。特别是超时,可能导致系统链接打满,从而引发系统假死。
说到这,您可能知道问题关键所在了吧?
一个非核心功能的异常,可能影响主流程,甚至引发系统崩溃。
所谓异步,便是将非核心功能做成异步,避免影响主流程,提高系统可用性。
异步的技术有很多,介绍其中比较典型的几个:
多线程:
可以通过线程池的技术来实现,将非核心任务,放入线程池任务队列中,由独立的线程来处理。
使用这个技术,要特别注意配置队列的大小,避免oom(内存泄露)导致系统假死。
消息中间件:
通过消息中间件,可以将非核心业务解耦。但是要特别注意,发送消息到消息中间件的动作,最好也用多线程来实现。
定时:
对于时效性要求不高的业务,可以通过定时跑批来实现。这个方案,要特别注意,每次取待处理数据,一定要控制住数据量,避免一次性加载过多数据。
浙公网安备 33010602011771号