天天看點

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

本項目是一個基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等架構建構的微服務項目。

技術棧

  • Spring boot - 微服務的入門級微架構,用來簡化 Spring 應用的初始搭建以及開發過程。
  • Eureka - 雲端服務發現,一個基于 REST 的服務,用于定位服務,以實作雲端中間層服務發現和故障轉移。
  • Spring Cloud Config - 配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理叢集配置,目前支援本地存儲、Git 以及 Subversion。
  • Hystrix - 熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,進而對延遲和故障提供更強大的容錯能力。
  • Zuul - Zuul 是在雲平台上提供動态路由,監控,彈性,安全等邊緣服務的架構。Zuul 相當于是裝置和 Netflix 流應用的 Web 網站後端所有請求的前門。
  • Spring Cloud Bus - 事件、消息總線,用于在叢集(例如,配置變化事件)中傳播狀态變化,可與 Spring Cloud Config 聯合實作熱部署。
  • Spring Cloud Sleuth - 日志收集工具包,封裝了 Dapper 和 log-based 追蹤以及 Zipkin 和 HTrace 操作,為 SpringCloud 應用實作了一種分布式追蹤解決方案。
  • Ribbon - 提供雲端負載均衡,有多種負載均衡政策可供選擇,可配合服務發現和斷路器使用。
  • Turbine - Turbine 是聚合伺服器發送事件流資料的一個工具,用來監控叢集下 hystrix 的 metrics 情況。
  • Spring Cloud Stream - Spring 資料流操作開發包,封裝了與 Redis、Rabbit、Kafka 等發送接收消息。
  • Feign - Feign 是一種聲明式、模闆化的 HTTP 用戶端。
  • Spring Cloud OAuth2 - 基于 Spring Security 和 OAuth2 的安全工具包,為你的應用程式添加安全控制。

應用架構

該項目包含 8 個服務

  • registry - 服務注冊與發現
  • config - 外部配置
  • monitor - 監控
  • zipkin - 分布式跟蹤
  • gateway - 代理所有微服務的接口網關
  • auth-service - OAuth2 認證服務
  • svca-service - 業務服務A
  • svcb-service - 業務服務B

體系架構

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

應用元件

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

啟動項目

  • 使用 Docker 快速啟動
    1. 配置 Docker 環境
    2. mvn clean package

       打包項目及 Docker 鏡像
    3. 在項目根目錄下執行 

      docker-compose up -d

       啟動所有項目
  • 本地手動啟動
    1. 配置 rabbitmq
    2. 修改 hosts 将主機名指向到本地 

      127.0.0.1 registry config monitor rabbitmq auth-service

      或者修改各服務配置檔案中的相應主機名為本地 ip
    3. 啟動 registry、config、monitor、zipkin
    4. 啟動 gateway、auth-service、svca-service、svcb-service

項目預覽

注冊中心

通路 http://localhost:8761/ 預設賬号 user,密碼 password

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

監控

通路 http://localhost:8040/ 預設賬号 admin,密碼 admin

控制台

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

應用注冊曆史

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

Turbine Hystrix面闆

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

應用資訊、健康狀況、垃圾回收等詳情

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

計數器

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

檢視和修改環境變量

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

管理 Logback 日志級别

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

檢視并使用 JMX

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

檢視線程

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

認證曆史

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

檢視 Http 請求軌迹

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

Hystrix 面闆

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

鍊路跟蹤

通路 http://localhost:9411/ 預設賬号 admin,密碼 admin

控制台

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

鍊路跟蹤明細

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

服務依賴關系

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

RabbitMQ 監控

Docker 啟動通路 http://localhost:15673/ 預設賬号 guest,密碼 guest(本地 rabbit 管理系統預設端口15672)

基于 Spring Cloud 完整的微服務架構實戰技術棧應用架構啟動項目項目預覽接口測試

接口測試

  1. 擷取 Token
curl -X POST -vu client:secret http://localhost:8060/uaa/oauth/token -H "Accept: application/json" -d "password=password&username=anil&grant_type=password&scope=read%20write"           

傳回如下格式資料:

{
  "access_token": "eac56504-c4f0-4706-b72e-3dc3acdf45e9",
  "token_type": "bearer",
  "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
  "expires_in": 3599,
  "scope": "read write"
}           
  1. 使用 access token 通路 service a 接口
curl -i -H "Authorization: Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9" http://localhost:8060/svca           

傳回如下資料:

svca-service (172.18.0.8:8080)===>name:zhangxd
svcb-service (172.18.0.2:8070)===>Say Hello           
  1. 使用 access token 通路 service b 接口
curl -i -H "Authorization: Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9" http://localhost:8060/svcb           

傳回如下資料:

svcb-service (172.18.0.2:8070)===>Say Hello           
  1. 使用 refresh token 重新整理 token
curl -X POST -vu client:secret http://localhost:8060/uaa/oauth/token -H "Accept: application/json" -d "grant_type=refresh_token&refresh_token=da1007dc-683c-4309-965d-370b15aa4aeb"           

傳回更新後的 Token:

{
  "access_token": "63ff57ce-f140-482e-ba7e-b6f29df35c88",
  "token_type": "bearer",
  "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
  "expires_in": 3599,
  "scope": "read write"
}           
  1. 重新整理配置
curl -X POST -vu user:password http://localhost:8888/bus/refresh           

源碼下載下傳

https://github.com/souyunku/spring-boot-cloud.git

繼續閱讀