-
服務發現中心(Service Discovery):服務註冊與發現元件(選用Erueka)
-
監控面板(Monitor Dashboard):整合了熔斷監控(選用Hystrix)、服務呼叫鏈路監控(選用Spring Cloud Sleuth)
-
日誌分析面板(Logging Analyses):基於efk構建的日誌採集系統
服務閘道器(Edge Server):服務閘道器元件(Zuul & Spring Cloud Security)
-
OAuth認證伺服器(OAuth Authorization Server):授權認證模組(Spring Cloud security OAuth2)
-
配置伺服器(Configuration Server):配置中心(Spring Cloud Config & Spring Cloud Bus)
-
首先企業透過申請賬號、密碼和需要呼叫的API
-
平臺針對申請企業建立可呼叫API的賬號和密碼,並將該企業呼叫端IP加入服務白名單,使用者可在平臺下載檔案、SDK,併進行測試
-
企業根據使用者名稱、密碼去獲取token,併在請求essay-header中加入申請的token呼叫介面
-
研發完成本地開發和測試提交程式碼
-
程式碼連同Dockerfile等構建檔案一起push到GitLab(可以自己搭建)
-
程式碼提交觸發Jenkins自動構建
-
Jenkins呼叫單元測試、程式碼檢查等測試任務,如果測試透過自動構建Docker映象
-
Jenkins將構建好的映象推送到私有映象倉庫(自己搭建Harbor映象庫)
-
Jenkins呼叫容器管理平臺(我們使用的Rancher)的介面進行升級
-
容器管理平臺拉取映象完成部署(測試環境or生產環境)
-
Docker提供一個簡單、輕量的建模方式
-
Docker使團隊職責的邏輯分離
-
可以實現快速高效的開發生命週期
-
團隊使用面向服務的架構
FROM harbor.jry.com/library/alpine-jdk-time:slim
ADD *.jar service.jar
COPY formFile /
ENTRYPOINT [ "sh", "-c", "java -jar service.jar" ]
3、模組配置
-
打包
-
構建
version: '2'
services:
zipkin:
image: harbor.jry.com/zipkin:v1.0.1
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery2:discovery
volumes:
- /data/log:/target/log
ports:
- 9411:9411/tcp
service-config:
image: harbor.jry.com/service-config:v1.0.1
hostname: config
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery2:discovery
volumes:
- /data/log:/target/log
ports:
- 8889:8889/tcp
service-monitor:
image: harbor.jry.com/service-monitor:v1.0.1
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery1:discovery
volumes:
- /data/log:/target/log
discovery2:
image: harbor.jry.com/service-discovery
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery1:discovery
volumes:
- /data/log:/target/log
ports:
- 8762:8761/tcp
discovery1:
image: harbor.jry.com/service-discovery:v1.0.1
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery2:discovery
volumes:
- /data/log:/target/log
daas-monitor:
image: harbor.jry.com/daas-monitor:v1.0.1
environment:
eureka.client.service-url.defaultZone: http://discovery:8761/eureka/
stdin_open: true
tty: true
links:
- discovery1:discovery
volumes:
- /data/log:/target/log
ports:
- 9080:9080/tcp
proxy-server:
image: harbor.jry.com/service-proxy:v1.0.1
environment:
eureka.client.serviceUrl.defaultZone: http://discovery:8761/eureka/
stdin_open: true
links:
- discovery1:discovery
tty: true
links:
- oauth2-server:oauth
volumes:
- /data/log:/target/log
ports:
- 8111:8443/tcp
oauth2-server:
image: harbor.jry.com/oauth2-cg:v1.0.1
environment:
eureka.client.serviceUrl.defaultZone: http://discovery:8761/eureka/
stdin_open: true
links:
- discovery2:discovery
volumes:
- /data/log:/target/log
tty: true
ports:
- 9999:9999/tcp
-
Zipkin:服務呼叫鏈路監控
-
service-config:配置中心服務
-
service-monitor:斷路監控服務
-
discovery1, discovery2:高可用的服務發現中心
-
daas-monitor:自研的監控面板,整合其他監控服務
-
proxy-server:服務閘道器
-
oauth2-server:OAuth認證伺服器
-
雖然使用的配置檔案,但維護起來還是很麻煩,所以建議使用編排工具,一般會提供部分DevOps工具集。
-
上述各服務模組可以根據實際情況啟動多個相同容器,以保證高可用。
-
以上各服務模組做了磁碟對映,主要為採集日誌,這裡我們使用的EFK,時間關係暫不展開。