Categories
程式開發

微服務部署測試簡單實踐


微服務特別適合業務複雜,開發隊伍龐大的項目。微服務可以到達化整為零,簡化單個服務,降低溝通成本的效果。但微服務在性能上比單體服務低,也會有數據冗餘的問題,要結合自身情況,不要盲目崇拜。

本文介紹一種簡單的微服務技術架構。幫助大家對微服務如何部署,如何開發有個初步的認識。

一個簡單的微服務架構

部署圖如下

微服務部署測試簡單實踐 1

nginx:

對外統一入口,根據url將請求分發到不同微服務,用ip:port區分不同的微服務。也會直接處理一些靜態資源的訪問,本身就是web服務器。

springboot + dubbo:

spring boot是目前最流行的開發web服務的框架(jsp,ejb,ssh這些框架過於老舊),它和微服務沒有必然聯繫,但它結合dubbo可以開發微服務,要求就是spring boot工程要import dubbo .jar或者使用maven引入dubbo。配置dubbo-application.xml,裡面寫好zookeeper服務地址端口以及提供者和消費者要註冊的接口方法。

一個微服務要調用另一個微服務的方法,只需要@Autowired註冊接口類的對象,用對象調用方法即可。麻煩點的是各個微服務對同一個接口方法要有一致的接口描述java文件,使用maven管理描述接口的jar包可以有效解決接口一致的問題。

最後打jar包,java -jar \*.jar一個微服務就啟動了。

動物園管理員:

springboot需要dubbo,而dubbo最推薦的服務註冊中心是zookeeper,相當於一個公告板,各個微服務都可以看到上面註冊的提供者和消費者的接口方法

D B:

MySQL的Oracle等

重複:

緩存session數據,和其它有必要緩存的業務數據

tomcat + dubbo-admin:

dubbo管理系統,用於監控和排查故障,部署在tomcat下,可以在瀏覽器上查看各個微服務的運行情況,查看某個方法是否可以被正常調用。

積分查詢業務場景,幫助理解微服務。

B服務提供檢查登陸狀態功能。 A服務提供查詢賬號積分功能。

當用戶在app點擊查詢積分時,nginx看見url裡有查詢積分關鍵字,會根據nginx.conf的配置將請求發送到A服務,app會有個sessionid發送給A服務,A服務遠程調用B服務的檢查登陸狀態的接口,將sessionid傳給接口,B服務接口被調用,使用sessionid到redis查用戶信息,如果查詢到redis有對應的用戶信息,將用戶信息返回,A服務接收到遠程調用接口返回的用戶信息userid,接下來根據用戶信息到數據庫DB查詢積分情況。

這就是兩個微服務配合實現一個業務的例子,用到了架構圖中的全部單元。查詢登陸狀態的要求在各個業務都存在,所以會有很多微服務需要遠程調用B服務的接口。同時每個微服務可以即是提供者,又是消費者。

微服務部署測試簡單實踐 2

在windows下配置一套完整的微服務開發環境。

Nginx的

D:\ Program Files \ nginx-1.8.1>啟動nginx.exe

微服務部署測試簡單實踐 3

成功後瀏覽器如下

微服務部署測試簡單實踐 4

的MySQL

D:\ Program Files \ mysql-8.0.12-winx64 \ bin> mysqld-控制台

微服務部署測試簡單實踐 5

重複

D:\ Program Files \ Redis-x64-3.0.504> redis-server.exe redis.windows.conf

圖我忘截了

動物園管理員

雙擊zkServer.cmd

微服務部署測試簡單實踐 6

微服務部署測試簡單實踐 7

tomcat和dubbo-admindubbo-admin

需要github上下載,然後單獨對dubbo-admin進行編譯打war包,war包放到tomcat的webapps目錄下,tomcat啟動時會自動解壓出文件夾,如下圖

微服務部署測試簡單實踐 8

tomcat/bin目錄執行startup.bat 成功後瀏覽器如下

微服務部署測試簡單實踐 9

打開http://127.0.0.1:8080/dubbo-admin-2.5.8/ (我最初打開頁面卡死,後來刪除tomcat/log裡的全部日誌後正常了)

用戶名root 密碼root

微服務部署測試簡單實踐 10

微服務部署測試簡單實踐 11

沒有啟動任何微服務所以上圖各項都是空的。在Intellij IDEA運行兩個微服務(cmd裡java -jar 啟動微服務jar包也可以,但調試修改代碼不太方便)

可以看到dubbo管理系統可以看見兩個服務,一個是提供者,一個是消費者。裡面可以查看名稱,狀態,日誌,對排錯挺有幫助的。

微服務部署測試簡單實踐 12

微服務部署測試簡單實踐 13

微服務部署測試簡單實踐 14

測試dubug

瀏覽器輸入登陸的url可以看到打開登錄頁面。

微服務部署測試簡單實踐 15

到此一個微服務系統的開發調試環境就完成了。如果只測試後端服務不關心瀏覽器和app界面的功能,可以使用postman工具,直接發送url給服務端,查看返回的json數據等是否達到預期要求。