原创 KAFKA 生產者消費者的“事前事後”

一 生產者的“事前事後”---producer攔截器 producer攔截器主要實現生產者端定製化功能需求。 對於producer,攔截器使得用戶可以在消息發送前以及響應回調時有機會對數據做定製化修改。若多個 攔截器作用於同一個消息則形成

原创 kafka生產者消費者同步與異步

一 生產者發送的同步與異步 生產者發送消息依靠send方法,主要要同步和異步兩種: 異步發送 producer.send(record,callback) callback就是對發送消息後的回調。該方法輸入參數是metaData和exce

原创 kafka 生產端指定分區和消費端分區指派

生產端指定分區 主要依靠分配器,對於kafka默認分配器,主要工作流程: 1 如果消息自帶key則對key可以hash然後選擇目標分區; 2 如果消息無key則採用RoundRobin輪詢算法,這樣可以最大限度確保消息在所有分區的均勻性;

原创 KAFKA高吞吐量分析

KAFKA高吞吐量,一般在幾萬甚至幾十萬消息,原因如下 1.寫入寫入的PAGE CACHE,讀時先優先讀緩存的,緩存都是內存操作比較快; 2 不直接參與磁盤IO; 3 寫追加到文件,順序讀寫 4 讀時採用零拷貝技術直接加載在網絡socke

原创 生產者消費者如何知道分區LEADER

因爲生產者、消費者都只通分區的LEADER打交道,故生產者、消費者需要從衆多分區副本中找到LEADER。 一、生產者 生產者通過元數據請求,請求包含了客戶端感興趣的主題列表;服務端返回的響應指出了這些主題包含哪些分區以及每個分區的LEAD

原创 KAFKA裏兩個主要的消費者再平衡和分區選取

一、消費者再平衡 消費者再平衡是針對消費者組來說,將主題內分區所有權進行重新分配。 主要觸發條件包括消費者退出、消費者新增、分區減少、主題增加等。 每個消費者組都會從衆多broker中選出一羣組協調器,用以再平衡的協調,再平衡對象是消費者

原创 FFMPEG LINUX安裝

流程: tar -xvf ffmpeg-4.1.3.tar.bz2 cd ffmpeg-4.1.3 執行./configure //我這裏不選擇任何參數,全部默認安裝 //不想默認安裝就加--prefix=等參數,自己指定路徑等等 一般

原创 Redis 哨兵選舉故障轉移與集羣選舉故障轉移區別

哨兵選舉與故障轉移: 主要針對非集羣模式下主從模式,由哨兵負責。哨兵發現主下線後,哨兵發起選舉,其餘哨兵負責投票,選出一個哨兵作爲故障轉移的Leader, 由這個leader哨兵完成故障轉移 集羣選舉與故障轉移 主要針對集羣模式下的主從,

原创 REDIS 快的原因及緩存三大問

 快的原因: 1 純內存操作 沒有磁盤IO; 2 底層數據結構簡單,且對於不同對象根據實際情況採用效率更高的不同的數據結構,操作更高效; 3 單線程,子進程,避免多線程帶來的上下文切換和資源競爭(V6版本引入多線程 也只是在網絡IO時加入

原创 Redis常見數據結構分析

SDS:應用廣泛。空間預分配和惰性刪除; ZIPLIST:列表+哈希+有序集合。連續擴散; INTSET:集合。類型升級; DICT:哈希+集合+有序集合(和快表一起)/pubsub_channles/keys/expire_keys/w

原创 REDSI淘汰策略

針對帶過期時間的: LRU-volatile LFU-volatile TTL-volatile(最先一個過期的) LRU-volatile 普通的KEY: LRU-allkeys LFU-volatile random-volatile

原创 Redis拒絕寫入的幾種情況

1 正在載入數據  2 上次bgsave err 以及開啓了 stop_write_on_bg_save_error 3 客戶端正使用subscribe psubscribe 4 Lua腳步正阻塞 5 客戶端正執行事務 6 max-mem

原创 golang實現中文字符串最大子串長

中文字符串不能簡單的採用網上流行的LCS算法,需要根據unicode編碼先轉換爲go裏的rune類型,實現int32類型數組的LCS,且這裏用fo實現DP算法裏的二維數組 代碼 func LCSLength(x []rune, y []

原创 容器部署

https://www.cnblogs.com/kerngeeksund/p/10552561.html 點贊 收藏 分享 文章舉報 yanerhao 發佈了265 篇原創文章

原创 kafka安裝

由於kfk關於broker、topics、partitions的一些元信息用zk來存,監控和路由啥的也都會用到zk,首先需要安裝zk zk需要安裝jdk: #install jdk1.8 and add path tar -zxvf j