微服務部署測試簡單實踐

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"微服務特別適合業務複雜,開發隊伍龐大的項目。微服務可以到達化整爲零,簡化單個服務,降低溝通成本的效果。但微服務在性能上比單體服務低,也會有數據冗餘的問題,要結合自身情況,不要盲目崇拜。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文介紹一種簡單的微服務技術架構。幫助大家對微服務如何部署,如何開發有個初步的認識。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"一個簡單的微服務架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"部署圖如下"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7c/7c25bd6fff21dd3f3d6bf6cff4c4842e.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"nginx:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對外統一入口,根據url將請求分發到不同微服務,用ip:port區分不同的微服務。也會直接處理一些靜態資源的訪問,本身就是web服務器。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"springboot+dubbo:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"spring boot是目前最流行的開發web服務的框架(jsp,ejb,ssh這些框架過於老舊),它和微服務沒有必然聯繫,但它結合dubbo可以開發微服務,要求就是spring boot工程要import dubbo.jar或者使用maven引入dubbo。配置dubbo-application.xml,裏面寫好zookeeper服務地址端口以及提供者和消費者要註冊的接口方法。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一個微服務要調用另一個微服務的方法,只需要\\@Autowired註冊接口類的對象,用對象調用方法即可。麻煩點的是各個微服務對同一個接口方法要有一致的接口描述java文件,使用maven管理描述接口的jar包可以有效解決接口一致的問題。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後打jar包,java -jar \\"},{"type":"text","marks":[{"type":"italic"}],"text":"\\"},{"type":"text","text":"\\*.jar一個微服務就啓動了。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"zookeeper:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"springboot需要dubbo,而dubbo最推薦的服務註冊中心是zookeeper,相當於一個公告板,各個微服務都可以看到上面註冊的提供者和消費者的接口方法 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"DB:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MySQL Oracle等 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"redis:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"緩存session數據,和其它有必要緩存的業務數據 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"tomcat+dubbo-admin:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"dubbo管理系統,用於監控和排查故障,部署在tomcat下,可以在瀏覽器上查看各個微服務的運行情況,查看某個方法是否可以被正常調用。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"積分查詢業務場景,幫助理解微服務。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"B服務提供檢查登陸狀態功能。A服務提供查詢賬號積分功能。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當用戶在app點擊查詢積分時,nginx看見url裏有查詢積分關鍵字,會根據nginx.conf的配置將請求發送到A服務,app會有個sessionid發送給A服務,A服務遠程調用B服務的檢查登陸狀態的接口,將sessionid傳給接口,B服務接口被調用,使用sessionid到redis查用戶信息,如果查詢到redis有對應的用戶信息,將用戶信息返回,A服務接收到遠程調用接口返回的用戶信息userid,接下來根據用戶信息到數據庫DB查詢積分情況。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這就是兩個微服務配合實現一個業務的例子,用到了架構圖中的全部單元。查詢登陸狀態的要求在各個業務都存在,所以會有很多微服務需要遠程調用B服務的接口。同時每個微服務可以即是提供者,又是消費者。 "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7d/7d632ae25b80d2695c6bc7fd1d745363.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"在windows下配置一套完整的微服務開發環境。 "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"nginx "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"D:\\\\Program Files\\\\nginx-1.8.1>start nginx.exe "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/73/73d05186b046e5fb9f7065c3697c253e.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"成功後瀏覽器如下 "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/39/39bcc8bd19287052f6359b2f5c669f56.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"MySQL "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"D:\\\\Program Files\\\\mysql-8.0.12-winx64\\\\bin>mysqld --console "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c3/c30245914a243ffc67a6f852624e83f7.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"redis "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"D:\\\\Program Files\\\\Redis-x64-3.0.504>redis-server.exe redis.windows.conf "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"圖我忘截了 "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"zookeeper "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雙擊zkServer.cmd "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/be/be0cf85cde959f4e7bdb36f673c4111b.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/15/15c0628b76b9a62b3061c9d225eaa19b.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"tomcat和dubbo-admindubbo-admin "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"需要github上下載,然後單獨對dubbo-admin進行編譯打war包,war包放到tomcat的webapps目錄下,tomcat啓動時會自動解壓出文件夾,如下圖 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ab/ab9bf92df86349e9034f0ef52d97f42d.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"tomcat/bin目錄執行startup.bat  成功後瀏覽器如下 "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/fe/fe41738b381f996c1b3dd88e4d70ab17.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"打開 http://127.0.0.1:8080/dubbo-admin-2.5.8/  (我最初打開頁面卡死,後來刪除tomcat/log裏的全部日誌後正常了) "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶名root 密碼root "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f9/f973cd956d8480bd7e97c0528c955168.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/58/58655785b70da7cb3b7b842743b07f36.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"沒有啓動任何微服務所以上圖各項都是空的。在Intellij IDEA運行兩個微服務(cmd裏java -jar 啓動微服務jar包也可以,但調試修改代碼不太方便) "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到dubbo管理系統可以看見兩個服務,一個是提供者,一個是消費者。裏面可以查看名稱,狀態,日誌,對排錯挺有幫助的。 "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c0/c05c98d7d7f7d0465bbd4eb5020b3118.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/73/733b1118c2b997670df0d00489adef19.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/49/4944a7b08781cbc6d0c3ce744810f30a.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"測試dubug"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"瀏覽器輸入登陸的url可以看到打開登錄頁面。 "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/55/550ae166918c8c9ffeba27cbe9a490d0.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"到此一個微服務系統的開發調試環境就完成了。如果只測試後端服務不關心瀏覽器和app界面的功能,可以使用postman工具,直接發送url給服務端,查看返回的json數據等是否達到預期要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章