成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

性能優化:跨服務使用分布式緩存的三個思考

云計算 分布式
通常的設計要做服務化,一個服務對外提供增刪改查,而緩存這種優化應該放到服務內部。也就是說數據查詢服務查詢仍然需要通過API來調用數據存儲服務,存儲服務做不做緩存,數據查詢服務應該是不感知的。

最近遇到的幾個項目分別用到了本地環境和分布式緩存。對于各種類型,我們希望做成設計標桿,以后不管是業務團隊同學自己開發還是我們架構團隊幫助優化,都有一套標準的設計模版。

本文是使用Redis分布式緩存優化的項目。

要不要打破服務化的限制

當時拿到需求的時候有個糾結點:原來數據查詢服務通過RPC調用數據存儲服務,因為涉及RPC調用以及查數據庫,耗時長。所以希望我們加一層緩存,絕大多數情況下直接從Redis取數據。如下圖所示:

圖片

通常的設計要做服務化,一個服務對外提供增刪改查,而緩存這種優化應該放到服務內部。也就是說數據查詢服務查詢仍然需要通過API來調用數據存儲服務,存儲服務做不做緩存,數據查詢服務應該是不感知的。如下圖所示。

圖片圖片

而需求方的原始需求會破環服務的封裝性。這個矛盾怎樣來解決呢?可以這樣來考慮。作為一個服務,內部的數據處理,包括存儲、邏輯處理這些是要封裝在內部的。但是可以使用策略模式提供靈活的訪問API。RPC調用是一種訪問方式,redis調用是另外一種訪問方式。這樣就不算破壞封裝行。如下圖所示:

圖片圖片

數據一致性校驗算不算多余?

這個和需求方討論沒有達成一致。這也是為什么我連續三天都發文了。我不想破壞文章內容在實際實施時原本的先后順序,但這一篇要趕在技術評審之前發出來,作為評審前跟需求方討論的一個資料。

這個設計Redis和MySQL里數據各存儲了一份,既然有異構的存儲,架構團隊這邊認為數據一致性校驗是要做的。而需求方認為既然都是消費MQ消息后處理,如果處理的沒有問題就不會發生數據不一致的問題。所以只要有個手動運維補償機制來處理生產故障即可,沒有必要定時巡檢來做數據一致性校驗。

我一直遵從的理念是對于負責的服務或者功能,要做到:可觀測、可衡量、可應對。自己開發的功能模塊是正確的,怎樣衡量呢?

數據一致性檢查就是用來衡量正確性的。如果邏輯沒有漏洞,數據一致性檢查應該每次巡檢對比數據都是一致的。一旦出現不一致,就是邏輯上出問題了,都是需要case by case分析并做邏輯的修改或者補充的。

如果邏輯本來就簡單,跑了一年都沒有檢查出任何的數據不一致,這個檢查是不是浪費呢?服務和功能都是要演進的,要做變更。變更要做到可灰度、可監控、可應急。數據一致性檢查就是監控變更后邏輯正確性的手段。

總結來說:這個數據一致性校驗屬于業務巡檢的一項,是用來發現問題的。發現問題可以通過在設計、開發階段做嚴格的設計審查、代碼Review來避免一部分。通過邏輯來保證是否屬于過度設計?需求方對這個邏輯到底有哪些顧慮呢?

巡檢邏輯會不會增加業務的復雜性、對數據庫造成額外的壓力?

這個巡檢邏輯我們打算通過分布式調度任務來做。通過分布式調度平臺,可以手動觸發執行任務作為上線時初始化數據的手段,同時也是故障處理的應急預案,本來就是要做的,做成巡檢只是每天定時執行一次,不會增加業務的復雜性。

對數據庫的壓力方面,這個巡檢的確需要掃描數據庫。但是我們會通過控制分頁,采用>id,利用索引等手段來優化深度分頁,并且會通過觀察生產監控挑選低峰期執行,因為這是讀數據,不會加互斥鎖,表的數據量也不大,預計對數據庫的壓力可以忽略不計。

總結

我自己在溝通過程中犯了一個很嚴重的錯誤。在論證數據一致性巡檢有必要做的時候,我說:「業界都是這么做的。」我之前確實是調研過各個做的比較好的大廠,他們對于業務巡檢都非常重視。但是我的表達犯了在《批判性思維》這本書中介紹的「篤信權威」的錯誤。

更正確的處理方式是要從:優勢、劣勢、必要性、成本等角度來考慮。更要主動詢問需求方的顧慮。

責任編輯:武曉燕 來源: 編程一生
相關推薦

2018-10-18 08:15:27

開源分布式追蹤工具

2021-07-05 08:58:17

Golang分布式性能

2015-09-21 09:20:11

C#Couchbase使用

2011-06-14 10:35:15

性能優化

2022-07-21 18:51:13

性能優化

2023-05-29 14:07:00

Zuul網關系統

2011-11-30 14:21:19

Java分布式緩存

2023-05-12 11:52:21

緩存場景性能

2014-11-19 10:12:29

Java分布式緩存

2021-06-10 10:02:19

優化緩存性能

2024-05-08 10:20:00

Redis分布式

2022-04-07 17:13:09

緩存算法服務端

2022-06-08 07:36:03

LocustKubernete微服務

2018-12-14 10:06:22

緩存分布式系統

2023-12-28 11:04:06

2014-12-08 10:02:46

Docker開源跨容器服務

2023-02-28 07:01:11

分布式緩存平臺

2013-06-13 11:29:14

分布式分布式緩存

2019-02-18 11:16:12

Redis分布式緩存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲在线 | 国产女人叫床高潮大片免费 | 国产欧美一区二区三区久久手机版 | 夜夜夜操| www亚洲成人 | 日韩精品无码一区二区三区 | 性一交一乱一透一a级 | 国产免费看 | 久久精品—区二区三区 | 一区二区精品 | 九九久久国产精品 | 国产精品综合一区二区 | 男女又爽又黄视频 | 国产乱码精品一区二区三区忘忧草 | 国产亚洲网站 | 精久久| 国产一区 在线视频 | 日批免费在线观看 | 午夜合集| 精品国产乱码久久久久久蜜退臀 | 亚洲三级在线 | 久久国| 日韩电影一区 | 亚洲日本中文 | 成人亚洲精品久久久久软件 | 精品久久99 | 欧美精品一区二区蜜桃 | 日本a在线 | 精品亚洲一区二区三区 | 日韩三级 | 成人精品| 91av在线影院 | 国产精品久久久久久久久久久久久久 | 黄色片网站在线观看 | 欧美精品一区二区三区四区五区 | 久久夜夜 | 欧美日韩一区二区在线观看 | 精精国产xxxx视频在线播放 | 91看片免费版 | 看一级毛片 | 黄色在线观看网站 |