原创 Netty-服務端接收不到客戶端發送消息案例
得益於高性能、低時延的優勢,Netty被廣泛應用於物聯網領域,用於海量終端設備的協議接入、消息收發和數據處理。 當服務端出現性能瓶頸或者阻塞時,就會導致終端設備連接超時和掉線,引發各種問題,因此在物聯網場景下,一定要防止服務端代
原创 Netty-什麼是串行無鎖化?
爲儘可能提升性能,Netty中有提到一個串行無鎖化概念。 什麼是串行無鎖化? NioEventLoop維護了一個任務隊列,隊列在創建NioEventLoop時被初始化,是用來實現串行無鎖化的載體。 //Single
原创 RabbitMQ入門-AMQP協議
RabbitMQ和AMQP AMQP生產者流轉過程 AMQP消費者流轉過程 RabbitMQ和AMQP RabbitMQ遵從AMQP協議,AMQP的模型架構和RabbitMQ的模型架構是一樣的,
原创 Netty-併發失效案例之DefaultEventExecutorGroup特性
爲了提升性能,如果用戶實現的ChannelHandler包含複雜或者可能導致同步阻塞的業務邏輯,往往需要通過線程池來提升併發能力,線程池添加有兩種策略:用戶自定義線程池執行業務ChannelHandler,以及通過Netty的E
原创 線程池的三種阻塞隊列
三種阻塞隊列: SynchronousQueue ArrayBlockingQueue LinkedBlockingQueue SynchronousQueue 無緩衝無界等待隊列,超出核心線程個數
原创 RabbitMQ入門-相關概念介紹
生產者和消費者 隊列 交換器、路由鍵、綁定 RabbitMQ運轉流程 連接和信道 生產者和消費者 生產者:Producer生產者,消息投遞方。 生產者創建消息,然後發佈到R
原创 Netty-DefaultEventExecutor工作機制
DefaultEventExecutor源碼 業務線程池優化策略 Netty線程綁定機制原理 DefaultEventExecutor源碼 DefaultEventExecutor是JDK線程池Exe
原创 JAVA-文件操作工具類
文件操作工具類 /******************************************** * 文件操作工具類 * * @author p.ww ****************************
原创 Netty-流量整形注意事項
上一篇:流量整形工作機制 1. 併發編程在流量整形中的使用 1.1 volatile的使用 1.2 減小鎖的範圍 1.3 原子類 2. 相關注意事項 2.1 chann
原创 Netty-流量整形工作機制
流量整形工作原理及源碼分析 消息讀取的流量整形 消息發送流量整形 流量整形工作原理及源碼分析 流量整形工作原理:攔截channelRead()和write()方法,計算當前需要發送的消息大
原创 Netty-流量整形實踐
當系統負載壓力比較大時,系統進入過負荷狀態,可能是CPU、內存資源已經過載,也可能是應用進程內部的資源幾乎耗盡,如果繼續全量處理業務,可能會導致長時間的Full GC、消息嚴重積壓或者應用進程宕機,最終將壓力轉移到集羣中的其他節
原创 Netty-ByteBuf實現機制
應用在進行數據傳輸時,往往需要使用緩衝區,最常用的緩衝區就是JDK NIO類庫提供的java.nio.Buffer。由於JDK原生的Buffer存在一些缺點,Netty提供了自己的ByteBuffer實現(ByteB
原创 Netty-消息發送工作機制
業務調用write後,經過ChannelPipeline職責鏈處理,消息被投遞到消息發送緩衝區待發送,調用flush之後會執行真正的發送操作,底層通過調用Java NIO的SocketChannel進行非阻塞write操作,將消
原创 線程池的4種拒絕策略
四種拒絕策略: AbortPolicy CallerRunsPolicy DiscardPolicy DiscardOldestPolicy AbortPolicy 默認拒絕策略,丟棄任務並觸發
原创 Netty-ChannelHandler併發安全分析
ChannelHandler是Netty中使用最廣的接口,Netty提供了大量內置的ChannelHandler實現類,包括編解碼、SSL、日誌打印等等。用戶通過實現ChannelHandler接口,來接口和發送業務消息,並進行