集群开发绕开缓存共用方法探讨
在集群开发的时候,为了提高数据访问效率和性能,一般都会采用缓存。取一个数据的时候,往往都是先到缓存中去找,若是找不到才会访问数据库。
开发一个系统的时候,若是修改了访问数据库的sql,需要测试这个sql是否正确,整个功能是否OK,这个时候,就必须访问数据库了,然后问题就来了,情况如下:
一个系统A是由很多子系统A1,A2,A3等构成的。开发的时候,有很多开发者在并行开发A1系统,也就是说在开发环境中,有很多个A1的服务器S1,S2,S3等。现在开发者D1修改了sql,部署在服务器S1上测试。因为缓存服务器是共用的,那测试人员在S1上看到的数据就有两种情况:
1.??????新sql获取的数据。S1访问数据的时候,缓存数据过期,直接访问数据库所得
2.??????老sql获取的数据。S1从缓存中读取的其他服务器获取的数据
在多人并行开发的时候,2的概率远远高于1,这样就会让测试人员得出一个错误的结论:没有任何变化,根本没改。
?
解决方案:
1.??????修改对应缓存的KEY。这样可以保证S1获取S1自己的缓存,用自己的sql访问数据库。但缺点是它不是必须的,纯粹是“为了测试而修改”。
2.???????(还没想到,正在思考中…)