背景:
重构后需要通过调用dubbo接口获取数据,数据量比较大,需要做缓存
缓存策略:
1、客户端缓存
存在的问题:
缓存数据多份分散在不同的应用服务器上,应用机器越多,总占用缓存空间就越大;
数据量很高的情况,这种方案完全不可行
大量的客户端,数据更新一致性问题
2、服务端缓存,
客户端每次直接接口调用取
存在的问题:
高请求量的情况下,如果每次返回的数据量也高,缓存服务提供方的网络流量是个瓶颈
每次返回大数据量的话,网络开销和性能也是问题
选择:
平衡指标:响应时间,存储空间(数据量),数据一致性(数据更新频度),网络流量,请求量(次数)
总数据量:
高:适合服务端
小:适合客户端,服务端
------------------------------------------------------------------------------------------
一致性更新(实时性)要求:
强:适合服务端
弱:适合客户端,服务端
更新频度:
高:服务端
低:客户端和服务端都可以
注:因为服务端的机器相对较少,更新更及时;
------------------------------------------------------------------------------------------
请求次数/网络流量/响应时间
如果并发度非常高,建议在客户端,假如并发度极高,每次取得的数据都一样,那客户端没有必要每次都重新取值。
当然如果fuwu端能应对,放在服务端也可以,服务端也可以通过扩容等手段来处理
网络流量和响应时间有类似的分析
注:优先考虑服务端。
最佳实践:
数据量极高:服务端,不用怀疑
更新频度高:服务端,不用怀疑
一致性要求高:服务端
并发度非常高 && 数据更新频度低&&一致性要求低:客户端。