日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我們一起聊聊如何編寫一個 Java memcached 客戶端

來源: 責編: 時間:2024-07-03 10:08:28 201觀看
導讀非常喜歡讀開源項目,每次讀源碼,都會覺得自己修煉某種武學功法,期待修煉完成后,可以大殺四方。從2012年開始,陸續閱讀了 Cobar、Druid、Xmemcached、RocketMQ、MetaQ、Canal、ShardingJdbc、Sofa-Jraft 等開源項目。這篇文

非常喜歡讀開源項目,每次讀源碼,都會覺得自己修煉某種武學功法,期待修煉完成后,可以大殺四方。Lit28資訊網——每日最新資訊28at.com

從2012年開始,陸續閱讀了 Cobar、Druid、Xmemcached、RocketMQ、MetaQ、Canal、ShardingJdbc、Sofa-Jraft 等開源項目。Lit28資訊網——每日最新資訊28at.com

這篇文章,聊聊筆者閱讀 Xmemcached 源碼的心得體會,希望對大家有所幫助。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

1、Xmemcached 簡介

XMemcached 是一個 Java memcached 客戶端。Lit28資訊網——每日最新資訊28at.com

可能有的同學對 Memcached  并不熟悉,它和 Redis 一樣都是分布式內存緩存系統,用于加速動態 Web 應用程序,通過減少數據庫負載來提高性能 。Lit28資訊網——每日最新資訊28at.com

筆者當時服務于一家彩票公司,公司的核心系統訂單服務、調度中心、業務網關都使用 XMemcached 操作 memcached 。Lit28資訊網——每日最新資訊28at.com

基于一個非常樸素的好奇心:“如何用 Java 編寫一個緩存客戶端 ?”  筆者花了接近兩個月的時間將 Xmemcached 源碼瀏覽了一次。Lit28資訊網——每日最新資訊28at.com

瀏覽完源碼后,筆者有三點心得:Lit28資訊網——每日最新資訊28at.com

  • 設計模式
  • 網絡命令編解碼
  • 一致性哈希算法

2、設計模式

下圖是 Xmemcached 的使用范例:Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

我們可以清晰的發現流程分為三個部分 :Lit28資訊網——每日最新資訊28at.com

  • 客戶端構造器通過 servers 參數創建客戶端 ;
  • 通過客戶端調用 set、 get、 delete 方法 ;
  • 關閉客戶端。

MemcachedClient 接口定義了基本的緩存操作方法,比如 get、set、add 、cas 方法,而 XmemcachedClient 是 MemcachedClient 的實現類。Lit28資訊網——每日最新資訊28at.com

真正創建客戶端對象 XmemcachedClient 是通過構造器 XMemcachedClientBuilder 來實現的,這是一個非常典型的設計模式:Builder 模式 Lit28資訊網——每日最新資訊28at.com

Builder 模式是一種創建型設計模式,它允許你分步驟創建復雜對象。與直接構造對象不同,Builder 模式通過一個構建過程,逐步設置對象的不同部分,從而使對象的創建過程更加靈活和可控。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

我們在配置 構造器 XMemcachedClientBuilder 時,可以配置序列化對象、命令工廠、服務器列表等配置。Lit28資訊網——每日最新資訊28at.com

最后,調用構造器的 build 方法創建 MemcachedClient 對象,見下圖:Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

下面是 XMemcached 的主要類的 UML 圖:Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

3 網絡命令編解碼

在網絡編程中,一個重要的步驟是對發送的數據包進行編碼、對接受的數據包進行解碼Lit28資訊網——每日最新資訊28at.com

1)發送命令,進行編碼)Lit28資訊網——每日最新資訊28at.com

因為 Xmemcached 使用了自研的網絡通訊框架 ,每次發送命令時,都會調用命令的 encode 方法,將命令對象轉換成 IoBuffer 對象通過網絡發送。Lit28資訊網——每日最新資訊28at.com

下圖是  TextGetOneCommand 的 encode 方法 :Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

2)接收命令,進行解碼Lit28資訊網——每日最新資訊28at.com

當通訊框架收到響應字節數組時,可能收到的數據包并不完整,在收到數據包時,通過 decode 方法判斷數據包是否完整,當數據完整之后,將同步請求的 countDownLatch 計數減 1 。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

當筆者理解了網絡命令編解碼的技巧之后,后來用 Netty 寫了個分庫分表 proxy 輪子時,在設計 MySQL 命令包編解碼就使用了類似的技巧。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

4 一致性 Hash 算法

一致性 Hash 算法非常典型的應用就是緩存集群,它能夠很大程度上(注意不是完全解決)解決余數哈希的增加服務器導致緩存失效的問題。Lit28資訊網——每日最新資訊28at.com

我們需要進行如下步驟,使用一致性哈希(Consistent Hashing)將鍵值對映射到 memcached 服務器上。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

  • 計算 memcached 服務器(節點)的哈希值,并將其配置到 0~2^32 的圓上。
  • 用同樣的方法計算存儲數據的鍵的哈希值,并映射到圓上。
  • 從鍵的哈希值對應的位置開始順時針查找,將數據保存到找到的第一個服務器上。
  • 如果超過 2^32 仍然找不到服務器,就會保存到第一臺 memcached 服務器上。

下圖,我們新增一臺 memcached 服務器 node5 。Lit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

假如是我們使用余數分布式算法,保存鍵的服務器會發生很大變化從而影響緩存的命中率,但一致性哈希算法僅僅如圖中所示 node2 和 node 5 之間小部分黃色區域會有影響。Lit28資訊網——每日最新資訊28at.com

KetamaMemcachedSessionLocator.java 實現了一致性哈希算法, 使用的 Hash 算法是 KETAMA HASH 算法。Lit28資訊網——每日最新資訊28at.com

1、根據服務器列表生成 Hash 環 ,存儲容器 TreeMapLit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

2、通過 key 得到 TreeMap 的 tailMap,然后找到 firstKeyLit28資訊網——每日最新資訊28at.com

圖片圖片Lit28資訊網——每日最新資訊28at.com

5 寫到最后

閱讀 Xmemcached 源碼,讓筆者的眼界大大提升,比如序列化方式、構造器 Builder 設計模式、一致性哈希算法、通訊命令編解碼、failover 設計等等。Lit28資訊網——每日最新資訊28at.com

比較可惜的是,筆者當時能力有限,并沒有完全理解自研網絡框架 yanf4j 。Lit28資訊網——每日最新資訊28at.com

盡管如此,當讀完 Xmemcached 源碼后,筆者對于“如何用 Java 編寫一個緩存客戶端 ?” 這個問題,腦海里已經有了概念,當筆者對于 Netty 更加熟悉之后,這個問題也就變得不是問題了。Lit28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-98411-0.html我們一起聊聊如何編寫一個 Java memcached 客戶端

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何正確使用上線部署,泳道、預發布到底如何理解?

下一篇: K8s 也有設計模式?你知道嗎?

標簽:
  • 熱門焦點
  • 6月iOS設備性能榜:M2穩居榜首 A系列只能等一手3nm來救

    沒有新品發布,自然iOS設備性能榜的上榜設備就沒有什么更替,僅僅只有跑分變化而產生的排名變動,畢竟蘋果新品的發布節奏就是這樣的,一年下來也就幾個移動端新品,不會像安卓廠商,一
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現場視頻讓網友吵翻

    近日,上海青浦區法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當時男子駕駛轎車在上海某路段行駛,前車忽然轉彎提速超車,
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 得物寵物生意「狂飆」,發力“它經濟”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內的“在線鑒別”,可找到鑒別寵物的選項。通過上傳自家寵物的部位細節,就能收獲擁有專業資質認證的得物鑒
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之“想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!”曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 華為開發者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發布最新一代鴻蒙 H
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
日韩午夜在线视频| 国产一区二区三区精品欧美日韩一区二区三区 | 久久99在线观看| 欧美一区二区三区久久精品茉莉花| 欧美影院在线播放| 免费成人av在线看| 欧美色123| 国产日韩亚洲| 亚洲国产导航| 亚洲一区二区三区在线观看视频 | 亚洲伦理在线观看| 性欧美大战久久久久久久免费观看| 久久手机免费观看| 欧美日韩免费精品| 国产日韩精品久久| 亚洲区一区二| 性久久久久久久| 欧美成人免费观看| 国产欧美精品一区aⅴ影院| 亚洲国产欧美另类丝袜| 亚洲午夜久久久久久久久电影院| 欧美特黄一级| 国产亚洲综合精品| 亚洲精品亚洲人成人网| 欧美一级精品大片| 欧美日本一区| 精久久久久久久久久久| 亚洲女人小视频在线观看| 蜜臀久久99精品久久久久久9| 欧美视频在线观看一区| 在线不卡中文字幕| 午夜欧美理论片| 欧美日韩91| 在线观看日韩欧美| 亚洲男人第一网站| 欧美精品自拍偷拍动漫精品| 黑人一区二区三区四区五区| 亚洲一区二区3| 欧美激情久久久| 激情视频一区二区三区| 午夜精品久久久久久久99樱桃| 欧美人与性动交cc0o| 伊人精品久久久久7777| 性欧美video另类hd性玩具| 欧美日韩国产精品一卡| 亚洲电影成人| 久久成人免费日本黄色| 国产精品日本精品| 日韩一级精品视频在线观看| 久热精品在线视频| 国产日韩欧美综合精品| 亚洲一区二区日本| 欧美日韩色综合| 91久久亚洲| 蜜臀99久久精品久久久久久软件| 国产精品中文字幕在线观看| 亚洲视频网站在线观看| 欧美精品激情| 亚洲国产一区二区三区高清| 久久久久久久一区二区三区| 国产亚洲一区在线播放| 欧美一区二区三区在线| 国产精品捆绑调教| 中文亚洲视频在线| 欧美日韩精品在线播放| 日韩午夜电影在线观看| 欧美激情一区二区| 亚洲青色在线| 欧美激情综合色综合啪啪| 亚洲黄色免费网站| 久久综合给合| 在线看成人片| 免费成人你懂的| 亚洲二区免费| 免费av成人在线| 亚洲国产精品第一区二区三区| 久久久久久久久岛国免费| 狠狠色丁香久久婷婷综合_中| 久久国产精品久久久久久久久久 | 久久er精品视频| 国产一区二区中文| 久久精品国亚洲| 精品动漫3d一区二区三区| 久久这里有精品视频| 1024欧美极品| 欧美黑人在线观看| 日韩五码在线| 国产精品激情电影| 亚洲自拍偷拍色片视频| 国产伦精品一区二区三区免费迷| 小嫩嫩精品导航| 国精品一区二区| 另类亚洲自拍| 亚洲精品中文字幕在线| 欧美色精品天天在线观看视频| 亚洲午夜精品久久久久久app| 国产精品自拍小视频| 欧美在线播放高清精品| 黑丝一区二区三区| 欧美成人一品| 日韩一区二区精品葵司在线| 欧美日韩视频不卡| 亚洲亚洲精品在线观看| 国产日韩av高清| 鲁鲁狠狠狠7777一区二区| 亚洲精品久久久久中文字幕欢迎你| 欧美女同在线视频| 亚洲欧美激情在线视频| 国外成人在线视频网站| 蜜臀久久99精品久久久画质超高清| 亚洲精品欧美日韩专区| 国产精品久久激情| 久久欧美肥婆一二区| 亚洲精品一区二区三区蜜桃久| 国产精品久久二区二区| 久久国产一区| 亚洲精品免费在线| 国产精品久久久久婷婷| 久久激情久久| 亚洲精品男同| 国产精品一区二区三区成人| 久久综合免费视频影院| 99热这里只有精品8| 国产欧美一区二区三区沐欲 | 久久精品视频一| 亚洲精选91| 国产日韩欧美日韩| 欧美国产91| 欧美一区深夜视频| 亚洲人成77777在线观看网| 国产精品日韩在线| 欧美777四色影视在线| 亚洲一区二区在线看| 影音先锋亚洲电影| 国产精品a级| 久久永久免费| 亚洲欧美国产视频| 亚洲国产精品一区二区www| 国产精品狼人久久影院观看方式| 久久综合电影| 小黄鸭精品aⅴ导航网站入口 | 性欧美暴力猛交另类hd| 亚洲激情国产精品| 国产毛片久久| 欧美片第一页| 久久影视精品| 欧美一区二视频| 亚洲美女在线视频| 一区二区视频免费完整版观看| 欧美视频在线免费看| 美女久久一区| 欧美在线中文字幕| 亚洲少妇自拍| 亚洲精品美女久久久久| 国产主播一区二区| 国产精品sm| 欧美日本精品| 麻豆国产精品777777在线 | 欧美视频国产精品| 裸体丰满少妇做受久久99精品| 香蕉尹人综合在线观看| 一区二区三区黄色| 亚洲国产成人精品久久| 国产亚洲欧美色| 国产精品免费视频xxxx| 欧美区一区二区三区| 美女图片一区二区| 久久久999国产| 欧美亚洲在线观看| 亚洲一区二三| 宅男精品导航| 99国产精品自拍| 亚洲片区在线| 最近中文字幕mv在线一区二区三区四区| 国产一区视频网站| 国产精品最新自拍| 国产精品久久九九| 欧美午夜不卡视频| 欧美日韩国产在线一区| 欧美电影美腿模特1979在线看| 久久九九99| 欧美中文字幕不卡| 香蕉久久精品日日躁夜夜躁| 亚洲综合三区| 亚洲一区欧美激情| 亚洲午夜小视频| 一区二区三区日韩| 宅男精品视频| 亚洲视频一区二区在线观看| aⅴ色国产欧美| 99精品视频一区| 99ri日韩精品视频| 亚洲免费观看在线观看| 日韩亚洲欧美一区二区三区| 亚洲精品老司机| 亚洲美洲欧洲综合国产一区| 亚洲精品久久在线| 亚洲理伦在线| 一区二区三区欧美| 亚洲最新在线| 亚洲午夜国产一区99re久久| 亚洲一区影音先锋| 亚洲一区二区在线观看视频| 亚洲一区欧美激情|