有些场景如稀缺资源(秒杀、抢购)写服务(;评论、下单)、频繁的复杂查询(评论的最后几页)等。因此需要限流手段,限制这种场景下的并发/请求量。限流算法有:令牌同、漏桶、计数器。
如果应用不设置超时,可能会导致请求
响应慢,甚至造成应用雪崩。读服务适合重试,但写服务大多不能重试(如写订单,如果写服务是幂等性的,则允许重试)次数太多。
多级缓存
指在整个系统框架的不同系统层级进行数据缓存,以提升访问效率。
大value缓存,尤其是使用Redis(单线程)时。遇到这种情况可以考虑使用多线程实现的缓存memcached,来缓存大value;或者对value进行压缩;或者将value拆分为多个小value。客户端在进行查询、聚合。
异步并发实战
在java中Tomcat给每一个请求分配一个线程,并一直占阻塞用次线程,直到返回数据。
在调用依赖的服务响应比较慢时,应该让出线程和cpu来处理下一个请求,当依赖的服务器返回后在分配相应的线程继续处理。解决方案:异步/协程,
参考链接:https://blog.csdn.net/u012289341/article/details/79790756