原创 netty5學習筆記-內存泄露檢測

        netty中用到內存泄露檢測的地方主要有:1、CompositeByteBuf;2、HashedWheelTimer;3、繼承AbstractByteBufAllocator的幾個類。 下面我們看看netty裏的內存檢測類

原创 netty5學習筆記-內存池1-PoolChunk

        從netty 4開始,netty加入了內存池管理,採用內存池管理比普通的new ByteBuf性能提高了數(2)十倍。相信有些朋友會和我一樣,對他的實現方式很感興趣。這裏把學習netty內存池的過程記錄下來,與大家一起分享

原创 netty5筆記-線程模型2-EventLoopGroup

     閱讀本文之前,你需要對java的線程池有一定的瞭解,因爲這裏不會過多的講解。     今天我們主要的任務就是看下netty中一個非常重要的類EventLoop,通過這系列文章,你應該瞭解EventLoop適用的場景,不會濫用它而

原创 netty5學習筆記-內存池6-可調優參數

        如果你看了前面的幾篇內存池的介紹,你可能會覺得並沒有什麼卵用。 這裏就搞點有用的 -- netty內存池可調優參數 參數名 說明 默認值 io.netty.allocator.pageSize page的大小 8192

原创 netty5學習筆記-內存池2-PoolSubpage

        前面我們講過了負責內存分配的類PoolChunk,它最小的分配單位爲page, 而默認的page size爲8K。在實際的應用中,會存在很多小塊內存的分配,如果小塊內存也佔用一個page明顯很浪費,針對這種情況,可以將8K

原创 netty5學習筆記-內存池5-PoolThreadCache

        看了前面的PoolArena分析,我們知道PoolArena在分配內存時,使用了synchronized來保證線程安全,這樣就帶來了一定的效率問題。如何能再此基礎上再優化呢,答案很簡單,使用ThreadLocal類似的解決

原创 netty5學習筆記-內存池3-PoolChunkList

        前面我們介紹了PoolChunk以及針對page的更細粒度的PoolSubpage,其實在chunk的上層還有一個管理類:PoolChunkList,PoolChunkList負責管理多個chunk的生命週期,在此基礎上對

原创 netty5筆記-線程模型1-Promise

        冬天實在太冷了,習慣了廣東的天氣,突然換個地方還真有點不適應, 早就想寫的學習筆記也一直拖到現在。下面進入正題,一起來學習下netty的線程池實現。 我們知道java本身實現了一套線程池,即我們常見的ExecutorSer

原创 dubbo源碼分析-consumer端4-ClusterInvoker與LoadBalance

        dubbo中提供了多種集羣調用策略:         1、FailbackClusterInvoker :  失敗自動恢復,後臺記錄失敗請求,定時重發,通常用於消息通知操作;         2、FailfastClust

原创 dubbo源碼分析-consumer端5-Filter

        前面一篇dubbo源碼分析中,我們對ClusterInvoker和LoadBalance進行了分析,可以知道ClusterInvoker在一批Invoker中選擇了一個Invoker來進行調用,而這裏的Invoker是通過

原创 dubbo源碼分析-consumer端4-MockClusterInvoker

      在前面幾篇文章中,我們分析了consumer端的代理生成過程。創建完成後,應用就可以進行調用了,調用的代碼如下: // 代理類中的sayHello方法 public String sayHello(String pa

原创 dubbo參數調優說明

        dubbo作爲一個服務治理框架,功能相對比較完善,性能也挺不錯。但很多朋友在使用dubbo的時候,只是簡單的參考官方說明進行搭建,並沒有過多的去思考一些關鍵參數的意義(也可能是時間緊任務多,沒空出來研究),最終做出來的效果

原创 dubbo源碼分析-consumer端1-consumer代理生成

        dubbo(官網地址)是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,是阿里巴巴SOA服務化治理方案的核心框架。目前,阿里巴巴內部已經不再使用dubbo,但對很對未到一定量級的公司來說,dubbo依

原创 redis集羣客戶端JedisCluster優化 - 管道(pipeline)模式支持

Redis在3.0版正式引入了集羣這個特性,擴展變得非常簡單。然而當你開心的升級到3.0後,卻發現有些很好用的功能現在工作不了了, 比如我們今天要聊的pipeline功能。 我們知道,普通的情況下,redis client與server

原创 dubbo源碼分析-consumer端6-數據發送與接收

        consumer端的數據經過處理後,最終進入發送的流程。接下來我們繼續跟着數據的流向進行分析。 首先進入到了DubboInvoker,DubboInvoker中包含了多個ExchangeClient, 每個Exchange