原创 美團Leaf源碼——號段模式源碼解析

前言 分佈式ID生成策略基本要求就是全局不重複,最好還能遞增,長度較短,性能高,可用性強。關於相關的實現方案有很多,本文着重使用美團開源的分佈式ID生成解決方案——Leaf。 關於Leaf,美團官方的介紹文檔主要如下,強烈建議閱讀

原创 Spring-cloud-Zuul架構解析

Zuul源碼解析 基於 Spring-cloud-netflix 2.0.4.RELEASE進行分析的。 Zuul 架構圖 在zuul中, 整個請求的過程是這樣的,首先將請求給zuulservlet處理,zuulservlet

原创 java多線程之Future模式

一、Future模式 Future的意思是未來、期貨,假設有一個方法需要花費很長時間才能獲取運行結果,那麼,與其一直等待結果,不如先拿一張“提貨單”,獲取提貨單並不耗費時間,這裏的“提貨單”我們就成爲Future角色。 二、示例程

原创 java多線程之Balking模式

一、Balking模式 如果現在不適合執行這個操作,或者沒有必要執行這個操作,就停止處理,直接返回–這就是Balking模式。所謂Balk,就是停止並返回的意思。 Balking模式與Guarded Suspension模式一樣,

原创 java多線程之Guarded Suspension模式

一、Guarded Suspension模式 Guarded是被守護,被保衛,被保護的意思,Suspension則是“暫停”的意思,如果執行現在的處理會造成問題,就讓執行處理的線程進行等待,這就是Guarded Suspensio

原创 java多線程之Thread-Specific Storage模式

一、Thread-Specific Storage模式 Specific是特定的意思,Storage模式是儲存櫃的意思,因爲所謂Thread-Specific Storage就是“每個線程特有的儲物櫃”“爲每個線程準備儲存空間”的

原创 美團Leaf源碼——美團分佈式ID生成服務開源

Leaf是美團基礎研發平臺推出的一個分佈式ID生成服務,名字取自德國哲學家、數學家萊布尼茨的一句話:“There are no two identical leaves in the world.”Leaf具備高可靠、低延遲、全局

原创 java多線程之Producer-Consumer模式

一、Producer-Consumer設計模式 Producer是生產者的意思,指的是生產數據的線程,Consumer則是消費者的意思,指的是使用數據的線程。 生產者安全的將數據交給消費者,雖然僅是這樣看似簡單的操作,但生產者和消

原创 美團Leaf源碼——snowflake模式源碼解析

前言 上一篇文章介紹瞭如何使用Leaf的號段模式生成分佈式全局唯一id,參照下圖我們簡單總結一下。當我們部署Leaf集羣時(圖中是3個),每個節點起初都包含一個雙 buffer,也就是雙號段。當有請求過來時,每個節點都會去數據庫查

原创 Java動態追蹤技術探究

引子 在遙遠的希艾斯星球爪哇國塞沃城中,兩名年輕的程序員正在爲一件事情苦惱,程序出問題了,一時看不出問題出在哪裏,於是有了以下對話: “Debug一下吧。” “線上機器,沒開Debug端口。” “看日誌,看看請求值和返回值分別是什

原创 詳解JMX

一、JMX的定義 JMX(Java Management Extensions)是一個爲應用程序植入管理功能的框架。JMX是一套標準的代理和服務,實際上,用戶可以在任何Java應用程序中使用這些代理和服務實現管理。這是官方文檔上的

原创 使用飛行記錄器監控Java Applications

1.Java 監控工具 Java 不僅僅是一種編程語言,而是一個非常豐富的生態系統,它有很多工具。JDK 包含的程序,允許我們編譯自己的程序,以及監視其狀態和 Java 虛擬機在程序執行的完整生命週期內的狀態。 JDK 提供的的

原创 發佈-訂閱設計模式(PUBLISH-SUBSCRIBE (PUB-SUB) DESIGN PATTER)

什麼是發佈-訂閱設計模式? Publishers:創建主題消息的實體 Subscribers:訂閱主題消息的實體 在基於主題的發佈-訂閱模式中,發佈者使用主題標記每條消息,而不是引用特定的訂閱服務器。然後,消息系統將消息發送給要求

原创 Java多線程系列之J.U.C併發包概述

J.U.C包簡介 J.U.C併發包,即java.util.concurrent包,是JDK的核心工具包,是JDK1.5之後,由 Doug Lea實現並引入。 整個java.util.concurrent包,按照功能可以大致劃分如下

原创 Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not

1.版本不正確 在檢查mysql-connector-java.jar包版本時我發現自己引入的是8.0.11版本的,網上都是5.x的,瞬間感覺不妙了,因爲版本問題真的讓人頭大。 果不其然就是版本問題。 有兩種解決方法: 1.退回到