原创 Tomcat之性能優化

Tomcat是一款Java應用,那麼的配置便與其運行性能密切相關,而優化的重點則集中在內存分配和GC策略的調整上,因爲內存會直接影服務的運行效率和吞吐量,JVM垃圾回收機制則會不同程度的導致程序運行中斷。可以據應用程序的特點,選擇不同的垃

原创 SpringBoot之配置文件讀取

下面我們來看一下 Spring 爲我們提供了哪些方式幫助我們從配置文件中讀取這些配置信息。 application.yml 內容如下: wuhan2020: 2020年初武漢爆發了新型冠狀病毒,疫情嚴重,但是,我相信一切都會過去!武漢加

原创 SpringBoot之自動配置原理

使用starter簡化依賴配置 Spring提供了一系列starter來簡化Maven配置。其核心原理也就是Maven和Gradle的依賴傳遞方案。當我們在我們的pom文件中增加對某個starter的依賴時,該starter的依賴也會自動

原创 Cookie/Session/Token

Cookie、Session和Token都是爲了解決Web身份校驗而產生的,這裏對它們的概念做一個簡單瞭解。 發展史 1、很久很久以前,Web基本上就是文檔的瀏覽而已, 既然是瀏覽,作爲服務器, 不需要記錄誰在某一段時間裏都瀏覽了什麼文檔

原创 OAuth2之概述

一、OAuth 概念 開放授權(OAuth)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。 —— 維基百科 嚴格來說,OAuth2 不是一

原创 工具類庫之Hutool

簡介 Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的”。 Hutool中的工具方法來自於每個用戶的精雕細琢,它涵蓋了Ja

原创 秒殺系統分析和實戰

1、秒殺業務分析 正常電子商務流程 (1)查詢商品; (2)創建訂單; (3)扣減庫存; (4)更新訂單; (5)付款; (6)賣家發貨; 秒殺業務的特性 (1)低廉價格; (2)大幅推廣; (3)瞬時售空; (4)一般是定時上架; (5

原创 RocketMQ之RPC通信(二)

文章摘要:如何設計RPC通信層模型是任何一款性能強勁的MQ所要重點考慮的問題 在(一)篇中主要介紹了RocketMQ的協議格式,消息編解碼,通信方式(同步/異步/單向)、消息發送/接收以及異步回調的主要通信流程。而本篇將主要對Rocket

原创 RocketMq之水平擴展及負載均衡

RocketMQ是一個分佈式具有高度可擴展性的消息中間件。本文旨在探索在broker端,生產端,以及消費端是如何做到橫向擴展以及負載均衡的。 Broker端水平擴展 Broker負載均衡 Broker是以group爲單位提供服務。一個gr

原创 RocketMQ之RPC通信(一)

文章摘要:借用小廝的一句話“消息隊列的本質在於消息的發送、存儲和接收”。那麼,對於一款消息隊列來說,如何做到消息的高效發送與接收是重點和關鍵 一、RocketMQ中Remoting通信模塊概覽 RocketMQ消息隊列的整體部署架構如下圖

原创 RocketMq之削峯

MQ的主要特點爲解耦、異步、削峯,本篇博客只是簡單的記錄RocketMQ削峯用法,用於減少數據庫壓力的業務場景。 生產者,消費者的配置可以參考以前的文章,這裏只列出消費者新增的兩個配置: @Bean(initMethod = "

原创 RocketMq之消費方式

一、如何選擇消息消費的方式—Pull or Push? 1.1 MQ中Pull和Push的兩種消費方式 對於任何一款消息中間件而言,消費者客戶端一般有兩種方式從消息中間件獲取消息並消費: (1)Push方式:由消息中間件(MQ消息服務器代

原创 RocketMq之消息丟失

1. 消息的發送流程 一條消息從生產到被消費,將會經歷三個階段: 生產階段,Producer 新建消息,然後通過網絡將消息投遞給 MQ Broker 存儲階段,消息將會存儲在 Broker 端磁盤中 消息階段, Consumer 將會從

原创 RocketMQ之消息存儲和查詢原理

一、CommitLog CommitLog,消息存儲文件,所有主題的消息都存儲在 CommitLog 文件中。 我們的業務系統向 RocketMQ 發送一條消息,不管在中間經歷了多麼複雜的流程,最終這條消息會被持久化到CommitLog文

原创 RocketMq之基礎概念及架構解析

一、RocketMQ的起源 通常,每個產品的誕生都源於一個具體的需求或問題,RocketMQ也不例外。起初,產品的原型像一個巨石,把所有需要實現的程序和接口都羅列到一起。但隨着公司業務的發展,所有的系統和功能都在這個巨石上開發,當覆蓋幾百