原创 HBCK2修復RIT實踐筆記

目錄前言1. 下載2. 使用命令使用方法1. 查找問題2. 實踐例子3. 注意事項 前言 本文記錄了作者使用HBCK2工具對線上HBase發生RIT狀態的處理,僅供參考,若有疵漏,還望指正。 網絡上關於HBCK2的文章很少,基本都

原创 從零寫分佈式RPC框架 系列 1.0 (1)架構設計

本系列文章的目的是搭建出一個基於Netty,Zookeeper和SpringBoot的簡易分佈式RPC框架,並且發佈到Maven中央倉庫以 spring-boot-starter 的形式對外提供開箱即用的服務。1.0 版本使用 p

原创 Docker 守護進程+遠程連接+安全訪問+啓動衝突解決辦法 (完整收藏版)

本文根據官方資料實踐而成,同時對於本人操作時遇到的問題加以整理總結.通過本文,你應該能夠實現通過自定義證書實現對遠程Docker主機的安全訪問和控制.尊重勞動成果,未經本人允許不得轉載. 文章目錄一 Docker服務端,客戶端和C

原创 空間索引 S2 學習指南及Java工具類實踐

geohash對於大區域查詢表現極不良好,經調研測試,改用google的s2。因爲涉及的資料、工具較多,特此記錄,以備後用。 文章目錄一 學習指南0 介紹說明1 s2 對比 geohash 的優點2 相關資料二 Java實踐 一

原创 深入解析Spring使用枚舉接收參數和返回值機制並提供自定義最佳實踐

Spring對應枚舉傳參/返回值默認是用字面量實現的(實際情況更復雜),而《阿里巴巴Java開發手冊》規定接口返回值不可以使用枚舉類型(包括含枚舉類型的POJO對象),爲此,本文探究了Spring內部對枚舉參數的傳遞和處理機制,並提供

原创 Paxos學習筆記及圖解

本文記錄了自己對 Paxos 算法的學習和理解,並對多種分區情況進行了討論,整理了 Paxos 的執行思路並根據本人實踐對其中遇到的問題進行了講解。但還是可能存在理解不到位或者有紕漏的地方,還希望多多指教。 文章目錄一 從CAP定理到

原创 Java 設計模式 輕讀彙總版

網上設計模式的文章較多,本篇主要是自己總結學習用,力求簡單,易於掌握。文章大量參考網絡資源,主要有https://javadoop.com/post/design-pattern 一文和 《設計模式之禪》一書。 文章目錄一 創建類模式

原创 從零寫Spring註解版框架系列 IoC篇 (2)實現 @Component、@Autowired、@Qualifier註解

本文承接了上一篇文章的思路進行代碼實現,並搭建起一個基本可用的基於@Component、@Autowired、@Qualifier 註解的 IoC 框架。 項目 Github 地址爲:https://github.com/linshe

原创 從零寫分佈式RPC框架 系列 2.0 (4)使用BeanPostProcessor實現自定義@RpcReference註解注入

之前服務提供方 RpcServer 我們是使用 ApplicationContextAware 來掃描 @RpcService 註解,添加一個註解即可實現服務暴露。現在,我們用 BeanPostProcessor 來實現服務注入,自動

原创 從零寫Spring註解版框架系列 IoC篇 (1) 框架設計

本文的註解版IoC框架跟其他手寫IoC框架的不同之處在與:在實現了 @Component 和 @Autowired 的同時還實現了@Qualifier,並解決單例模式下循環依賴的問題,以上3個註解的使用效果參照 Spring 。 文章

原创 從零寫分佈式RPC框架 系列 2.0 (2)RPC-Common模塊設計實現

RPC-Common模塊相對於1.0版本複雜了很多,最主要的變化在於將 Rpc的Netty處理器從RPC-Server和RPC-Client收回。1.0 版本的設計思路是儘可能減少冗餘依賴,所以RPC-Common一般只放通用的功能。

原创 從零寫分佈式RPC框架 系列 2.0 (1)架構升級

針對1.0版本的性能問題,本版本做了從服務地址列表緩存等方面做了優化處理,並加入負載均衡引擎、序列化引擎、服務端限流等新功能,並對通信模型進行改造,使其支持新特性、避免粘包半包問題並對後續升級改造留下支持空間。具體可見 項目GitHu

原创 從零寫分佈式RPC框架 系列 2.0 (3)RPC-Server和RPC-Client模塊改造

2.0版本RPC-Server改動不大,主要變化在於RPC-Client使用了服務地址緩存,並引入監控機制,第一時間獲取zk集羣中服務地址信息變化並刷新本地緩存。另外,RPC-Client還使用了RpcClientProperties

原创 實現 序列化引擎(支持 JDK默認、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式)

本文將實現一個包含JDK默認、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式的序列化引擎。用戶可以提供使用 SerializerEngine 方便快捷地切換序列

原创 手寫通用類型負載均衡路由引擎(含隨機、輪詢、哈希等及其帶權形式)

本文記錄了通用類型負載均衡路由引擎(工廠)的實現過程和思路。通過路由引擎獲取指定枚舉類型的負載均衡器,降低了代碼耦合,規範了各個負載均衡器的使用,減少出錯的可能,並簡化了其對應帶權負載均衡的實現(提供默認實現),而無需另外編寫和集成。