这系列的学习笔记不会粘贴复制书中的内容,更多的是我看了原文之后按照自己的理解,结合自己的项目经验谈自己的感悟。
这里面谈到了两个技术1、API网关限流 2、消息队列
API网关限流,这个在kong中作为插件服务,安装后就可以直接使用。限流简单点说就是为了避免后端业务服务器被大流量打垮,在API网关层做了限制,如果单位时间内过多的流量进来直接给屏蔽掉。
那么所有的压力都由API网关承担着,如果大流量把API网关给打垮了,那也是没有办法的,一般会选择性能更高的服务器安装API网关程序。用什么样配置服务器,这块的经验我不是很多给不了一个比较合理的意见。
消息队列主要用来做异步任务处理的,比如API接口发来一个请求,实际的任务比较耗时,那么就先把任务放到队列里面,接口直接返回"正在处理", 队列的消费者处理任务完成后通知用户任务处理完成了。
说一个我接触到的项目中用到消息队列的地方-------视频处理,用户上传了视频之后,视频的处理特别耗时一般需要5分钟左右才能处理完成。这种情况是必须要用异步任务的,异步任务可以是消息队列,也可以是写个定时任务去数据库里面去取没有完成的任务,然后去处理。第二种方案会有很多资源上的浪费,一般性能要求不高、实时性要求也不高就用用。但是当时的业务情况是对性能有一定要求的,尽量减少资源的浪费,就用到了消息队列。
后端接口用的是php写的,视频处理用的是python, 消息队列的好处也可以方便不同的语言之间调用。同时也方便业务扩展,后期需要处理的视频多了之后,可以再增加机器来加快处理。