一名架構師,他要如何做微服務技術選型?

ITPUB社群發表於2022-12-02

作為一名架構師,需要規劃產品技術路線,負責技術選型。而技術棧選型主要參考以下幾個標準:

  • 安全穩定,不能經常被爆出安全漏洞
  • 開源社群活躍度,加入Apache的元件優先考慮
  • 一線網際網路公司落地產品,有大公司為其背書
  • 文件閱讀性好

本篇為大家帶來微服務架構的後端技術選型,當你需要進行技術選型時,可以參照他來設計自己的決策樹。

開發語言

JAVA
主流程式語言,適合構建大型後臺服務

Golang
Go語言是谷歌2009釋出的第二款開源程式語言。專門針對多處理器系統應用程式的程式設計進行了最佳化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程式。Google對Go寄予厚望。其設計是讓軟體充分發揮多核心處理器同步多工的優點,並可解決物件導向程式設計的麻煩。目前作為雲端計算領域的不二之選!

開發IDE

IntelliJ IDEA
jetbrains公司旗下產品,智慧程式碼助手、J2EE支援、各類版本工具(git、svn、github等)、JUnit、CVS整合等。多語言支援,免費版只支援JAVA等少數語言。旗艦版為收費版本,同時提供免費版(功能上較旗艦版有減少)。

VS Code
VS Code是一款免費的、開源的、高效能的、跨平臺的、輕量級的程式碼編輯器,同時,在效能,語言支援、開源社群方面也做的很不錯!

開發技術

微服務框架

Spring Cloud / Spring Cloud alibaba
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,提供了全套微服務解決方案。

RPC框架

RestTemplate&WebClient
Spring RestTemplate 是 Spring 提供的用於訪問 Rest 服務的客戶端

gRPC
GRPC是google開源的一個高效能、跨語言的RPC框架,基於HTTP2協議,基於protobuf 3.x的一款rpc框架。多種語言支援;支援連結複用,叢集內可採用長連結;效能簡單調優後,可滿足多數業務場景需求。

Dubbo
阿里巴巴開源專案,提供了六大核心能力:面向介面代理的高效能RPC呼叫,智慧容錯和負載均衡,服務自動註冊和發現,高度可擴充套件能力,執行期流量排程,視覺化的服務治理與運維。

分散式事務

Seata
阿里巴巴重點開源專案、Java開發、效能高、無鎖、程式碼無侵入AT模式0程式碼、支援MT模式非事務型儲存、社群活躍,版本更新快,使用簡單!

流量控制、熔斷降級

Sentinel
阿里巴巴重點開源專案、Java開發、二次開發方便、社群活躍

API閘道器

Spring Cloud Gateway
Spring首選、方便二次開發、支援非同步非阻塞

Kong
Kong是一款基於Nginx_Lua模組寫的高可用,易擴充套件由Mashape公司開源的API Gateway專案。效能優異,外掛豐富基本開箱即用,二開有一定的使用門檻。

配置中心

Nacos
阿里巴巴重點開源專案、可同時作為註冊/中心配置中心,簡化技術棧、有完善管理介面、Java開發、二次開發方便、社群活躍、還在不斷更新迭代。

Apollo
是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。

服務發現

Nacos
阿里巴巴重點開源專案、可同時作為註冊/中心配置中心,簡化技術棧、有完善管理介面、Java開發、二次開發方便、社群活躍、AP/CP模式,還在不斷更新迭代。

Zookeeper
ZooKeeper 是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件;效能可以滿足較大規模的服務發現和配置中心,生效實時性高,不適合大規模實時資料同步場景;CP模式。

監控

Prometheus
功能較為全面的開源監控系統,CNCF技術棧、社群活躍

Grafana
Grafana是一個開源的度量分析與視覺化套件。純 Javascript 開發的前端工具,透過訪問庫(如InfluxDB),展示自定義報表、顯示圖表等。大多使用在時序資料的監控方面,如同Kibana類似。Grafana的UI更加靈活,有豐富的外掛,功能強大。介面簡潔美觀,支援自由定製,社群有豐富的Dashboard支援。

SkyWalking
分散式追蹤系統,國產鏈路跟蹤、社群文件豐富,Apache頂級專案。

日誌

ELK
分散式服務日誌處理,圍繞elasticsearch構建的日誌生態系統。使用廣泛,擴充套件方便。配合kibana可以很方便對日誌進行檢索,定位線上問題。

資料庫中間

ShardingSphere
Apache ShardingSphere 定位為關係型資料庫中介軟體,支援資料分片、讀寫分離、多資料副本、資料加密、影子庫壓測等功能;社群文件豐富,目前已經成為Apache頂級專案。

序列化

Jackson
Spring首選、穩定安全

protobuf
Protocol Buffer( 簡稱Protobuf) 是google開源的一種輕便高效的結構化資料儲存格式,可以用於結構化資料序列化,很適合做資料儲存或RPC 資料交換格式。

不建議使用fastjson

開發工具

構建工具

Maven
主流的專案構建和管理工具,Maven是 Apache 下的一個純 Java 開發的開源專案,是一個專案構建和管理的工具;它提供了幫助管理 構建、文件、報告、依賴、scms、釋出、分發的方法。可以方便的編譯程式碼、進行依賴管理、管理二進位制庫等等。

Gradle
Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化建構工具。Gradle 構建指令碼使用的是 Groovy 或 Kotlin 的特定領域語言來編寫,它可以自動處理包相依關係,自動處理佈署問題,條件判斷寫法直覺。

介面請求工具

postman
postman是一款功能強大的網頁除錯和模擬傳送HTTP請求的Chrome外掛,支援幾乎所有型別的HTTP請求,操作簡單且方便。

容器

Docker
是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。使用Docker可以帶來以下幾個優勢:1. 更快速的交付和部署;2. 高效的部署和擴容;3. 更高的資源利用率;4. 簡單的管理

叢集管理

Kubernetes
Kubernetes一個用於容器叢集的自動化部署、擴容以及運維的開源平臺。透過Kubernetes,你可以快速有效地響應使用者需求;快速而有預期地部署你的應用;極速地擴充套件你的應用;無縫對接新應用功能;節省資源,最佳化硬體資源的使用。為容器編排管理提供了完整的開源方案。生態豐富,易擴充套件;功能豐富穩定,大公司背書;易上手。

映象管理工具

Harbor
Harbor是個開源製品(artifact)倉庫,是首個原創於中國、並且成為 CNCF 畢業級的開源專案。使用者可透過策略和基於角色的訪問控制來保護製品(如容器映象、Helm Chart等),掃描映象並避免受安全漏洞的危害。Harbor擴充套件了開源專案 Docker Distribution,新增了使用者所需的功能(例如安全性,身份,漏洞掃描和管理)。

執行環境

作業系統:

Linux<CentOS 7+>
Linux是一套免費使用和自由傳播的類Unix作業系統,是一個基於POSIX和UNIX的多使用者、多工、支援多執行緒和多CPU的作業系統。它能執行主要的UNIX工具軟體、應用程式和網路協議。它支援32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個效能穩定的多使用者網路作業系統。

Web伺服器

Tomcat<8+>
Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。

Nginx
輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器

NodeJs
服務端JavaScript環境

好了,今天的文章就到這裡了,希望本文可以給各位架構師們在技術選型時提供一點小幫助。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2926447/,如需轉載,請註明出處,否則將追究法律責任。

相關文章