Java 中臺技術盤點,這些技術你瞭解還遠遠不夠

語言: CN / TW / HK

2022 年什麼會火?什麼該學?本文正在參與“聊聊 2022 技術趨勢”徵文活動 」

對於中臺(業務中臺)技術開發來說主要是對基礎技術棧的使用,還有就是對抽象能力的提升,因為我們是底層服務不能出錯,需要不斷的去做相容性。需要具備一些 Java 技術功底,掌握設計模式,深入掌握最常用的技術原理。我們今天就一起來盤點一下 Java 業務中臺常用的技術框架與一些將來可能會用到的技術。

Spring

Spring Framework 是 Spring 裡面的一個基礎開源框架,主要用於 JavaEE 的企業開發。Spring是什麼呢?首先它是一個開源的專案,而且非常活躍;它是一個基於IOC和AOP的構架多層 JavaEE 系統的框架,但它不強迫你必須在每一層中必須使用Spring,因為它模組化的很好,允許你根據自己的需要選擇使用它的某一個模組;它實現了很優雅的MVC,對不同的資料訪問技術提供了統一的介面,採用IOC使得可以很容易的實現 Bean 的裝配,提供了簡潔的AOP並據此實現Transaction Management 等等。

目前 Spring 支援的主流版本是 5.3,開源支援的時間最遲到 2025 年。

Spring Boot

Spring Boot是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot 致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

Spring Cloud

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用 Spring Boot 的開發風格做到一鍵啟動和部署。Spring Cloud並 沒有重複製造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 Spring Boot 風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。

Spring Cloud Netflix 可以算是 Spring-Cloud 1.x 最強的框架強者,提供了 Eureka ,Hystrix,Zuul,Ribbon 等非常優秀的元件。但是在一段時間爆出停更後,被 Spring-Cloud 的一些其他元件替代,比如 Spring Cloud Alibaba 。不管怎麼說 Netflix 也是 Spring Cloud 歷程中的核心推動者。

MyBatis

MyBatis 是一款優秀的資料持久層 ORM 中介軟體,我們常用的有 XML 、註解兩種方式使用,而且還有 MyBatis-Generator 外掛幫我們快速的生成資料庫的 CRUD 程式碼。

MyBaits 還支援與 Spring 的整合,是目前網際網路,業務中臺比較常用的資料持久層框架之一。

其實優秀的持久層框架還有 Hibernate ,我自從 14,15 年用過後面個人涉及的公司就較少使用

Alibaba 中介軟體

不得不說 Alibaba 因為 Alibaba 目前來說也是 Java 技術棧的大牛團隊之一,也貢獻了非常多優秀的開源框架比如:Doubbo, Nacos, Seata, Sentinel 等。

Nacos

Nacos 是一個服務發現、服務配置和服務管理中介軟體。Nacos 提供了一組簡單易用的特性集,快速實現動態服務發現、服務配置、服務元資料及流量管理。

Nacos 可以讓我們更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務正規化、雲原生正規化) 的服務基礎設施。

Nacos 的關鍵特性包括:

  • 服務發現和服務健康監測Nacos 支援基於 DNS 和基於 RPC 的服務發現。服務提供者使用 原生SDK、OpenAPI、或一個獨立的Agent TODO註冊 Service 後,服務消費者可以使用DNS 或HTTP&API查詢和發現服務。Nacos 提供對服務的實時的健康檢查,阻止向不健康的主機或服務例項傳送請求。Nacos 支援傳輸層 (PING 或 TCP)和應用層 (如 HTTP、MySQL、使用者自定義)的健康檢查。 對於複雜的雲環境和網路拓撲環境中(如 VPC、邊緣網路等)服務的健康檢查,Nacos 提供了 agent 上報模式和服務端主動檢測2種健康檢查模式。Nacos 還提供了統一的健康檢查儀表盤,幫助您根據健康狀態管理服務的可用性及流量。
  • 動態配置服務動態配置服務可以讓您以中心化、外部化和動態化的方式管理所有環境的應用配置和服務配置。動態配置消除了配置變更時重新部署應用和服務的需要,讓配置管理變得更加高效和敏捷。配置中心化管理讓實現無狀態服務變得更簡單,讓服務按需彈性擴充套件變得更容易。Nacos 提供了一個簡潔易用的UI 幫助您管理所有的服務和應用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀釋出、一鍵回滾配置以及客戶端配置更新狀態跟蹤在內的一系列開箱即用的配置管理特性,幫助您更安全地在生產環境中管理配置變更和降低配置變更帶來的風險。
  • 動態 DNS 服務動態 DNS 服務支援權重路由,讓您更容易地實現中間層負載均衡、更靈活的路由策略、流量控制以及資料中心內網的簡單DNS解析服務。動態DNS服務還能讓您更容易地實現以 DNS 協議為基礎的服務發現,以幫助您消除耦合到廠商私有服務發現 API 上的風險。Nacos 提供了一些簡單的 DNS APIs 幫助您管理服務的關聯域名和可用的 IP:PORT 列表.
  • 服務及其元資料管理Nacos 能讓您從微服務平臺建設的視角管理資料中心的所有服務及元資料,包括管理服務的描述、生命週期、服務的靜態依賴分析、服務的健康狀態、服務的流量管理、路由及安全策略、服務的 SLA 以及最首要的 metrics 統計資料。\

Nacos 架構圖:

Sentinel

隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。

Sentinel 具有以下特徵:

  • 豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、訊息削峰填谷、叢集流量控制、實時熔斷下游不可用應用等。
  • 完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制檯中看到接入應用的單臺機器秒級資料,甚至 500 臺以下規模的叢集的彙總執行情況。
  • 廣泛的開源生態:Sentinel 提供開箱即用的與其它開源框架/庫的整合模組,例如與 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相應的依賴並進行簡單的配置即可快速地接入 Sentinel。同時 Sentinel 提供 Java/Go/C++ 等多語言的原生實現。
  • 完善的 SPI 擴充套件機制:Sentinel 提供簡單易用、完善的 SPI 擴充套件介面。您可以通過實現擴充套件介面來快速地定製邏輯。例如定製規則管理、適配動態資料來源等。

\

Sentinel 生態

Seata

Seata 是一款開源的分散式事務解決方案,致力於提供高效能和簡單易用的分散式事務服務。Seata 將為使用者提供了 AT、TCC、SAGA 和 XA 事務模式,為使用者打造一站式的分散式解決方案。

AT 模式

基於支援本地 ACID 事務的關係型資料庫。Java 應用,通過 JDBC 訪問資料庫。基於兩階段提交實現。

TCC 模式

TCC 模式主要關注業務拆分,在按照業務橫向擴充套件資源時,解決微服務間呼叫的一致性問題,保證讀資源訪問的事務屬性。

SAGE 模式

Saga模式是SEATA提供的長事務解決方案,在Saga模式中,業務流程中每個參與者都提交本地事務,當出現某一個參與者失敗則補償前面已經成功的參與者,一階段正向服務和二階段補償服務都由業務開發實現。

Arthas

Arthas 是 Alibaba 開源的 Java 診斷工具。比如我們遇到 OOM, 或者介面超時等常見問題,我們就需要 Arthas 等分析工具對程式進行執行時分析,找到效能瓶頸。

ElasticSearch

Elasticsearch 是一個分散式、高擴充套件、高實時的搜尋與資料分析引擎。它能很方便的使大量資料具有搜尋、分析和探索的能力。充分利用Elasticsearch的水平伸縮性,能使資料在生產環境變得更有價值。Elasticsearch 的實現原理主要分為以下幾個步驟,首先使用者將資料提交到Elasticsearch 資料庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一併存入資料,當用戶搜尋資料時候,再根據權重將結果排名,打分,再將返回結果呈現給使用者。

通常我們在專案中做首頁資料查詢,或者對於關係型資料庫不能解決的一些歷史資料查詢,我們可以通過 ElasticSearch 作為一種查詢的補充方案。

參考文件