高并发下的系统优化-请求合并
在互联网的场景下, 总会有一些接口长期大量的被访问,如个人信息,订单查询,商品查询等。这些请求的都有一个特点,就是查询简单,只需要传入一个id就可以进行查询。应对这种大量频繁的查询,我们可以做请求合并。
前提:在做请求合并有个重要前提,就是系统必须支持一次传入多个查询条件,然后得到返回结果,通俗的讲就是支持in的查询。
模拟场景:根据产品ID查询产品信息,并发2000次/秒
请求流程如下:
- 前台用户请求查询产品的接口 --> 后台controller接收请求 --> service调用mapper查询数据库或者第三方接口查询数据 --> 返回结果给前台
- 重复2000次如上请求。
造成的后果会在1s内查询2000次数据库或者第三方系统。
示例参考: https://blog.csdn.net/liuhongya328/article/details/103187633
技术要点:
将请求加一个请求队列,等待批量查询,然后通过CompletableFuture 返回。