了解完 Spring Cloud 的發(fā)展背景以及各個組件庫后,在敲代碼前,本章節(jié)會聊一聊優(yōu)惠券平臺項目的整體功能和模塊,以及每個功能點的技術(shù)選型和背后的依據(jù),最后講解下搭建項目所需的開發(fā)環(huán)境~
網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);網(wǎng)站建設(shè)、網(wǎng)站設(shè)計收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運營了十年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
目錄
1 優(yōu)惠券平臺項目
1.1 項目介紹
1.2 Spring Boot 實戰(zhàn)規(guī)劃
1.3 Spring Cloud 實戰(zhàn)規(guī)劃
① 第一階段
② 第二階段
③?第三階段
2 開發(fā)環(huán)境介紹
2.1?Java 和 Maven
2.2?IntelliJ IDEA
2.3?MySQL 和 DB 可視化工具
2.4 Redis
整個項目劃分為了優(yōu)惠券模板服務(wù)、計算服務(wù)、用戶服務(wù)和平臺類組件這四大模塊。它們的功能是這樣的:
從整體來看,優(yōu)惠券模板服務(wù)和優(yōu)惠計算服務(wù)是基礎(chǔ)服務(wù),用戶服務(wù)是對用戶開放的接口,它依賴于這兩個基礎(chǔ)服務(wù)來完成業(yè)務(wù)邏輯。而平臺類組件則提供了橫向的微服務(wù)特性支持,比如微服務(wù)網(wǎng)關(guān)、鏈路追蹤功能等等,你可以把它們理解為“微服務(wù)中間件”。我們通過下面這幅圖來看一下這四個模塊之間的關(guān)聯(lián)關(guān)系:
1.2 Spring Boot 實戰(zhàn)規(guī)劃微服務(wù)框架基于 Spring Boot 項目,因此首先便是搭建 Spring Boot 業(yè)務(wù)模塊,并按照模塊之間的先后依賴順序進行改造。Spring Boot 的階段,用戶服務(wù)是一個“超級單體應(yīng)用”,優(yōu)惠券模板服務(wù)和訂單優(yōu)惠計算服務(wù)都將打包到用戶服務(wù)中,跨模塊的服務(wù)調(diào)用都是通過本地方法完成的,因此只用啟動用戶服務(wù)就可以執(zhí)行所有模塊的業(yè)務(wù)功能。
搭建?Spring Boot 項目的過程中,涉及以下三個技術(shù)點:
在 Spring Boot 階段搭建好優(yōu)惠券平臺的單體應(yīng)用后,接下來就可以進行 Spring Cloud 微服務(wù)化改造了。
1.3 Spring Cloud 實戰(zhàn)規(guī)劃根據(jù)微服務(wù)學習的路徑以及各個組件的難易程度,本專欄主要分為三個不同的階段:
主要實現(xiàn)微服務(wù)之間的通信,將用戶微服務(wù)、優(yōu)惠券模板服務(wù)和訂單優(yōu)惠計算服務(wù)拆分為獨立部署的業(yè)務(wù)系統(tǒng),通過注冊中心來實現(xiàn)服務(wù)注冊和服務(wù)發(fā)現(xiàn),讓各個微服務(wù)之間可以互相調(diào)用。這個階段涉及的關(guān)鍵技術(shù)是 Nacos 注冊中心、Loadbalancer 客戶端負載均衡組件和 OpenFeign 服務(wù)間調(diào)用組件。
微服務(wù)之間的服務(wù)通信有一個前提條件,就是你要知道將要調(diào)用的服務(wù)器地址是什么。這個尋址的任務(wù)是交由 Nacos 注冊中心和 Loadbalancer 負載均衡器共同來完成的。
Nacos 是 Alibaba 出品的服務(wù)治理組件,它作為一個注冊中心組件,負責收集所有服務(wù)節(jié)點的地址信息并維護服務(wù)注冊表,所有服務(wù)上線之后都會向它匯報狀態(tài)。Loadbalancer 則承擔了負載均衡的任務(wù),在客戶端發(fā)起服務(wù)調(diào)用的時候,它會負責從 Nacos 的注冊表中挑選一臺目標服務(wù)器。而 OpenFeign 組件是一個“錦上添花”的組件,它能夠簡化基于 HTTP 的遠程服務(wù)調(diào)用,讓我們就像使用本地接口一樣方便地發(fā)起遠程服務(wù)調(diào)用。
至于為什么會選擇 Nacos+Loadbalancer 作為選型方案呢?其實,在早期版本的 Spring Cloud 微服務(wù)架構(gòu)選型中,Eureka + Ribbon 是一個使用最為廣泛的組合,它們是 Netflix 公司貢獻給 Spring Cloud 項目的服務(wù)治理 + 負載均衡組件。但是考慮到 Netflix 正在退出 Spring Cloud 的歷史舞臺。Eureka 和 Ribbon 已經(jīng)進入了維護狀態(tài)。其中,Ribbon 更是在 Spring Cloud I 版之后,就從官方組件庫中被移除了。這意味著 Eureka 和 Ribbon 已經(jīng)進入了“暮年”,不會再有重大的功能更新。
因此,在考慮技術(shù)選型的時候,我選擇了后勁更足、功能更為強大的 Nacos 和 Spring Cloud 官方開源的 Loadbalancer 組件。大致來講,在第一階段,分為三個部分來帶你搭建起微服務(wù)之間的通信:
這個階段涉及的技術(shù)組件是 Nacos Config、Sentinel、Sleuth+Zipkin+ELK。
③?第三階段這個階段涉及的技術(shù)組件是 Gateway、Stream 和 Seata。
2 開發(fā)環(huán)境介紹工欲善其事,必先利其器,搭建好項目的開發(fā)環(huán)境是很有必要的~
為了避免在項目實戰(zhàn)環(huán)節(jié)碰到一些棘手的兼容性問題,開始寫代碼前就要約定好各個組件的安裝版本,包括 Java、Maven 和各個中間件的版本。
本章節(jié)主要講集成開發(fā)環(huán)境的搭建、數(shù)據(jù)庫的安裝和 DB 腳本的導(dǎo)入。
2.1?Java 和 Maven由于國內(nèi)網(wǎng)絡(luò)訪問 Maven 中央倉庫比較慢,在編譯項目的時候,你會發(fā)現(xiàn)下載 Maven 依賴項的時間會比較久,這樣的話可以修改 Maven 的 settings.xml 文件,將其默認鏡像指向國內(nèi)的鏡像(比如阿里云鏡像),這樣可以大大加快依賴項下載速度。
安裝完 Java 和 Maven 之后,我們再來安裝集成開發(fā)工具。
2.2?IntelliJ IDEA本人還是推薦用?IDEA,當然 Eclipse 等其他編譯器也可~
你可以在 JetBrains 的官網(wǎng)(IntelliJ IDEA)下載 IntelliJ IDEA,IDEA 的免費社區(qū)版足夠完成復(fù)雜的開發(fā)任務(wù)了。
2.3?MySQL 和 DB 可視化工具可以在本地安裝?MySQL,我是直接在云服務(wù)器上安裝了 MySQL,如果你還沒有安裝可視化 DB 工具,那么我推薦你使用?dbeaver,畢竟是免費的 。相關(guān)鏈接 :Docker 環(huán)境下安裝 Mysql
2.4 RedisRedis 是一個 key-value 數(shù)據(jù)庫,我們在學習微服務(wù)網(wǎng)關(guān)的時候?qū)?Redis 實現(xiàn)網(wǎng)關(guān)層限流。
相關(guān)鏈接:云服務(wù)器 Docker 環(huán)境下安裝 Redis
到這里,我們的工具安裝就結(jié)束了,建議大家實操安裝下這些軟件,可以說都是開發(fā)的必備工具,如果有不明白的百度即可。
后續(xù)進入到 Spring Cloud 微服務(wù)實戰(zhàn)環(huán)節(jié)的時候,我們還會用到更多的中間件,比如注冊中心、微服務(wù)網(wǎng)關(guān)、鏈路追蹤組件、ELK 日志查詢系統(tǒng)、分布式事務(wù)協(xié)調(diào)器等等,到時候可再安裝這些軟件。
大家如果有疑問都可以評論提出,有不足之處請大家批評指正,希望能多結(jié)識這方面的朋友,共同學習、共同進步。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧