原创 Redis面試系列:基礎類型編碼方式和應用場景(一)

前言 面試中肯定會被問到一個問題:Redis有哪些基礎類型,它們的應用場景是什麼?或直接問:你實際項目中用到了哪些? 下面會結合一些核心源碼來講解,還會講一些細節點。 (溫馨提示:源碼看不懂的可以先跳過,有興趣的可以研究。不對讀

原创 什麼是消息中間件?(一)

什麼是消息中間件 消息(Message)就是在各個應用間傳送的數據。 消息隊列中間件(Message Queue Middleware,簡稱爲MQ)是指利用高效可靠的消息傳遞機制進行與平臺無關的數據交流,並基於數據通信來進行分佈式

原创 RabbitMQ管理(四)

多租戶與權限 RabbitMQ可以創建虛擬主機(virtual host),vhost本質上是一個獨立的小型RabbitMQ服務器,擁有自己的隊列、交換器及綁定關係等,並且有自己獨立的權限。 vhsot是AMQP概念的基礎,客戶端

原创 爲什麼ES的搜索效率對比數據庫的正排索引更快呢?

倒排索引原理 正排索引 正排是以文檔ID爲關鍵字,表中記錄文檔中每個字的位置信息,查詢時掃描表中每個文檔中字的信息, 直到找出所有包含查詢關鍵字的文檔。 倒排索引 倒排表是以字或詞作爲關鍵字進行索引,表中關鍵字所對應的記錄項記錄了

原创 疫情後跳槽,要考慮哪些要素?

今年的疫情,推遲了往年金3銀4的跳槽時節。隨着疫情的好轉,不少互聯網技術小夥伴可能在思考,要不要換工作。 今天和大家聊聊互聯網技術人換工作這個話題,樓主也面試過的不少候選人,站在面試官的角度,談談什麼樣的IT人會在面試中加分。 一

原创 億級流量網站架構核心技術(限流技術詳解)

限流 一般開發高併發系統常見的限流有:限制總併發數(比如數據庫連接池、線程池)、限制瞬時併發數(如Nginx的limit_conn模塊,用來限制瞬時併發連接數)、限制時間窗口內的平均速率(如Guava的RateLimiter、Ng

原创 億級流量網站架構核心技術(負載均衡與反向代理)

負載均衡與反向代理 在請求一個www.baidu.com網站時,瀏覽器首先會查詢DNS服務器獲取對應的IP,然後通過此IP訪問對應的服務。 DNS域名解析負載均衡的優點: 將負載均衡的工作交給DNS,省去了網站管理維護負載均衡服

原创 億級流量網站架構核心技術(超時與重試機制)

代理層超時與重試 如果應用不設置超時,則可能會導致請求響應慢,慢請求累積導致連鎖反應,甚至造成應用雪崩。而有些中間件或者框架在超時後會進行重試(如設置超時重試兩次),讀服務天然適合重試,但寫服務大多不能重試(如寫訂單,如果寫服務是

原创 億級流量網站架構核心技術(降級特技)

降級預案 在進行降級之前要對系統進行梳理,看看系統是不是可以丟卒保帥,從而梳理出哪些必須誓死保護,哪些可降級。 可以參考日誌級別設置預案: 一般: 比如,有些服務偶爾因爲網絡抖動或者服務正在上線而超時,可以自動降級。 警告

原创 RabbitMQ的安裝及簡單實用(二)

一、安裝Erlang RabbitMQ是由Erlang語言編寫的,所以在安裝RabbitMQ之前需要安裝Erlang。 可以到Erlang官網根據自己的系統選擇安裝。 wget http://erlang.org/downloa

原创 RabbitMQ相關概念(三)

一、RabbitMQ的模型架構 Producer:生產者,就是投遞消息的一方。 生產者創建消息,然後發佈到RabbitMQ中。消息一般可以包含2個部分:消息體和標籤(Label)。 Consumer:消費者,就是接收消息的一方。

原创 RabbitMQ系列:什麼是消息中間件?(一)

什麼是消息中間件 消息(Message)就是在各個應用間傳送的數據。 消息隊列中間件(Message Queue Middleware,簡稱爲MQ)是指利用高效可靠的消息傳遞機制進行與平臺無關的數據交流,並基於數據通信來進行分佈式

原创 Redis面試系列:Redis Cluster如何通信?客戶端怎麼知道數據位於哪個節點?滴滴三面問到你懷疑人生(五)

前言 如何保證Redis的高併發和高可用?Redis的哨兵原理能介紹一下麼?Redis Cluster如何通信?客戶端怎麼知道數據位於哪個節點?MOVED具體是怎麼實現的? 一、Sentinel(哨兵)模式 Sentinel本質

原创 Redis面試系列:過期策略和淘汰策略(五)

前言 一開始總會把這兩個問題搞混淆了。一句話簡單解釋一下: 過期策略:已經過期的key刪除方案。【定期刪除和惰性過期】 淘汰策略:內存不夠用的時候的處理方案。【就是常說的LRU算法】 一、過期策略 redisDb結構的expir

原创 Redis面試系列:聊一聊Redis的持久化和主從複製(四)

前言 大家都可能會被問:Redis與Memcache的區別是什麼?最容易記住的可能就是:Redis支持豐富的數據類型和Redis的持久化。 Redis服務發生宕機後,在重啓時還能進行數據恢復,這也是現在都使用Redis的原因吧。