原创 JVM:類的加載過程

類的加載過程 類的加載過程整體可以分爲五個階段:加載、驗證、準備、解析、初始化,其中驗證、準備和解析又被概括爲鏈接。 加載 通過一個類的全限定名獲取定義此類的二進制字節流; 將這個字節流所代表的的靜態存儲結構轉化爲方法區的運行

原创 Netty Reactor線程模型

前兩篇博文分別介紹了Java 線程模型:BIO NIO和Reactor線程模型,本篇博文將介紹Reactor線程模型在Netty中的實際應用。 Netty模型 Netty模型的簡單介紹 Netty 主要基於主從 Reactor

原创 Java IO模型介紹:BIO、NIO、AIO

I/O模型 I/O模型基本說明 I/O模型的簡單理解:就是用什麼樣的通道進行數據的發送和接受,很大程度上決定了程序通信的性能; Java共支持三種網絡編程I/O模型:BIO、NIO、AIO(Asynchronous I/O);

原创 AMQP協議模型和核心概念

AMQP高級消息隊列協議 定義:Advanced Message Queueing Protocol 是面向消息的中間件的開放標準應用層協議,AMQP的特徵是消息導向,排隊,路由(包括點對點和發佈和訂閱),可靠性和安全性。

原创 RabbitMQ:生產端和消費端的可靠性投遞解決方案

消息如何保證100%的投遞成功? 什麼是生產端的可靠性投遞? 保障消息的成功發出; 保障MQ節點的成功接收; 發送端收到MQ節點(Broker)確認應答; 完善消息補償機制; 生產端可靠性投遞常見解決方案 消息落庫,對消息狀

原创 Pulsar configuration 介紹:ZooKeeper相關參數

Pulsar configuration 本篇博文主要介紹Pulsar configuration中有關zookeeper的參數。 Zookeeper Zookeeper在Pulsar中扮演着重要的角色,主要用於處理各種必須

原创 Kafka源碼閱讀(一):Kafka Producer整體架構概述及源碼分析

整體架構 線程         整個 Kafka 客戶端由兩個線程協調運行,即Main線程和Sender線程。         在Main線程中由KafkaProducer創建消息,然後通過Interceptor、Serial

原创 Kafka源碼閱讀(二):Producer Metadata概述及源碼分析

上一篇博文Kafka源碼閱讀(一):Kafka Producer整體架構概述和源碼分析(一)介紹了Kafka 生產者發送消息的主要流程和計算分區等機制,接下來這篇博文將對Kafka更新Producer Metadata的機制進行

原创 Kafka基礎架構

Kafka基礎架構 消息隊列的兩種模式 1. 點對點模式(一對一,消費者主動拉取數據,消息收到後消息清除) 過程: producer將消息發送到queue中; consumer從queue中拉取並消費message; m

原创 Kafka工作流程及文件存儲機制

Kafka工作流程 Kafka 中消息是以 topic 進行分類的,生產者生產消息,消費者消費消息,都是面向 topic 的。 topic 是邏輯上的概念,而 partition 是物理上的概念。 每個partition都有

原创 Kafka生產者分區策略和數據可靠性保證

分區策略 分區原因: 方便集羣擴展,每個Partition可以通過調整大小以適應它所在的機器,而一個 topic又可以由多個 Partition組成,因此整個集羣就可以適應任意大小的數據。 可以提高併發,分區之後就可以以Par

原创 Kafka消費者消費方式

consumer消費方式 pull模式,consumer從Broker中主動拉取數據 pull模式不足之處: 如果 kafka 沒有數據,消費者可能會陷入循環中,一直返回空數據。針對這一點,Kafka 的消費者在消費數據時會傳

原创 手寫spring核心原理Version1

此篇博文主要通過一個簡單的demo演示spring的核心原理,例如spring是如何根據@RequestMapping、@Autowired等註解進行路徑匹配和自動注入的。 源碼地址:https://github.com/yan

原创 手寫spring核心原理Version2

上一篇博文(手寫spring核心原理Version1)中粗略的實現了自動注入等功能,此篇博文主要在上一篇的基礎之上對MyDispatcherServlet.java中的方法運用設計模式進行重構。源碼地址:https://gith

原创 手寫spring核心原理Version3

上兩篇博文手寫spring核心原理Version1和手寫spring核心原理Version2分別介紹瞭如何完成一個自動注入、以及如何用設計模式進行重構,接下來這篇將仿照SpringMVC對參數列表以及methodMapping進