应用系统的缓存实践

背景:

重构后需要通过调用dubbo接口获取数据,数据量比较大,需要做缓存



 

缓存策略:

1、客户端缓存

      存在的问题:  

                      缓存数据多份分散在不同的应用服务器上,应用机器越多,总占用缓存空间就越大;

                      数据量很高的情况,这种方案完全不可行

                      大量的客户端,数据更新一致性问题

2、服务端缓存,

      客户端每次直接接口调用取      

      存在的问题:

                       高请求量的情况下,如果每次返回的数据量也高,缓存服务提供方的网络流量是个瓶颈

                      每次返回大数据量的话,网络开销和性能也是问题

选择:

平衡指标:响应时间,存储空间(数据量),数据一致性(数据更新频度),网络流量,请求量(次数)
总数据量:

高:适合服务端

小:适合客户端,服务端

------------------------------------------------------------------------------------------

一致性更新(实时性)要求:

强:适合服务端

弱:适合客户端,服务端

更新频度:

高:服务端

低:客户端和服务端都可以

注:因为服务端的机器相对较少,更新更及时;

------------------------------------------------------------------------------------------

请求次数/网络流量/响应时间

如果并发度非常高,建议在客户端,假如并发度极高,每次取得的数据都一样,那客户端没有必要每次都重新取值。

当然如果fuwu端能应对,放在服务端也可以,服务端也可以通过扩容等手段来处理

网络流量和响应时间有类似的分析

注:优先考虑服务端。

最佳实践:

数据量极高:服务端,不用怀疑

更新频度高:服务端,不用怀疑

一致性要求高:服务端

并发度非常高 && 数据更新频度低&&一致性要求低:客户端。

猜你喜欢

转载自wangxinchun.iteye.com/blog/2370071