原创 MySQL Select 語句執行順序

一條 SQL 查詢語句結構如下: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHE

原创 Java 四種引用類型(強引用、軟引用、弱引用、虛引用)

概述 Java 中的引用類似 C 語言中的指針,指向一個對象,比如: // person 就是指向 Person 實例“張三”的引用 Person person = new Person("張三"); 在 JDK1.2 以前,Java 裏

原创 服務鏈路追蹤 —— SpringCloud Sleuth

Sleuth 簡介 隨着業務的發展,系統規模變得越來越大,微服務拆分越來越細,各微服務間的調用關係也越來越複雜。客戶端請求在後端系統中會經過多個不同的微服務調用來協同產生最後的請求結果,幾平每一個請求都會形成一個複雜的分佈式服務調用鏈路,在

原创 分佈式事務 —— SpringCloud Alibaba Seata

Seata 簡介 傳統的單體應用中,業務操作使用同一條連接操作不同的數據表,一旦出現異常就可以整體回滾。隨着公司的快速發展、業務需求的變化,單體應用被拆分成微服務應用,原來的單體應用被拆分成多個獨立的微服務,分別使用獨立的數據源,業務操作需

原创 消息總線 —— SpringCloud Bus

Bus 簡介 Spring Cloud Bus 是 Spring Cloud 體系內的消息總線,支持 RabbitMQ 和 Kafka 兩種消息中間件。所謂消息總線,簡單理解就是一個消息中心,衆多微服務實例都可以連接到總線上,實例可以往消息

原创 消息驅動 —— SpringCloud Stream

Stream 簡介 Spring Cloud Stream 是用於構建消息驅動的微服務應用程序的框架,提供了多種中間件的合理配置 Spring Cloud Stream 包含以下核心概念: Destination Binders:目標綁定

原创 熔斷、限流、降級 —— SpringCloud Alibaba Sentinel

Sentinel 簡介 Sentinel 是阿里中間件團隊開源的,面向分佈式服務架構的高可用流量防護組件,主要以流量爲切入點,從限流、流量整形、熔斷降級、系統負載保護、熱點防護等多個維度來幫助開發者保障微服務的穩定性 Sentinel 提供

原创 聲明式調用 —— SpringCloud OpenFeign

Feign 簡介 Spring Cloud Feign 是一個 HTTP 請求調用的輕量級框架,可以以 Java 接口註解的方式調用 HTTP 請求,而不用通過封裝 HTTP 請求報文的方式直接調用 Feign 通過處理註解,將請求模板化,

原创 負載均衡 —— SpringCloud Netflix Ribbon

Ribbon 簡介 Ribbon 是 Netfix 客戶端的負載均衡器,可對 HTTP 和 TCP 客戶端的行爲進行控制。爲 Ribbon 配置服務提供者地址後,Ribbon 就可以基於某種負載均衡算法自動幫助服務消費者去請求。Ribbon

原创 微服務網關 —— SpringCloud Gateway

Gateway 簡介 Spring Cloud Gateway 基於 Spring 5、Spring Boot 2 和 Project Reactor 等技術,是在 Spring 生態系統之上構建的 API 網關服務,Gateway 旨在提

原创 註冊中心/配置管理 —— SpringCloud Consul

Consul 概述 Consul 是一個可以提供服務發現,健康檢查,多數據中心,key/Value 存儲的分佈式服務框架,用於實現分佈式系統的發現與配置。Cousul 使用 Go 語言實現,因此天然具有可移植性,安裝包僅包含一個可執行文件,

原创 註冊中心 —— SpringCloud Netflix Eureka

Eureka 簡介 Eureka 是一個基於 REST 的服務發現組件,SpringCloud 將它集成在其子項目 spring-cloud-netflix 中,以實現 SpringCloud 的服務註冊與發現,同時提供了負載均衡、故障轉移

原创 註冊中心/配置管理 —— SpringCloud Alibaba Nacos

Nacos 簡介 Nacos 是一個易於使用的動態服務發現、配置和服務管理平臺,用於構建雲原生的應用程序 Nacos 的關鍵特性包括以下幾項: 服務發現和服務健康監測:服務提供者使用原生 SDK、OpenAPI 等註冊服務後,服務消費者可

原创 MyBatis 核心組件 —— Configuration

概述 Mybatis 的核心組件如下所示: Configuration:用於描述 MyBatis 的主配置信息,其他組件需要獲取配置信息時,直接通過 Configuration 對象獲取。除此之外,MyBatis 在應用啓動時,將 Map

原创 MyBatis 常用工具類

SQL 類 MyBatis 提供了一個 SQL 工具類,使用這個工具類,我們可以很方便在 Java 代碼動態構建 SQL 語句 String newSql = new SQL() ({ SELECT("P.ID, P.USERNAME,