作爲一名架構師,需要規劃產品技術路線,負責技術選型。而技術棧選型主要參考以下幾個標準:
安全穩定,不能經常被爆出安全漏洞
開源社區活躍度,加入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框架。多種語言支持;支持鏈接複用,集羣內可採用長鏈接;性能簡單調優後,可滿足多數業務場景需求。
分佈式事務
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環境
如果本文對你有幫助,
別忘記給我個三連:
點贊,轉發,評論
。
咱們下期見!
收藏 等於白嫖,點贊 纔是真情!
End
乾貨分享
這裏爲大家準備了一份小小的禮物,關注公衆號,輸入如下代碼,即可獲得百度網盤地址,無套路領取!
001:《程序員必讀書籍》
002:《從無到有搭建中小型互聯網公司後臺服務架構與運維架構》
003:《互聯網企業高併發解決方案》
004:《互聯網架構教學視頻》
006:《SpringBoot實現點餐系統》
007:《SpringSecurity實戰視頻》
008:《Hadoop實戰教學視頻》
009:《騰訊2019Techo開發者大會PPT》
010: 微信交流羣
近期熱文top
我就知道你“在看”