原创 想成爲架構師,你必須掌握的CAP細節

理論的優點在於清晰簡潔、易於理解,但缺點就是高度抽象化,省略了很多細節,導致在將理論應用到實踐時,由於各種複雜情況,可能出現誤解和偏差,CAP 理論也不例外。如果我們沒有意識到這些關鍵的細節點,那麼在實踐中應用 CAP 理論時,就可能發現

原创 數據密集型應用系統

《數據密集型應用系統應用設計》:https://book.douban.com/subject/30329536/,翻譯:https://github.com/Vonng/ddia MIT6.284:https://www.simtoco

原创 geohash美團附近酒店搜索-技術方案

美團附近酒店搜索-技術方案 自Redis 3.2開始,Redis基於geohash和zset提供了地理位置相關功能。 什麼是Geohash Geohash是一種地址編碼,它能把二維的經緯度編碼成一維的字符串。比如,世界之窗的編碼是

原创 漏斗限流法

C++漏斗限流法 我們可以看到,就像一個漏斗一樣,進來的水量就好像訪問流量一樣,而出去的水量就像是我們的系統處理請求一樣。當訪問流量過大時這個漏斗中就會積水,如果水太多了就會溢出。 一般來說,這個“漏斗”是用一個隊列來實現的,當請求過

原创 Google Perf Tools安裝以及使用

Google Performance Tools安裝以及使用 這邊文章都記錄在github:https://github.com/NIGHTFIGHTING/gperftools-tutorial 一個優化的內存管理算法—tcma

原创 面試題 16.18. 模式匹配

題解: https://leetcode-cn.com/problems/pattern-matching-lcci/solution/hua-liao-ge-hui-su-de-si-lu-tu-bian-jie-qing-

原创 synchronized可重入鎖

什麼是可重入鎖?它有什麼作用? 可重入鎖,也叫做遞歸鎖,指的是在同一線程內,外層函數獲得鎖之後,內層遞歸函數仍然可以獲取到該鎖。 說白了就是同一個線程再次進入同樣代碼時,可以再次拿到該鎖。 它的作用是:防止在同一線程中多次獲取鎖而

原创 分佈式紅鎖的加鎖的lua底層設計原理

分佈式紅鎖的加鎖的lua底層設計原理 提前做2個動作: 1.先把3臺 redis key全部清空(爲了不受debug干擾,必須先刪除鎖) 127.0.0.1:6379> flushdb OK 2.isLock = redLock.

原创 淘寶短鏈接業務

##淘寶短鏈接如何設計? 體驗淘寶短鏈接業務場景 場景1:淘寶短信 你們應該收到淘寶的短信 【天貓】有優惠啦!黃皮金煌芒果(水仙芒)帶箱10斤49.8元! 核薄無絲很甜喔!購買: c.tb.cn/c.ZzhFZ0 急鮮豐 退訂回T

原创 採用docker部署3臺Redis分佈式紅鎖實例

採用docker部署3臺Redis分佈式紅鎖實例 docker run -p 6381:6379 --name redis-master-1 -d redis:5.0.7 docker run -p 6382:6379 --nam

原创 分佈式紅鎖的加鎖失敗的設計原理

分佈式紅鎖的加鎖失敗的設計原理 1.先把3臺 redis key全部清空(爲了不受debug干擾,必須先刪除鎖) 127.0.0.1:6379> flushdb OK 都設置爲30分鐘超時 過期 2.isLock = redLoc

原创 分佈式紅鎖的leaseTime的設計原理

3.分佈式紅鎖的leaseTime的設計原理 提前做2個動作: 1.先把3臺 redis key全部清空(爲了不受debug干擾,必須先刪除鎖) 127.0.0.1:6379> flushdb OK 都設置爲30分鐘超時 過期 2

原创 SpringSession+redis解決分佈式session不一致性問題

七、案例實戰:SpringSession+redis解決分佈式session不一致性問題 步驟1:加入SpringSession、redis的依賴包 <dependency> <groupId>org.springfram

原创 redis如何實現分佈式重入鎖

redis如何實現分佈式重入鎖? 在上一節課中,我們已經知道SETNX是不支持重入鎖的,但我們需要重入鎖,怎麼辦呢? 目前對於redis的重入鎖業界還是有很多解決方案的,最流行的就是採用Redisson,關於什麼是Redisson