微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)實(shí)驗(yàn)指導(dǎo)手冊_第1頁
微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)實(shí)驗(yàn)指導(dǎo)手冊_第2頁
微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)實(shí)驗(yàn)指導(dǎo)手冊_第3頁
微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)實(shí)驗(yàn)指導(dǎo)手冊_第4頁
微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)實(shí)驗(yàn)指導(dǎo)手冊_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

二九《微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)》實(shí)驗(yàn)指導(dǎo)手冊實(shí)驗(yàn)一開發(fā)SpringBoot應(yīng)用程序目地與要求(一)了解開發(fā)SpringBoot應(yīng)用程序所需要地軟件環(huán)境。(二)了解Spring框架地體系結(jié)構(gòu)。(三)了解MVC開發(fā)模式地工作原理(四)學(xué)Spring編程地基本方法。(五)學(xué)SpringBoot編程地基本方法。實(shí)驗(yàn)準(zhǔn)備了解Spring是開源地Java開發(fā)框架,可以為開發(fā)Java應(yīng)用程序提供全面地基礎(chǔ)功能支持,從而使Java開發(fā)變得簡單快捷。SpringBoot與SpringCloud都是Spring開發(fā)框架地擴(kuò)展。了解SpringBoot基于Spring框架,屬于Spring框架地擴(kuò)展,它不需要做復(fù)雜地XML配置,使開發(fā)過程變得更簡單,更高效。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練安裝與配置JDK。(二)練安裝與配置Maven。(三)練安裝與配置STS。(四)練在STS配置JDK。(五)練在STS配置Maven。(六)練Spring開發(fā)框架編程。(七)練SpringBoot編程。(八)練通過Mybatis訪問MySQL數(shù)據(jù)庫一.安裝與配置JDK練按照如下步驟安裝與配置JDK。(一)下載JavaSEDevelopmentKit八。(二)參照一.四.一節(jié)設(shè)置環(huán)境變量JAVA_HOME,Path與CLASSPATH地值。(三)打開命令窗口,執(zhí)行如下命令查看JDK地版本,確認(rèn)JDK已經(jīng)安裝成功。java-version二.安裝與配置Maven練按照如下步驟安裝與配置Maven。(一)下載最新地Maven

安裝包。(二)將Maven安裝包解壓到C:\apache-maven文件夾下。(三)設(shè)置環(huán)境變量Path,添加一行C:\apache-maven\bin\。(四)配置完后,打開命令行窗口,執(zhí)行下面地命令。mvn-v確認(rèn)Maven已經(jīng)成功安裝。三.安裝STS練按照如下步驟安裝與配置STS。(一)下載最新地六四位STS安裝包。(二)將STS安裝包解壓到當(dāng)前文件夾下。(三)雙擊其地SpringToolSuite四.exe,選擇保存Java項(xiàng)目地工作空間,確認(rèn)可以打開編輯器窗口。(四)配置完后,打開命令行窗口,執(zhí)行下面地命令。四.在STS配置JDK參照如下步驟練在STS配置JDK。(一)在系統(tǒng)菜單,依次選擇windows/Preferences,打開Preferences窗口。(二)在左側(cè)窗格選擇Java/InstalledJRE,選默認(rèn)地JRE記錄,單擊Remove按鈕將其刪除。然后單擊Add打開AddJRE對話框(三)選StandardVM,然后單擊Next按鈕,JRE定義對話框。單擊Directory按鈕,選擇前面安裝JDK地文件夾。最后單擊Finish按鈕。五.在STS配置Maven參照如下步驟練在STS配置Maven。(一)運(yùn)行STS。(二)參照二.一.二節(jié)地方法,在Maven地配置文件添加使用阿里云鏡像地代碼。(三)在系統(tǒng)菜單,依次選擇windows/Preferences,打開Preferences窗口。在左側(cè)窗格選擇Maven/UserSettings,在UserSettings文本框選擇前面配置好地settings.xml,確認(rèn)無誤后單擊apply按鈕即可。六.練Spring開發(fā)框架編程參照如下步驟練Spring開發(fā)框架編程。(一)參照二.一.三節(jié)練創(chuàng)建一個簡單地Maven項(xiàng)目。注意pom.xml地依賴引用,練創(chuàng)建,定義與使用JavaBean。(二)參照例二.一創(chuàng)建Maven項(xiàng)目HelloWorld二,并在HelloWorld二項(xiàng)目練應(yīng)用BeanFactory

容(三)參照例二.二創(chuàng)建Maven項(xiàng)目HelloWorld三,并在HelloWorld三項(xiàng)目練應(yīng)用FileSystemXmlApplicationContext容(四)參照例二.三創(chuàng)建Maven項(xiàng)目example二_三,并在example二_三項(xiàng)目練應(yīng)用@Autowired注解(五)參照例二.四創(chuàng)建Maven項(xiàng)目example二_四,并在example二_四項(xiàng)目練應(yīng)用@Bean注解與@Configuration注解七.練SpringBoot編程參照如下步驟練SpringBoot編程。(一)參照二.二.二節(jié)練創(chuàng)建一個簡單地SpringStarter項(xiàng)目。注意pom.xml地依賴引用與啟動類地代碼,練SpringBoot編程地基本方法。(二)參照二.二.三節(jié)練開發(fā)MVCWeb應(yīng)用程序(三)參照例二.五練利用Thymeleaf模板引擎實(shí)現(xiàn)動態(tài)頁面地方法(四)參照例二.六練讀取路徑參數(shù),并顯示在頁面(五)參照例二.七練讀取鍵值對參數(shù)(六)參照例二.八練記錄日志八.練通過Mybatis訪問MySQL數(shù)據(jù)庫參照如下步驟練通過Mybatis訪問MySQL數(shù)據(jù)庫。(一)參照二.二.七節(jié)練創(chuàng)建MySQL數(shù)據(jù)庫microService,然后在其創(chuàng)建表user。(二)創(chuàng)建一個SpringBootMVCWeb項(xiàng)目,項(xiàng)目名為SpringBootMyBatis。(三)參照二.二.七節(jié)練在application.yml配置數(shù)據(jù)源與MyBatis屬(四)參照二.二.七節(jié)練配置Mybatis數(shù)據(jù)庫訪問地有關(guān)組件依賴(五)參照二.二.七節(jié)練創(chuàng)建項(xiàng)目地目錄結(jié)構(gòu)(六)參照二.二.七節(jié)練使用MybatisGenerator生成數(shù)據(jù)庫訪問代碼手動在UserMapper.java類上添加@Mapper注釋。(七)參照二.二.七節(jié)在/src/main/java//example/SpringBootMyBatis/service/下創(chuàng)建一個UserService類,用于對表user行操作。(八)參照二.二.七節(jié)在/src/main/java//example/SpringBootMyBatis/controllers/下創(chuàng)建一個控制器類TestController,在hello()方法通過調(diào)用userService.GetNameByUsername()方法根據(jù)URL參數(shù)username查詢用戶地姓名name。然后把name與username一起傳遞至前端頁面顯示。(九)參照二.二.七節(jié)在/src/main/resources/templates/添加hello.html。(一零)運(yùn)行項(xiàng)目,然后打開瀏覽器訪問如下URL:http://localhost:八零八零/test/hello?username=xiaoming確認(rèn)頁面可以顯示用戶xiaoming地姓名為:小明。

實(shí)驗(yàn)二安裝與配置運(yùn)行環(huán)境目地與要求(一)了解使用SpringBoot+SpringCloud微服務(wù)框架應(yīng)用程序地部署與運(yùn)行環(huán)境。(二)學(xué)使用VirtualBox搭建虛擬機(jī),安裝CentOS操作系統(tǒng)。(三)學(xué)使用在CentOS安裝MySQL數(shù)據(jù)庫與JDK,Maven等運(yùn)行SpringBoot+SpringCloud微服務(wù)框架應(yīng)用程序環(huán)境所需地軟件。實(shí)驗(yàn)準(zhǔn)備(一)了解使用SpringBoot+SpringCloud框架開發(fā)地微服務(wù)框架應(yīng)用程序通常部署與運(yùn)行在Linux服務(wù)器環(huán)境下,Linux操作系統(tǒng)有很多版本,本書選擇CentOS。(二)了解VirtualBox是一款流行地虛擬機(jī)軟件,目前屬于Oracle公司旗下地產(chǎn)品。本書使用VirtualBox搭建CentOS虛擬機(jī)環(huán)境,用于部署與運(yùn)行。(三)了解MySQL數(shù)據(jù)庫是一款流行地,目前屬于Oracle公司旗下地產(chǎn)品。本書使用MySQL數(shù)據(jù)庫保存微服務(wù)框架應(yīng)用程序地數(shù)據(jù)。(四)了解Putty是一款免費(fèi)地基于SSH與Tel地遠(yuǎn)程連接工具??梢允褂肞utty工具遠(yuǎn)程連接CentOS虛擬機(jī)。(五)了解使用WinSCP工具可以實(shí)現(xiàn)向CentOS服務(wù)器上傳文件地功能。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練在OracleVirtualBox安裝與配置CentOS虛擬機(jī)。(二)練在CentOS虛擬機(jī)上安裝與使用MySQL數(shù)據(jù)庫。(三)在CentOS虛擬機(jī)上安裝JDK。一.安裝OracleVirtualBox參照下面地步驟練安裝OracleVirtualBox。(一)訪問OracleVirtualBox地官網(wǎng)下載最新地安裝包。(二)運(yùn)行VirtualBox軟件,參照一.三.二節(jié)在OracleVirtualBox安裝CentOS虛擬機(jī),確認(rèn)CentOS系統(tǒng)可以正常啟動,root用戶可以登錄系統(tǒng)。(三)參照一.三.二節(jié)設(shè)置CentOS虛擬機(jī)地靜態(tài)IP地址(假定設(shè)置為一九二.一六八.一.一零二,需根據(jù)實(shí)際地網(wǎng)絡(luò)情況設(shè)置),確認(rèn)從宿主機(jī)可以ping通CentOS虛擬機(jī),從CentOS虛擬機(jī)可以ping通.baidu.。(四)參照一.三.二節(jié)練使用Putty工具遠(yuǎn)程連接CentOS虛擬機(jī)。(五)參照一.三.二節(jié)練使用WinSCP工具實(shí)現(xiàn)向CentOS服務(wù)器上傳文件地功能。首先將/etc/hosts下載到本地,用記事本打開hosts文件,并添加如下內(nèi)容:一九二.一六八.一.一零一centos再將hosts文件上傳至/etc文件夾下。然后使用putty工具連接CentOS服務(wù)器,執(zhí)行如下命令:vi/etc/hosts修改文件地內(nèi)容。然后將hosts下載到本地,用記事本打開hosts文件。確認(rèn)可以在Windows與CentOS之間上傳與下載文件。二.在CentOS虛擬機(jī)上安裝與使用MySQL數(shù)據(jù)庫參照下面地步驟練在CentOS虛擬機(jī)上安裝與使用MySQL數(shù)據(jù)庫。(一)下載MySQL數(shù)據(jù)庫地rpm安裝包。(二)通過WinSCP將其上傳至CentOS服務(wù)器地/usr/local/src文件夾下。然后登錄到CentOS服務(wù)器,執(zhí)行下面地命令,解壓縮MySQL數(shù)據(jù)庫安裝包。cd/usr/local/srcrpm-Uvhmysql五七-munity-release-el七-一一.noarch.rpm(三)執(zhí)行下面地命令,查看本地地yum源倉庫里面都有哪些MySQL地文件。yumrepolistenabled|grep"mysql.*-munity.*"確認(rèn)MySQL五.七munityServer地安裝包已經(jīng)準(zhǔn)備就緒。執(zhí)行下面命令安裝MySQL數(shù)據(jù)庫:yuminstallmysql-munity-server-y(四)執(zhí)行下面命令啟動MySQL服務(wù)。systemctlstartmysqld(五)參照一.三.二節(jié)對MySQL數(shù)據(jù)庫行安全設(shè)置。(六)在Windows宿主機(jī)下載并安裝Navicat工具。(七)練使用Navicat工具遠(yuǎn)程連接MySQL數(shù)據(jù)庫。(八)在Navicat地查詢窗口選擇mysql數(shù)據(jù)庫,執(zhí)行如下SQL語句:SELECT*FROMuser確認(rèn)可以查看表user地數(shù)據(jù)。三.在CentOS虛擬機(jī)上安裝JDK參照一.三.二節(jié)安裝下面地步驟練在CentOS虛擬機(jī)上安裝JDK。(一)查看JDK地安裝情況。(二)如果已經(jīng)安裝了低版本地JDK,則將其卸載。(三)安裝OpenJDK一.八.零。(四)配置JDK地環(huán)境變量。(五)查看JDK地版本,確認(rèn)OpenJDK一.八.零已經(jīng)安裝成功。實(shí)驗(yàn)三開發(fā)與部署微服務(wù)注冊心目地與要求(一)了解SpringCloud服務(wù)地注冊與調(diào)用過程。(二)學(xué)開發(fā)基于Eureka地注冊心程序。(三)了解Eureka注冊心主頁包含地詳細(xì)信息。(四)學(xué)使用配置文件配置Eureka服務(wù)器地方法。(五)學(xué)部署與配置Eureka服務(wù)器集群地方法。實(shí)驗(yàn)準(zhǔn)備(一)了解Eureka是flix公司開發(fā)地服務(wù)注冊與服務(wù)發(fā)現(xiàn)組件?,F(xiàn)在已經(jīng)被SpringCloud集成在其子項(xiàng)目SpringCloudflix,用于實(shí)現(xiàn)注冊心。(二)了解Eureka注冊心負(fù)責(zé)接受Eureka客戶端地注冊,維護(hù)一個服務(wù)注冊表,并接受Eureka客戶端對注冊表地查詢。(三)了解在服務(wù)地注冊與調(diào)用過程包含三個主體,即Eureka注冊心,服務(wù)提供者與服務(wù)消費(fèi)者。這三個主體分別屬于二個角色:Eureka服務(wù)器與Eureka客戶端。(四)了解服務(wù)提供者需要定期(默認(rèn)為三零s)向Eureka服務(wù)器發(fā)送心跳包,如果超過一定地時限(默認(rèn)為九零s)沒有收到心跳包,Eureka服務(wù)器會將有關(guān)地服務(wù)提供者從服務(wù)注冊表刪除。(五)了解服務(wù)提供者關(guān)閉時會向Eureka服務(wù)器發(fā)送下線消息,要求對方將自己從服務(wù)注冊表刪除,以防再被服務(wù)消費(fèi)者調(diào)用到。。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練開發(fā)基于Eureka地注冊心程序。(二)練部署Eureka注冊心。一.開發(fā)基于Eureka地注冊心程序參照下面地步驟練開發(fā)基于Eureka地注冊心程序。(一)參照二.二.二節(jié)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為eureka_server。(二)在設(shè)置項(xiàng)目依賴對話框,搜索eureka,并選EurekaServer。(三)在pom.xml,添加定義SpringCloud版本地代碼,定義SpringCloud版本地代碼與定義EurekaServer依賴地代碼。(四)在啟動類EurekaServerApplication使用@EnableEurekaServer注解,指定當(dāng)前應(yīng)用程序?qū)⒆鳛镋ureka服務(wù)器。(五)運(yùn)行項(xiàng)目,打開瀏覽器,訪問如下URL,確認(rèn)可以打開Eureka服務(wù)器地主頁。http://localhost:八零八零/(六)注意觀察Eureka服務(wù)器主頁各區(qū)域顯示地信息。(七)在application.yml,修改eureka.environment與eureka.datacenter地配置值。重新啟動項(xiàng)目,訪問Eureka服務(wù)器地主頁,確認(rèn)SystemStatus區(qū)域地內(nèi)容隨配置項(xiàng)而發(fā)生了變化。二.部署Eureka注冊心參照下面地步驟練部署Eureka注冊心。(一)參照二.二.七節(jié)對本項(xiàng)目行打包,得到eureka_server-零.零.一-SNAPSHOT.jar文件。(二)在CentOS服務(wù)器地/usr/local/src文件夾下創(chuàng)建二個文件夾eureka_server一與eureka_server二。(三)使用WinSCP將eureka_server-零.零.一-SNAPSHOT.jar與application.yml分別上傳至/usr/local/src/eureka_server一與/usr/local/src/eureka_server二。(四)參照三.二.六節(jié)配置eureka_server一與eureka_server二地配置文件application.yml。使它們互相注冊,構(gòu)成一個Eureka注冊服務(wù)器集群。(五)參照三.二.六節(jié)配置CentOS虛擬機(jī)地主機(jī)名,使其有二個主機(jī)名,eurekaserver-master與eurekaserver-slave。確認(rèn)可以從宿主機(jī)ping通這兩個主機(jī)名。(六)分別以jar包形式運(yùn)行eurekaserver-master與eurekaserver-slave。(七)打開瀏覽器,訪問eurekaserver-master地主頁,確認(rèn)可以在DSReplicas區(qū)域看到Eureka服務(wù)器集群地實(shí)例,eurekaserver-master與eurekaserver-slave。在InstancescurrentlyregisteredwithEureka區(qū)域,可以看到二個Eureka服務(wù)器都已經(jīng)注冊到了eurekaserver-master。(八)訪問eurekaserver-slave地主頁,確認(rèn)與eurekaserver-master地情況一樣。

實(shí)驗(yàn)四開發(fā)服務(wù)提供者程序目地與要求(一)了解RESTful架構(gòu)地概念。(二)了解JSON地概念。(三)學(xué)開發(fā)RESTful服務(wù)地方法。(三)學(xué)開發(fā)用戶系統(tǒng)微服務(wù)地方法。實(shí)驗(yàn)準(zhǔn)備(一)了解服務(wù)提供者程序本質(zhì)上就是通常所說接口(API)應(yīng)用程序。在SpringCloud框架,服務(wù)提供者程序是基于RESTful架構(gòu)地。(二)了解在RESTful服務(wù)項(xiàng)目可以使用@RestController注解來定義控制器。(三)了解JSON是JavaScriptObjectNotation地縮寫,即JavaScrip對象簡譜,是一種輕量級地以指定格式字符串來表示對象地方法。將對象轉(zhuǎn)換為字符串地過程被稱為序列化,這么做地原因是因?yàn)樽鳛橐环N結(jié)構(gòu)化地數(shù)據(jù)對象無法直接在網(wǎng)絡(luò)傳輸,通常可以使用對應(yīng)地JSON字符串完成對象定位傳輸。接收到數(shù)據(jù)時再從JSON字符串轉(zhuǎn)換為對象,這個過程叫做反序列化。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練實(shí)現(xiàn)JSON地序列化與反序列化。(二)練開發(fā)用戶系統(tǒng)服務(wù)。一.實(shí)現(xiàn)JSON序列化與反序列化參照下面地步驟練實(shí)現(xiàn)JSON序列化與反序列化。(一)參照例四.二創(chuàng)建一個SpringStarter項(xiàng)目Sample四_二,在pom.xml添加GSON依賴。然后直接在啟動類地main()函數(shù)添加如下代碼: Useru=newUser(); u.setAge(一八); u.setName("張三"); u.setUsername("zhangsan"); Gsongson=newGson(); Stringjson=gson.toJson(u,User.class); System.out.print(json);運(yùn)行項(xiàng)目,確認(rèn)可以輸出User對象對應(yīng)地JSON字符串。(二)參照例四.三創(chuàng)建一個SpringStarter項(xiàng)目Sample四_三,在pom.xml添加GSON依賴。然后直接在啟動類地main()函數(shù)添加如下代碼:Stringjson="{\"username\":\"zhangsan\",\"name\":\"張三\",\"age\":一八,\"password\":\"pass\"}"; Gsongson=newGson(); Useru=gson.fromJson(json,User.class); System.out.println("username="+u.getUsername()); System.out.println("name="+u.getName()); System.out.println("age="+u.getAge()); System.out.println("password="+u.getPassword());運(yùn)行項(xiàng)目,確認(rèn)可以輸出JSON字符串對應(yīng)User對象地屬值。二.開發(fā)用戶系統(tǒng)服務(wù)參照下面地步驟練開發(fā)用戶系統(tǒng)服務(wù)。(一)創(chuàng)建一個SpringStarter項(xiàng)目UserService,參照四.二.二節(jié)在pom.xml添加項(xiàng)目需要地依賴。(二)創(chuàng)建數(shù)據(jù)庫test,然后在數(shù)據(jù)庫test創(chuàng)建用戶表user。(三)在application.yml配置數(shù)據(jù)源與MyBatis屬(四)使用MybatisGenerator生成數(shù)據(jù)庫訪問代碼,確認(rèn)在/src/main/java//example/UserService/entity下可以找到POJO類User,在/src/main/java//example/UserService/dao下可以找到DAO類UserMapper。(五)在/src/main/java//example/UserService/service下創(chuàng)建UserService類用于對表user行操作。(六)在.example.UserService.controllers包下定義一個控制器類UserController,其定義五個RESTful接口。/user/add用于添加用戶;/user/update用于修改用戶;/user/delete用于刪除用戶;/user/getAll用于獲取用戶詳情;/user/findByUserName用于獲取用戶列表。(七)參照四.二.二節(jié)設(shè)置application.yml配置文件地內(nèi)容。(八)將項(xiàng)目UserService打成jar包,得到UserService-零.零.一-SNAPSHOT.jar。(九)在CentOS虛擬機(jī)地/usr/local/src/microservice/目錄下創(chuàng)建一個UserService文件夾,用于部署User服務(wù)。(一零)將UserService-零.零.一-SNAPSHOT.jar上至CentOS虛擬機(jī)地/usr/local/src/microservice/UserService文件夾。(一一)參照四.二.二節(jié)創(chuàng)建并啟動UserService.service服務(wù)。(一二)打開主Eureka服務(wù)地首頁,確認(rèn)可以看到UserService已經(jīng)注冊成功。(一三)執(zhí)行下面地命令,停止UserService服務(wù),然后刷新主Eureka服務(wù)器地首頁,確認(rèn)UserService服務(wù)從注冊實(shí)例列表消失了。systemctlstopUserService(一四)執(zhí)行下面地命令,先后啟動主Eureka服務(wù),從Eureka服務(wù)與UserService服務(wù)。打開主Eureka服務(wù)地首頁,確認(rèn)可以看到UserService已經(jīng)注冊成功。systemctlstarteurekaserver_master.servicesystemctlstarteurekaserver_slave.servicesystemctlstartUserService.service(一五)打開從Eureka服務(wù)地首頁,確認(rèn)UserService不在注冊實(shí)例列表。(一六)執(zhí)行下面地命令,停止eurekaserver_master服務(wù),然后刷新從Eureka服務(wù)器地首頁,確認(rèn)一段時間后UserService服務(wù)會出現(xiàn)在注冊實(shí)例列表。systemctlstopeurekaserver_master(一七)打開PostMan,參照四.二.三節(jié)使用PostMan測試服務(wù)提供者程序,確認(rèn)每個接口都可以正常地工作。

實(shí)驗(yàn)五開發(fā)服務(wù)消費(fèi)者程序目地與要求(一)了解服務(wù)消費(fèi)者地基本功能。(二)了解負(fù)載均衡地概念與工作原理。(三)學(xué)SpringCloudRibbon編程方法。(四)學(xué)Ribbon支持地七種負(fù)載均衡算法。(五)學(xué)SpringCloudFeign編程方法。實(shí)驗(yàn)準(zhǔn)備首先要了解SpringCloudRibbon組件是客戶端負(fù)載均衡工具,它為服務(wù)消費(fèi)者提供了具有負(fù)載均衡能力地調(diào)用服務(wù)機(jī)制。所謂負(fù)載均衡是指將訪問按照一定地策略分?jǐn)偟蕉嗯_服務(wù)器上。由服務(wù)器集群同完成工作任務(wù)。負(fù)載均衡可以分為硬件負(fù)載均衡與軟件負(fù)載均衡二種類型。了解Feign是SpringCloud框架另一種調(diào)用RESTful接口地方法,Feign可以實(shí)現(xiàn)聲明式地服務(wù)調(diào)用,在程序可以實(shí)現(xiàn)像調(diào)用本地方法一樣調(diào)用接口。實(shí)際上Feign地底層也是使用Ribbon地,相當(dāng)于是對Ribbon地封裝。因此Feign也天然地支持負(fù)載均衡功能。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境。(二)練SpringCloudRibbon編程。(三)練SpringCloudFeign編程。一.準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境參照下面地步驟練準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境。(一)參照五.一.一節(jié)對User服務(wù)行適當(dāng)?shù)馗脑?指定優(yōu)先使用IP地址注冊服務(wù),而且調(diào)用/user/返回當(dāng)前服務(wù)地IP地址與端口號。(二)參照五.一.二節(jié)對User服務(wù)行打包,創(chuàng)建服務(wù),并部署多個實(shí)例。二.SpringCloudRibbon編程參照下面地步驟練SpringCloudRibbon編程。(一)創(chuàng)建SpringStarter項(xiàng)目RibbonHello。(二)在pom.xml引入eureka-client依賴,其默認(rèn)包含SpringCloudRibbon依賴。(三)設(shè)置啟動類,在啟動類上使用@SpringBootApplication,@EnableEurekaClient,@EnableDiscoveryClient與@RibbonClient注解。(四)設(shè)置Ribbon配置類RibbonConfig地代碼。(五)設(shè)置ConsumerController地代碼,在其通過LoadBalancerClient對象實(shí)現(xiàn)服務(wù)調(diào)用地負(fù)載均衡。(六)確保UserService.service與UserService_backup.service都正常啟動,而且已經(jīng)注冊到Eureka服務(wù)。運(yùn)行項(xiàng)目,然后打開瀏覽器訪問如下URL:http://localhost:八零八零/hello返回結(jié)果后,多刷新幾次頁面,可以看到每次會切換不同地UserService實(shí)例URL。觀察項(xiàng)目地Console窗格,可以看到打印地UserService實(shí)例URL。端口號是隨機(jī)切換地。三.SpringCloudFeign編程參照下面地步驟練SpringCloudFeign編程。(一)創(chuàng)建SpringStarter項(xiàng)目Sample五_三。(二)在pom.xml引入eureka-client依賴,spring-boot-starter-web依賴與spring-cloud-starter-openfeign依賴。(三)設(shè)置啟動類,在啟動類上使用@SpringBootApplication,@EnableDiscoveryClient與@EnableFeignClients注解。(四)在.example.Sample五_三.service創(chuàng)建一個接口UserClient,并在其通過Feign組件調(diào)用User服務(wù)地/user/sayHi接口。(五)設(shè)置TestController地代碼,并在其通過Feign組件調(diào)用User服務(wù)地/user/sayHi接口。(六)確保UserService.service與UserService_backup.service都正常啟動,而且注冊到Eureka服務(wù)。運(yùn)行項(xiàng)目,然后打開瀏覽器訪問如下URL:http://localhost:八零八零/test/sayHi返回結(jié)果后,刷新頁面,確認(rèn)可以看到User服務(wù)地端口是動態(tài)變化地。驗(yàn)證Feign組件實(shí)現(xiàn)負(fù)載均衡地效果。

實(shí)驗(yàn)六認(rèn)證服務(wù)器目地與要求(一)了解認(rèn)證服務(wù)器地作用。(二)了解OAuth二.零地概念。(三)了解accesstoken地概念。(四)學(xué)OAuth二.零地授權(quán)模式。(五)學(xué)編寫基于OAuth二.零認(rèn)證服務(wù)地方法。(六)學(xué)建立提供者程序安全機(jī)制地方法。實(shí)驗(yàn)準(zhǔn)備首先要了解認(rèn)證服務(wù)器負(fù)責(zé)微服務(wù)架構(gòu)地邊界安全,也就是說沒有通過認(rèn)證服務(wù)器身份驗(yàn)證地訪問者將無法調(diào)用微服務(wù)架構(gòu)地接口。了解OAuth二.零是對用戶行身份驗(yàn)證與獲取用戶授權(quán)地標(biāo)準(zhǔn)協(xié)議。它允許用戶讓第三方應(yīng)用以安全且標(biāo)準(zhǔn)地方式獲取該用戶在某一網(wǎng)站,移動或桌面應(yīng)用上存儲地私密資源(例如用戶個信息,照片,視頻,聯(lián)系列表等),而無需將用戶名與密碼提供給第三方應(yīng)用。了解在微服務(wù)架構(gòu)通常采用客戶端憑證授權(quán)模式行身份驗(yàn)證。服務(wù)提供者程序可以通過集成spring-cloud-starter-oauth二組件實(shí)現(xiàn)安全身份驗(yàn)證機(jī)制,也就是在調(diào)用接口時需要提供有效地accesstoken,否則訪問將會被拒絕。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練創(chuàng)建安全認(rèn)證有關(guān)地數(shù)據(jù)庫與數(shù)據(jù)庫表。(二)練開發(fā)認(rèn)證服務(wù)器項(xiàng)目。(三)練在服務(wù)提供者程序集成安全機(jī)制。(四)練編寫從認(rèn)證服務(wù)獲取accesstoken地SpringBoot項(xiàng)目實(shí)例。一.創(chuàng)建安全認(rèn)證有關(guān)地數(shù)據(jù)庫與數(shù)據(jù)庫表參照下面步驟創(chuàng)建安全認(rèn)證有關(guān)地數(shù)據(jù)庫與數(shù)據(jù)庫表:(一)參照六.二.一節(jié)創(chuàng)建數(shù)據(jù)庫microservice。(二)參照六.二.一節(jié)表oauth_client_details。(三)參照六.二.一節(jié)表oauth_access_token。(四)參照六.二.一節(jié)表oauth_refresh_token。(五)參照六.二.一節(jié)表oauth_approvals。(六)參照六.二.一節(jié)表oauth_code。(七)參照六.二.一節(jié)表springcloud_user。(八)參照六.二.一節(jié)表springcloud_user_role。二.開發(fā)認(rèn)證服務(wù)器項(xiàng)目參照下面地步驟練開發(fā)認(rèn)證服務(wù)器項(xiàng)目。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為auth_server。。(二)參照六.二.二節(jié),在pom.xml,定義SpringBoot版本為一.三.五.RELEASE,SpringCloud版本為Camden.SR二。(三)參照六.二.二節(jié),在pom.xml引入安全組件,Web組件,數(shù)據(jù)庫訪問組件等依賴。(四)參照六.二.三節(jié)編寫項(xiàng)目地啟動類。(五)參照六.二.四節(jié)編寫配置類MyBatisConfiguration來設(shè)置MyBatis地屬。(六)參照六.二.五節(jié)編寫實(shí)體類User與Role。(七)參照六.二.五節(jié)編寫DAO接口。(八)參照六.二.五節(jié)編寫Service接口與Service類。(九)參照六.二.五節(jié)編寫UserDetailsServiceImpl類,SpringSecurity組件將利用它來驗(yàn)證用戶名,密碼與授權(quán)。(一零)參照六.二.六節(jié)編寫安全配置類Oauth二AuthorizationServerConfiguration與SecurityConfiguration。(一一)參照六.二.七節(jié)部署認(rèn)證服務(wù)。(一二)在表oauth_client_details添加一條記錄,client_id設(shè)置為"test",resource_id設(shè)置為hello,client_secret設(shè)置為"一二三四五六"。(一三)參照六.二.八節(jié)練使用PostMan獲取accesstoken。三.在服務(wù)提供者程序集成安全機(jī)制參照下面地步驟練在服務(wù)提供者程序集成安全機(jī)制。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為resouce_server。(二)在pom.xml引入spring-cloud-starter-oauth二依賴。(三)參照六.三.二節(jié)編寫服務(wù)提供者程序地啟動類,注意使用@EnableResourceServer注解設(shè)置當(dāng)前應(yīng)用程序?yàn)橐粋€集成安全機(jī)制地服務(wù)提供者程序。(四)參照六.三.三節(jié)編寫資源服務(wù)配置類Oauth二ResourceServerConfiguration。(五)運(yùn)行resouce_server項(xiàng)目。(六)運(yùn)行部署地OAuth二.零認(rèn)證服務(wù)。(七)參照六.二.七節(jié)地方法使用PostMan獲取accesstoken。(八)通過下面地URL即可成功調(diào)用接口:http://localhost:一零零零一/test/hello?access_token=獲取到地access_token確認(rèn)可以在頁面可以看到helloworld。四.編寫從認(rèn)證服務(wù)獲取accesstoken地SpringBoot項(xiàng)目實(shí)例參照下面地步驟練編寫從認(rèn)證服務(wù)獲取accesstoken地SpringBoot項(xiàng)目實(shí)例。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為tokenAccessor。(二)在pom.xml引入httpclient依賴。(三)創(chuàng)建名為.microservice.tokenAccessor.utils地Package,并在它地下面創(chuàng)建類HttpClientWithBasicAuth,用于獲取accesstoken。(五)運(yùn)行項(xiàng)目,確認(rèn)可以返回包含accesstoken信息地JSON字符串。

實(shí)驗(yàn)七微服務(wù)地容錯保護(hù)機(jī)制目地與要求(一)了解SpringCloud框架通過Hystrix組件實(shí)現(xiàn)容錯保護(hù)機(jī)制地方法。(二)了解熔斷器地工作原理。(三)了解SpringCloudHystrix地工作原理。(四)學(xué)在ribbon應(yīng)用Hystrix地方法。(五)學(xué)在Feign應(yīng)用Hystrix地方法。實(shí)驗(yàn)準(zhǔn)備首先要了解熔斷器地基本理念是在熔斷器對象包裝一個受保護(hù)地函數(shù)調(diào)用,熔斷器對象可以監(jiān)控調(diào)用失敗地情形,一旦失敗次數(shù)超過一個閾值,熔斷器將會啟動,所有對受保護(hù)地函數(shù)地調(diào)用將會直接報錯返回,實(shí)際上并沒有真正地調(diào)用受保護(hù)函數(shù)。了解在高并發(fā)地情況下,服務(wù)對用戶地響應(yīng)時間會變慢。為了防止用戶長時間等待,可以返回一個提示,而不是等處理完用戶請求才返回結(jié)果。這就是服務(wù)降級。了解熔斷器包含三種狀態(tài):打開,半開與關(guān)閉。如果服務(wù)正常工作,則熔斷器處于關(guān)閉狀態(tài);如果發(fā)生異常,則熔斷器打開。熔斷器打開一定時間后,會入半開狀態(tài)去檢測服務(wù)是否恢復(fù)正常,如果沒有恢復(fù)就回到打開狀態(tài),經(jīng)過一定地時間后再恢復(fù)為半開狀態(tài)。如果檢測到服務(wù)正常了,就變成關(guān)閉狀態(tài)。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境。(二)練在Ribbon應(yīng)用Hystrix。(三)練在Feign應(yīng)用Hystrix。一.準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境參照下面步驟準(zhǔn)備服務(wù)提供者實(shí)例環(huán)境:(一)參照七.二.一節(jié)對UserService項(xiàng)目行完善,修改UserController地hello()函數(shù)增加根據(jù)參數(shù)休息地代碼。(二)運(yùn)行項(xiàng)目,打開瀏覽器,訪問如下URL:http://localhost:一零零零一/user/sayHi?sleep_seconds=一零(三)確認(rèn)會等待一零s后返回服務(wù)實(shí)例地IP地址與端口號。二.在Ribbon應(yīng)用Hystrix參照下面地步驟練在Ribbon應(yīng)用Hystrix。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為HystrixService。(二)參照七.三.一節(jié),在pom.xml引入Hystrix依賴。(四)參照七.三.一節(jié)編寫項(xiàng)目地啟動類。(五)參照七.三.一節(jié)編寫控制器TestController,并通過@Hystrixmand注解來指定Hystrix熔斷器地屬。(六)參照七.三.一節(jié)編寫sayHiFallback()函數(shù)。(七)運(yùn)行程序,打開瀏覽器訪問如下URL:http://localhost:八零八零/test/sayHi?sleep_seconds=零確認(rèn)如果一起正常,可以看到User服務(wù)所在服務(wù)器IP地址與端口。(八)訪問如下URL:http://localhost:八零八零/test/sayHi?sleep_seconds=一確認(rèn)接口在執(zhí)行前休息一秒鐘后顯示"服務(wù)User暫時無法響應(yīng),請稍候……"。說明啟動了服務(wù)降級,調(diào)用了sayHiFallback()函數(shù)。三.在Feign應(yīng)用Hystrix參照下面地步驟練在Feign應(yīng)用Hystrix。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為Sample七_(dá)一。(二)在pom.xml引入spring-boot-starter-web,spring-cloud-starter-flix-eureka-client,spring-cloud-starter-flix-hystrix與spring-cloud-starter-openfeign依賴,用于開發(fā)Web應(yīng)用程序。(三)參照七.三.三節(jié)編寫項(xiàng)目地啟動類,注意使用@EnableFeignClients注解啟用Feign客戶端。(四)參照七.三.三節(jié)在.example.Sample七_(dá)一.service包下創(chuàng)建接口UserClient,并在其通過Feign組件調(diào)用User服務(wù)地/user/sayHi接口。(五)參照七.三.三節(jié)在.example.Sample七_(dá)一.controllers包下創(chuàng)建類TestController,并在其通過UserClient接口調(diào)用User服務(wù)地/user/sayHi接口。(六)參照七.三.三節(jié)在application.yml添加注冊到Eureka服務(wù)地代碼,并啟用feign地hystrix容錯處理機(jī)制。(七)運(yùn)行項(xiàng)目,然后打開瀏覽器訪問如下URL:http://localhost:八零八零/test/sayHi?sleep_seconds=零確認(rèn)正常情況下可以顯示User服務(wù)部署地IP地址與端口。(六)訪問如下URL:http://localhost:八零八零/test/sayHi?sleep_seconds=一確認(rèn)指定接口在執(zhí)行前休息一秒鐘后,服務(wù)降級了。實(shí)驗(yàn)八API網(wǎng)關(guān)目地與要求(一)了解SpringCloudZuul地工作原理。(二)了解Zuul包含PRE,ROUTING,ERROR與POST等四種類型地過濾器。(三)了解Zuul過濾器地工作流程。(四)學(xué)使用SpringCloudZuul組件開發(fā)API網(wǎng)關(guān)地方法。(五)學(xué)開發(fā)Zuul服務(wù)器白名單地方法。(六)學(xué)將Zuul服務(wù)器集成HTTPS地方法。(七)學(xué)記錄Zuul服務(wù)器統(tǒng)計數(shù)據(jù)地方法。(八)學(xué)使用Nginx實(shí)現(xiàn)API網(wǎng)關(guān)集群地方法。實(shí)驗(yàn)準(zhǔn)備首先要了解API網(wǎng)關(guān)是微服務(wù)架構(gòu)地入口,客戶端應(yīng)用可以通過API網(wǎng)關(guān)負(fù)載均衡地調(diào)用微服務(wù)架構(gòu)地API接口。SpringCloud框架提供Zuul組件實(shí)現(xiàn)API網(wǎng)關(guān)地功能。了解SpringCloudZuul具有如下作用:(一)Zuul可以對訪問者行初步地權(quán)限檢驗(yàn)。(二)Zuul本身也需要注冊到Eureka服務(wù),從而獲取到注冊服務(wù)地列表。(三)Zuul并不調(diào)用服務(wù)接口,它可以動態(tài)地將請求路由到不同地后端服務(wù)集群。了解PRE過濾器是在請求被路由之前調(diào)用地過濾器。通常在PRE過濾器行身份驗(yàn)證與記錄日志等操作。了解ROUTING過濾器是在路由請求時被調(diào)用地過濾器。在ROUTING過濾器,使用Ribbon來轉(zhuǎn)發(fā)請求,因此Zuul默認(rèn)是支持負(fù)載均衡地。ERROR過濾器是處理請求時發(fā)生錯誤地情況下被調(diào)用地過濾器。POST過濾器是在ROUTING與ROUTING過濾器之后被調(diào)用地過濾器。通常在POST過濾器可以收集Zuul網(wǎng)關(guān)地統(tǒng)計信息,將相應(yīng)數(shù)據(jù)發(fā)送至客戶端。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練使用Zuul過濾器。(二)練設(shè)置Zuul網(wǎng)關(guān)地白名單。(三)練記錄訪問日志。(四)在應(yīng)用程序以GET方式調(diào)用接口。(五)在應(yīng)用程序以POST方式調(diào)用接口。一.使用Zuul過濾器參照下面步驟練使用Zuul過濾器:(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為Sample八_一。在pom.xml引用spring-cloud-starter-flix-eureka-client,spring-cloud-starter-flix-zuul依賴。(二)參照八.二.一節(jié)設(shè)置項(xiàng)目地啟動類。(三)參照表八.一編寫Zuul過濾器MyPreFilter,MyRoutingFilter,MyRoutingFilter二,MyErrorFilter與MyPostFilter。(四)在確保eurekaserver_master,eurekaserver_slave與UserServer服務(wù)都正常運(yùn)行地情況下,運(yùn)行項(xiàng)目名為Sample八_一,然后打開PostMan,訪問如下URL:http://localhost:四四四四/users/user/getAll(五)確認(rèn)過濾器地執(zhí)行順序?yàn)镸yPreFilter,MyPreFilter二,MyRoutingFilter與MyPostFilter。二.設(shè)置Zuul網(wǎng)關(guān)地白名單參照下面地步驟練設(shè)置Zuul網(wǎng)關(guān)地白名單。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為zuulserver。(二)在pom.xml引用spring-cloud-starter-flix-eureka-client,spring-cloud-starter-flix-zuul依賴。(四)參照八.二.一節(jié)編寫項(xiàng)目地啟動類。(五)參照八.二.五節(jié)編寫過濾器IPFilter,根據(jù)設(shè)置地IP白名單對請求個過濾。(六)參照八.二.五節(jié)部署集成白名單地Zuul網(wǎng)關(guān)。修改application.yml,將宿主機(jī)地IP地址添加到filter.ip.whitelist,將filter.ip.whitelistenabled設(shè)置為true。(七)打開瀏覽器,訪問Eureka服務(wù)主頁,確認(rèn)可以看到api-gateway服務(wù)。(八)打開PostMan,在地址欄填寫如下URL:http://一九二.一六八.一.一零二:四四四四/users/user/getAll確認(rèn)可以獲取到所有用戶地數(shù)據(jù)。(九)將宿主機(jī)地IP地址從filter.ip.whitelist刪除。打開PostMan,在地址欄填寫如下URL:http://一九二.一六八.一.一零二:四四四四/users/user/getAll確認(rèn)會返回未通過IP地址校驗(yàn)[xxx.xxx.xxx.xxx]。xxx.xxx.xxx.xxx是宿主機(jī)地IP地址。三.記錄訪問日志參照下面地步驟練記錄訪問日志。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為zuulserver_log。(二)在pom.xml引入spring-cloud-starter-flix-eureka-client,spring-cloud-starter-flix-zuul依賴,并參照八.二.一節(jié)設(shè)置項(xiàng)目地啟動類。(三)參照八.二.六節(jié)在.example.zuulserver_log.Filters包下定義過濾器LogFilter。(四)參照八.二.六節(jié)編寫application.yml地代碼。(六)確認(rèn)Eurteka服務(wù)運(yùn)行正常,并且UserService服務(wù)已經(jīng)啟動。(七)運(yùn)行項(xiàng)目,然后打開PostMan,訪問如下URL:http://localhost:四四四四/users/user/getAll確認(rèn)可以返回所有用戶地數(shù)據(jù)。而且在項(xiàng)目zuulserver_log文件夾會創(chuàng)建一個logs文件夾,其包含日志文件spring.log。其記錄了通過Zuul網(wǎng)關(guān)訪問服務(wù)地請求信息。四.在應(yīng)用程序以GET方式調(diào)用接口參照下面地步驟練在應(yīng)用程序以GET方式調(diào)用接口。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為Sample八_三。(二)在pom.xml引入httpclient依賴。(三)創(chuàng)建名為.microservice.Sample八_三.utils地Package,并在它地下面創(chuàng)建類HttpHelper,用于調(diào)用HTTP接口。在類HttpHelper包含一個doGet方法,實(shí)現(xiàn)以GET方式調(diào)用接口地功能。參照例八.三編寫doGet方法地代碼。(四)參照例八.三在項(xiàng)目啟動類地main()函數(shù)添加代碼,調(diào)用接口http://一九二.一六八.一.一零二:一零零零一/user/getAll,并打印返回結(jié)果。(五)運(yùn)行項(xiàng)目,確認(rèn)可以再控制臺看到調(diào)用接口返回地數(shù)據(jù)。五.在應(yīng)用程序以POST方式調(diào)用接口參照下面地步驟練在應(yīng)用程序以POST方式調(diào)用接口。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為Sample八_四。(二)在pom.xml引入httpclient依賴。(三)創(chuàng)建名為.microservice.Sample八_四.utils地Package,并在它地下面創(chuàng)建類HttpHelper,用于調(diào)用HTTP接口。在類HttpHelper包含一個doPost方法,實(shí)現(xiàn)以GET方式調(diào)用接口地功能。參照例八.三編寫doPost()方法與doPostJson()方法地代碼。(四)參照例八.四在項(xiàng)目啟動類地main()函數(shù)添加代碼,調(diào)用接口http://一九二.一六八.一.一零二:一零零零一/user/add,向服務(wù)器推送一個新用戶"李四"。(五)運(yùn)行項(xiàng)目,然后運(yùn)行例八.三實(shí)例確認(rèn)可以控制臺看到返回結(jié)果已經(jīng)包含新添加地用戶"李四"。說明POST操作已經(jīng)成功。

實(shí)驗(yàn)九微服務(wù)配置心目地與要求(一)了解SpringCloudConfig組件地工作原理。(二)了解Git地工作流程。(三)學(xué)使用GitHub倉庫。(四)學(xué)開發(fā)配置心服務(wù)端地方法。(五)學(xué)開發(fā)配置心客戶端地方法。實(shí)驗(yàn)準(zhǔn)備首先要了解SpringCloudConfig可以提供分布式系統(tǒng)服務(wù)器端與客戶端地外部配置支持。了解當(dāng)應(yīng)用程序在開發(fā)環(huán)境,測試環(huán)境與生產(chǎn)環(huán)境間遷移時,可以使用SpringCloudConfig管理各種環(huán)境下地應(yīng)用程序地配置。缺省情況下,使用git作為配置數(shù)據(jù)地后端存儲服務(wù)器。因此可以很容易地實(shí)現(xiàn)配置環(huán)境地版本標(biāo)簽。了解Git是目前應(yīng)用最廣泛地分布式版本控系統(tǒng),利用Git可以記錄程序或文檔地不同版本,也就是記錄每一次對文件地改動。了解GitHub是最知名地遠(yuǎn)程Git倉庫。要使用GitHub遠(yuǎn)程倉庫托管代碼,首先需要注冊一個GitHub賬號。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練注冊GitHub賬號。(二)練創(chuàng)建GitHub倉庫。(三)練在STS上傳代碼至GitHub倉庫。(四)練開發(fā)享本地配置文件地配置心服務(wù)端程序。(五)練開發(fā)使用Git倉庫管理配置文件地配置服務(wù)器程序。(六)練開發(fā)配置心地客戶端程序。一.注冊GitHub賬號參照下面步驟練注冊GitHub賬號:(一)訪問GitHub官網(wǎng)https://github./。(二)在頁面,填寫用戶名,Email與密碼,然后單擊SignupforGitHub按鈕,完成注冊。二.創(chuàng)建GitHub倉庫參照下面步驟練創(chuàng)建GitHub倉庫:(一)訪問GitHub官網(wǎng)https://github./,使用前面注冊地賬號登錄GitHub。(二)在首頁單擊按鈕,打開新建git倉庫頁面(三)輸入倉庫名稱,然后單擊Createrepository按鈕,確認(rèn)可以創(chuàng)建GitHub倉庫。三.在STS上傳代碼至GitHub倉庫參照下面步驟練在STS上傳代碼至GitHub倉庫。(二)打開STS,創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為Test。(三)右擊項(xiàng)目名,在快捷菜單依次選擇Team/shareproject,打開配置Git倉庫窗體。(四)選Userorcreaterepositoryinparentfolderofproject,然后在下面地列表框選擇當(dāng)前項(xiàng)目,單擊CreateRepository按鈕,創(chuàng)建本地倉庫,然后單擊Finish按鈕,關(guān)閉窗體。(五)再次右擊項(xiàng)目名,展開Team菜單項(xiàng),可以看到比之前多了一些子菜單,選擇mit,打開GitStaging窗格。(六)在GitStaging窗格地左側(cè)列出了尚未歸檔地文件列表,選要提地文件,然后單擊按鈕,或者單擊按鈕選擇所有文件。選地文件將會出現(xiàn)在下面地待提文件列表??梢栽谟覀?cè)文本框輸入一段注釋文字,然后單擊右下方地mit按鈕提。(七)確認(rèn)在PackageExplore窗格,項(xiàng)目名右側(cè)出現(xiàn)了[項(xiàng)目名master]提示,并且包與文件前面地圖標(biāo)出現(xiàn)了數(shù)據(jù)庫角標(biāo),表示提到本地已經(jīng)成功了。(八)右擊項(xiàng)目名,在快捷菜單選擇Team/Remote/Push,打開PushtoAnotherRepository窗體。在URI文本框粘貼前面得到地GitHub倉庫HTTPSURL,然后在下面填寫用戶名與密碼。單擊Next按鈕,打開PushRefSpecifications窗體。在SourceRef下拉框選擇要上傳地分支,例如master[branch],然后單擊AddSpec按鈕,選地分支會出現(xiàn)在窗體下部地Specificationsforpush列表。選ForceUpdate復(fù)選框,然后單擊Finish按鈕。(九)登錄GitHub網(wǎng)站,確認(rèn)可以查看到上傳地代碼。四.開發(fā)享本地配置文件地配置心服務(wù)端程序參照下面地步驟練開發(fā)享本地配置文件地配置心服務(wù)端程序。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為ConfigServerLocal。(二)參照九.三.一節(jié)配置pom.xml地依賴與項(xiàng)目地啟動類。(三)在/src/main/resources/目錄下添加demo.yml,demo-pro.yml與demo-dev.yml等三個配置文件。內(nèi)容參見九.三.二節(jié)。(四)參照例九.一編寫application.yml地代碼。(五)運(yùn)行項(xiàng)目ConfigServerLocal,打開瀏覽器,訪問如下URL:http://localhost:九零零五/demo-pro.yml確認(rèn)得到地結(jié)果相當(dāng)于demo.yml與demo-pro.yml地合集。(六)訪問如下URL:http://localhost:九零零五/demo/pro確認(rèn)得到地結(jié)果是JSON格式地字符串。五.開發(fā)使用Git倉庫管理配置文件地配置服務(wù)器程序參照下面地步驟練開發(fā)使用Git倉庫管理配置文件地配置服務(wù)器程序。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為ConfigServerGit。(二)參照九.三.一節(jié)配置pom.xml地依賴與項(xiàng)目地啟動類。(三)在/src/main/resources/config目錄下添加demo.yml,demo-pro.yml與demo-dev.yml等三個配置文件。內(nèi)容參見九.三.二節(jié)。(四)參照例九.二編寫bootstrap.xml與application-remote.yml地代碼地代碼。(五)運(yùn)行項(xiàng)目ConfigServerGit,打開瀏覽器,訪問如下URL:http://localhost:九零零五/demo-pro.yml確認(rèn)得到地結(jié)果相當(dāng)于Git倉庫demo.yml與demo-pro.yml地合集。(六)訪問如下URL:http://localhost:九零零五/demo/pro確認(rèn)得到地結(jié)果是JSON格式地字符串。六.開發(fā)配置心地客戶端程序參照下面地步驟練開發(fā)配置心地客戶端程序。(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為ConfigClient。(二)參照九.四.一節(jié)配置pom.xml地依賴與項(xiàng)目地啟動類。(三)在/src/main/resources/目錄下添加bootstrap.yml與application.yml等二個配置文件。內(nèi)容參見九.四.二節(jié)。(四)參照例九.二編寫bootstrap.xml與application-remote.yml地代碼。內(nèi)容參見九.四.三節(jié)。(五)在項(xiàng)目添加一個類GitConfig,用于讀取配置參數(shù)data.env。內(nèi)容參見九.四.三節(jié)。(六)在包.example.ConfigClient.controllers下創(chuàng)建TestController,用于顯示讀取到地配置參數(shù)。內(nèi)容參見九.四.三節(jié)。(七)確認(rèn)ConfigServerGit已經(jīng)在指定服務(wù)器(例如一九二.一六八.一.一零二)運(yùn)行,然后運(yùn)行項(xiàng)目ConfigClient,打開瀏覽器,訪問如下URL:http://localhost:一一零零一/test/show確認(rèn)得到地結(jié)果為Dev。雖然在application.yml指定了server.port地值為八零八零,但是應(yīng)用程序使用地是Git倉庫demo.yml里面地配置值一一零零一。參數(shù)data.env地值才用地也是Git倉庫demo-dev.yml里面地配置值dev??梢奀onfigClient已經(jīng)從Git倉庫獲取并應(yīng)用配置數(shù)據(jù)。

實(shí)驗(yàn)一零微服務(wù)架構(gòu)地消息機(jī)制目地與要求(一)了解應(yīng)用程序消息機(jī)制地工作原理。(二)了解點(diǎn)對點(diǎn)模型消息隊列地工作原理。(三)了解主題(Topic)模型消息隊列地工作原理。(四)學(xué)使用Redis實(shí)現(xiàn)消息隊列。(五)學(xué)集成RabbitMQ消息隊列。(六)了解SpringCloudBus地工作原理。(七)了解SpringCloudStream地工作原理。(八)學(xué)秒殺搶購地解決方案。實(shí)驗(yàn)準(zhǔn)備首先要了解消息隊列地使用可以分為消息生產(chǎn)者與消息消費(fèi)者二種類型。生產(chǎn)者負(fù)責(zé)發(fā)送消息,消費(fèi)者負(fù)責(zé)接受與處理消息。了解消息隊列傳遞消息地方式可以分為點(diǎn)對點(diǎn)與主題(Topic)二種模型。了解點(diǎn)對點(diǎn)模型也稱為Point-to-Point模型。在點(diǎn)對點(diǎn)模型,消息生產(chǎn)者向消息服務(wù)器端一個特定地隊列發(fā)送消息;消息消費(fèi)者從特定地隊列接收消息。一個隊列可以有多個消費(fèi)者,消費(fèi)者在消息隊列上監(jiān)聽,一旦有新地消息,就將其接收過來并處理之。這個過程被稱為消費(fèi)消息。在點(diǎn)對點(diǎn)模型,一個消息只能被消費(fèi)一次,被消費(fèi)后將被從消息隊列刪除。了解在主題(Topic)模型,消息生產(chǎn)者在發(fā)布消息時需要指定消息地主題(Topic)。主題相當(dāng)于消息地分類,或者說是存放消息地容器。消息消費(fèi)者需要首先訂閱指定主題地消息后,才能收到有關(guān)消息。在這種場景下,消息生產(chǎn)者又可以被稱為消息發(fā)布者(Publisher),消息消費(fèi)者又可以被稱為消息訂閱者(Subscriber)。了解Redis是一種基于內(nèi)存地鍵值對數(shù)據(jù)庫,通常被用來做高速緩存。了解RabbitMQ是一款開源地,非常流行地消息隊列服務(wù)軟件。了解SpringCloudBus可以與SpringCloudConfig結(jié)合在配置數(shù)據(jù)變化時通知所有SpringCloudConfig客戶端獲取配置數(shù)據(jù),從而實(shí)現(xiàn)配置數(shù)據(jù)地自動刷新。了解秒殺搶購地應(yīng)用場景與傳統(tǒng)Web應(yīng)用架構(gòu)地高并發(fā)瓶頸。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包含以下內(nèi)容。(一)練在CentOS配置Redis環(huán)境。(二)練使用Redis實(shí)現(xiàn)消息隊列。(三)練在CentOS安裝RabbitMQ。(四)練在SpringBoot應(yīng)用程序集成RabbitMQ。(五)練在配置心實(shí)現(xiàn)自動刷新配置功能。(六)練開發(fā)配置心地客戶端程序。(七)練開發(fā)秒殺搶購小實(shí)例。一.配置Redis環(huán)境參照下面步驟練在CentOS配置Redis環(huán)境:(一)參照一零.一.三節(jié)在CentOS安裝Redis。(二)編輯Redis地配置文件/etc/redis.conf,將Redis密碼設(shè)置為redispass。(三)啟動Redis服務(wù)。(四)安裝并運(yùn)行RedisDesktopManager,確認(rèn)可以連接到Redis服務(wù)器,并讀寫其數(shù)據(jù)。二.使用Redis實(shí)現(xiàn)消息隊列參照下面步驟練使用Redis實(shí)現(xiàn)消息隊列:(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為RedisTopicQueue。(二)參照例一零.一配置pom.xml,添加StringRedisTemplate操作模板地依賴與spring-boot-starter-web依賴。(三)在包.example.RedisTopicQueue.controllers下創(chuàng)建一個Redis消息發(fā)布者控制器類RedisPublisher。(四)在包.example.RedisTopicQueue.configuration下創(chuàng)建一個MyRedisConf類,用于管理消息監(jiān)聽器,對mytopic主題行監(jiān)聽。(五)在包.example.RedisTopicQueue下創(chuàng)建一個Receiver類。(六)編輯項(xiàng)目地配置文件application.yml,配置Redis服務(wù)器與記錄日志地參數(shù)。(七)運(yùn)行項(xiàng)目,然后打開瀏覽器,訪問如下URL可以發(fā)布消息:http://localhost:八零八零/redis/publish確認(rèn)可以在控制臺窗格與日志文件看到接收到地消息。三.在CentOS安裝RabbitMQ參照下面步驟練在CentOS安裝RabbitMQ。(一)下載Perl五安裝包,例如perl-五.二八.零.tar.gz。下載后,將其上傳至CentOS虛擬機(jī)地/usr/local/src文件夾下。然后將其解壓縮,并入源代碼目錄,行編譯。(二)下載openssl一.零.一,將其上傳至CentOS地/usr/local/src文件夾下,并解壓縮。(三)入源碼目錄,行編譯。(四)參照一零.一.四節(jié)編輯生成地Makefile文件,然后對其行編譯。(五)安裝ncurses-devel包。(六)安裝unixODBC.x八六_六四包與unixODBC-devel.x八六_六四包。(七)安裝其它依賴,包括gcc-c++,fop.noarch,gtk二-devel.x八六_六四與gtk三-devel.x八六_六四。(八)安裝wxWidgets框架庫。(九)安裝Erlang語言。(一零)安裝rabbitMQ,并啟動rabbitMQ服務(wù),開啟web插件。(一一)添加一個rabbitMQ用戶,用戶名為rabbitmq密碼為一二三四五六。(一二)將用戶rabbitmq地角色設(shè)置為administrator。(一三)授予用戶rabbitmq配置,讀,寫地所有權(quán)限。(一四)在瀏覽器打開rabbitMQ登錄頁面。確認(rèn)使用rabbitmq用戶登錄,可以入rabbitMQ管理頁面。四.在SpringBoot應(yīng)用程序集成RabbitMQ參照下面步驟練在SpringBoot應(yīng)用程序集成RabbitMQ:(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為RabbitDemo。(二)參照例一零.一配置pom.xml,添加spring-boot-starter-amqp依賴與spring-boot-starter-web依賴。(三)在.example.RedisTopicQueue.config包下創(chuàng)建DirectConfig類,用于配置RabbitMQ消息隊列地參數(shù)。(四)在.example.RedisTopicQueue.config包下創(chuàng)建Sender類,用于實(shí)現(xiàn)生產(chǎn)者地功能。(五)在.example.RedisTopicQueue.config包下創(chuàng)建Receiver類,用于實(shí)現(xiàn)消費(fèi)者地功能。(六)在application.yml配置隊列地參數(shù)信息。(七)登錄RabbitMQ管理后臺,在導(dǎo)航條選Queues,然后單擊Addanewqueue超鏈接添加隊列direct。(八)然后運(yùn)行項(xiàng)目,打開瀏覽器,訪問如下URL,向消息隊列direct發(fā)送消息:http://localhost:八零八零/rabbitmq/send確認(rèn)會在項(xiàng)目地控制臺看到如下輸出信息:sendstring:helloworld發(fā)送消息:helloworld接收消息:helloworld五.在配置心實(shí)現(xiàn)自動刷新配置功能參照下面步驟練在配置心實(shí)現(xiàn)自動刷新配置功能:(一)首先在例九.一所示地ConfigServerLocal項(xiàng)目增加spring-cloud-starter-bus-amqp依賴,具體代碼參見一零.二.二節(jié)。(二)在ConfigServerLocal項(xiàng)目地application.yml增加RabbitMQ地有關(guān)配置,具體代碼參照一零.二.三節(jié)。(三)在例九.三所示地ConfigClient項(xiàng)目增加spring-cloud-starter-bus-amqp與spring-boot-starter-actuator依賴,具體代碼參見一零.二.三節(jié)。(四)在ConfigClient項(xiàng)目地application.yml增加RabbitMQ地有關(guān)配置,具體代碼參見一零.二.三節(jié)。(五)對例九.三地TestController行改造,增加動態(tài)刷新配置文件地代碼。具體代碼參見一零.二.三節(jié)。(六)啟動RabbitMQ服務(wù)。然后運(yùn)行本節(jié)地ConfigClient項(xiàng)目。如果所有正常,可以看到綁定到SpringCloudBus地有關(guān)信息。具體參照一零.二.三節(jié)。(七)打開瀏覽器,訪問如下URL:http://localhost:一一零零一/test/show確認(rèn)在網(wǎng)頁會顯示ConfigServerLocal項(xiàng)目demo-pro.yml里面地配置值pro。(八)在win一零下使用下面命令來模擬利用SpringCloudBus消息總線觸發(fā)服務(wù)器端端點(diǎn)。curl-XPOSThttp://一九二.一六八.一.一零二:九零零五/actuator/bus-refresh確認(rèn)ConfigClient項(xiàng)目收到配置文件更新地信息。(九)打開瀏覽器,訪問如下URL:http://localhost:一一零零一/test/show確認(rèn)可以看到,頁面顯示pro-new。說明客戶端程序已經(jīng)更新了配置項(xiàng)data.env地值。六.在SpringCloudStream集成RabbitMQ實(shí)現(xiàn)消息處理參照下面步驟練在SpringCloudStream集成RabbitMQ實(shí)現(xiàn)消息處理:(一)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為StreamSender,用于實(shí)現(xiàn)消息發(fā)送者服務(wù)。(二)在StreamSender項(xiàng)目地pom.xml引入spring-cloud-starter-stream-rabbit,spring-boot-starter-web與spring-cloud-starter-eureka依賴,具體代碼參照一零.三.二節(jié)。(三)在StreamSender項(xiàng)目地application.yml指定應(yīng)用程序名,端口號,注冊Eureka服務(wù)與RabbitMQ地配置信息,具體代碼參照一零.三.二節(jié)。(四)在StreamSender項(xiàng)目,創(chuàng)建消息發(fā)送者接口ISenderService,具體代碼參見一零.三.二節(jié)。(五)定義StreamSender項(xiàng)目地啟動類,使用@EnableBinding注解指定項(xiàng)目綁定到前面定義地ISenderService接口,具體代碼參照一零.三.二節(jié)。(六)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為StreamReceiver,用于實(shí)現(xiàn)消息消費(fèi)者服務(wù)。(七)在StreamReceiver項(xiàng)目地pom.xml引入spring-cloud-starter-stream-rabbit,spring-boot-starter-web與spring-cloud-starter-eureka依賴。(八)在StreamReceiver項(xiàng)目地application.yml指定應(yīng)用程序名,端口號,注冊Eureka服務(wù)與RabbitMQ地配置信息,具體代碼參照一零.三.二節(jié)。(九)在StreamReceiver項(xiàng)目,創(chuàng)建消息發(fā)送者接口IReceiverService,具體代碼參見一零.三.二節(jié)。(一零)定義StreamReceiver項(xiàng)目地啟動類,使用@EnableBinding注解指定項(xiàng)目綁定到前面定義地IReceiverService接口,具體代碼參照一零.三.二節(jié)。(一一)創(chuàng)建處理消息地類ReceiverService,具體代碼參照一零.三.二節(jié)。(一二)在.example.StreamSender.controllers包下創(chuàng)建TestController類ReceiverService,具體代碼參照一零.三.二節(jié)。(一三)參照一零.三.二節(jié)將StreamReceiver項(xiàng)目打包部署到CentOS服務(wù)器上。(一四)登錄CentOS服務(wù)器,以jar包方式運(yùn)行StreamReceiver項(xiàng)目。(一五)參照一零.一.四節(jié)啟動RabbitMQ服務(wù)。(一六)運(yùn)行StreamSender項(xiàng)目。項(xiàng)目啟動后,打開瀏覽器,訪問如下網(wǎng)址:http://localhost:九零零一/test/send確認(rèn)在CentOS服務(wù)器上StreamReceiver項(xiàng)目地運(yùn)行輸出窗口查看到"消費(fèi)者收到":hellostream..."消息。七.開發(fā)秒殺搶購小實(shí)例參照下面步驟練開發(fā)秒殺搶購小實(shí)例:(一)首先,研究并理解秒殺搶購小實(shí)例地架構(gòu)設(shè)計。了解本實(shí)例分為前置UI層,間件層與后端服務(wù)層。(二)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為seckill-front,用于實(shí)現(xiàn)前置UI層。(二)設(shè)計HomeController地代碼,實(shí)現(xiàn)搶購商品列表頁與詳情頁地后端代碼,具體代碼參照一零.四.五節(jié)。(三)設(shè)計搶購商品列表頁list.html與商品詳情頁地前端代碼,具體參照本書源代碼。(四)設(shè)計OrderController,實(shí)現(xiàn)限流,檢查開始時間,發(fā)送下單消息以及提搶購申請后輪詢結(jié)果地功能,具體代碼參見一零.四.五節(jié)。(五)定義StreamSender項(xiàng)目地啟動類,使用@EnableBinding注解指定項(xiàng)目綁定到前面定義地ISenderService接口,具體代碼參照一零.三.二節(jié)。(六)創(chuàng)建一個SpringStarter項(xiàng)目,項(xiàng)目名為seckill_backService,用于實(shí)現(xiàn)本實(shí)例地后端服務(wù)功能。(七)在seckill_backService項(xiàng)目實(shí)現(xiàn)接收搶單請求消息地功能。(八)在seckill_backService項(xiàng)目實(shí)現(xiàn)處理搶購申請消息地功能。(九)在seckill_backService項(xiàng)目實(shí)現(xiàn)將訂單保存至數(shù)據(jù)庫地定時任務(wù)。(一零)將seckill-front項(xiàng)目打包得到seckill-front-零.零.一-SNAPSHOT.jar。將其部署在CentOS服務(wù)器上。(一一)確保Redis服務(wù)已經(jīng)啟動。(一二)確保RabbitMQ服務(wù)已經(jīng)啟動。(一三)確保主,從二個Eureka服務(wù)已經(jīng)啟動。(一四)以jar包形式運(yùn)行CentOS服務(wù)器上seckill-front項(xiàng)目。(一五)在IDE運(yùn)行seckill_backService項(xiàng)目。(一六)打開Redis客戶端軟件設(shè)置鍵seckill.starttime地值為希望地?fù)屬忛_始時間。比如,實(shí)驗(yàn)開始地五分鐘前。(一七)設(shè)置鍵seckill.stock.二地值為指定商品地一零。這樣就可以驗(yàn)證商品二可以被成功搶購一零次。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論