摘要:方法,如圖總結因為灰度環境在公司內網,訪問量較小,相比方法,方法可以暫時解決灰度測試時的緩存問題。但是仍然存在風險。
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連接,不要出現既用主庫、又用從庫;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30396.html
摘要:導讀在今年騰訊云峰會上,開源技術同樣是一大亮點。此文是微票時代技術副總裁楊森淼在現場有關微票兒的實踐之路分享的實錄。 導讀 在今年騰訊云峰會上,開源技術同樣是一大亮點。作為開源技術的集成平臺,Cloud Native 專場給各家提供了針對 OpenStack 應用以及背后填坑之路作深度探討的機會。此文是微票時代技術副總裁楊森淼在現場有關《微票兒的 Cloud Native 實踐之路》分...
摘要:導讀在今年騰訊云峰會上,開源技術同樣是一大亮點。此文是微票時代技術副總裁楊森淼在現場有關微票兒的實踐之路分享的實錄。 導讀 在今年騰訊云峰會上,開源技術同樣是一大亮點。作為開源技術的集成平臺,Cloud Native 專場給各家提供了針對 OpenStack 應用以及背后填坑之路作深度探討的機會。此文是微票時代技術副總裁楊森淼在現場有關《微票兒的 Cloud Native 實踐之路》分...
閱讀 2178·2021-11-24 09:38
閱讀 3242·2021-11-08 13:27
閱讀 3083·2021-09-10 10:51
閱讀 3143·2019-08-29 12:20
閱讀 663·2019-08-28 18:28
閱讀 3459·2019-08-26 11:53
閱讀 2706·2019-08-26 11:46
閱讀 1515·2019-08-26 10:56