第一次接触到的异步场景是:日志记录、重试机制和预警机制
其中使用到了消息队列的概念, 主要是利用redis的list结构在业务操作后LPush至相应的key中,另外配备一个windows service线程专门RPop出来,并按照处理策略的配置来进行处理;如:重试多少次,重试间隔多久或者发送邮件还是短信通知;
在未读本书前一直以为异步场景都是直接使用消息存储来完成就可以,读完才发觉其实这样的实现方式简单粗暴,但还是比较脆弱的;如:1) 生产者和消费者直接面向消息存储,所以他们都必须完全清楚路由规则、数据结构,存储的扩容将导致所有端的修改 2) 没法确认消息接收和投递的成功 3) 不管消息处理的成功与否,消息都将被pop掉 4) 消息的消费为拉模式,没有重发机制,可能会漏消息
这种方式简单粗暴,但是可靠性是较低的,在时间紧迫且是上述 可容忍消息丢失的场景下才合适;如果是应用间的异步和解耦,还是需要消息中间件这样子消息管理角色来确保消息的可靠性。
所以嘛,要多看案例、多看书、多研究下开源分布式的组件,不然会以为自己看过的那一粒沙子就是整个沙滩的模样。