摘要:方法,如图总结因为灰度环境在公司内网,访问量较小,相比方法,方法可以暂时解决灰度测试时的缓存问题。但是仍然存在风险。
1.生产与灰度数据缓存背景:php做web开发,MVC,phalcon
原因:
service层获取数据,有新增数据字段;
controller层是通过redisCache调用service接口;
redisCache采用redis-file双缓存结构,可能存在情况:redis-cache有效;file-cache有效;直接本地调用service,再写进redis和file-cache中;
线上有个脚本会每隔1秒通过redisCache调用一次此service接口,并且强制刷新缓存(redis-file);
灰度环境和生产环境用的是同一套redis,而且必须这样;
所以,这就造成线上的脚本不断的从线上的service中取得数据,并刷新的redis-file缓存中,从而造成灰度环境直接读了线上缓存,导致灰度代码的service变更没有生效
尝试解决:
灰度代码:问题controller调用redisCache接口,有强制刷新参数,将其置为false;
存在问题:这样是恨不正确的做法,会把灰度的service数据强制刷新到redis-file缓存中,从而导致线上缓存出现脏数据,这样后果很严重!!
灰度代码:问题controller中,直接调用本地的service,不走缓存;
存在问题:导致灰度环境的所有(此controller)请求直接打在mysql上,从而增加了mysql本身的风险。
(方法1、2,如图)
总结:因为灰度环境在公司内网,访问量较小,相比方法1,方法2可以暂时解决灰度测试时的缓存问题。但是仍然存在风险。
(各位看官,有木有更好的解决方案?)
原因:
环境:php+mysql+phalcon,生产环境,mysql存在主从;
通过接口传入A、B两组数据并在一个事务中分别插入到A-table、B-table中,提交事务,再更新A刚插入的一个字段;
更新通过phalcon的findFrist找到数据 刚才插入的数据,更新字段,调用save;
// 示例代码 ATable,BTable都是继承phalcon的model $a = array("id" => 1, "testa" => "data"); $b = array("id" => 1, "testb" => "data"); // 插入数据 $db->startTrascation(); $a_obj = new ATable(); $a_obj->id = $a["id"]; $a_obj->testa = $a["testa"]; $a_obj->save(); $b_obj = new BTable(); $b_obj->id = $b["id"]; $b_obj->testb = $b["testb"]; $b_obj->save(); $db->commit(); // 更新数据,findFirst $update_a_obj = ATable::findFirst(array("id=:a_id:", "bind" => array("id" => $a["id"]))); $update_a_obj->testa = "new_data"; $update_a_obj->save(); // 这里就会出错,因为这里findFirst走了从库 // -----------------说明---------------------- // findFirst走从库是项目本身在model层做的初始化 public function initialize() { parent::initialize(); $this->setReadConnectionService("db_r"); $this->setWriteConnectionService("db"); } // setReadConnectionService由phalcon底层提供
可参考phalcon-model源码
总结:1. 永远不要认为主从同步;2.同一个mysql连接,不要出现既用主库、又用从库;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30396.html
摘要:导读在今年腾讯云峰会上,开源技术同样是一大亮点。此文是微票时代技术副总裁杨森淼在现场有关微票儿的实践之路分享的实录。 导读 在今年腾讯云峰会上,开源技术同样是一大亮点。作为开源技术的集成平台,Cloud Native 专场给各家提供了针对 OpenStack 应用以及背后填坑之路作深度探讨的机会。此文是微票时代技术副总裁杨森淼在现场有关《微票儿的 Cloud Native 实践之路》分...
摘要:导读在今年腾讯云峰会上,开源技术同样是一大亮点。此文是微票时代技术副总裁杨森淼在现场有关微票儿的实践之路分享的实录。 导读 在今年腾讯云峰会上,开源技术同样是一大亮点。作为开源技术的集成平台,Cloud Native 专场给各家提供了针对 OpenStack 应用以及背后填坑之路作深度探讨的机会。此文是微票时代技术副总裁杨森淼在现场有关《微票儿的 Cloud Native 实践之路》分...
阅读 2156·2021-11-24 09:38
阅读 3223·2021-11-08 13:27
阅读 3065·2021-09-10 10:51
阅读 3065·2019-08-29 12:20
阅读 627·2019-08-28 18:28
阅读 3412·2019-08-26 11:53
阅读 2686·2019-08-26 11:46
阅读 1468·2019-08-26 10:56