1. cloud模塊劃分
eureka:8751 註冊中心
auth:8753
config:8757 配置中心
gateway:8752 網關路由
system:8754
usercenter:8761
workflow:8762
2.eureka 註冊中心
server端
eureka:
instance:
hostname: localhost # eureka 實例名稱
client:
register-with-eureka: false # 不向註冊中心註冊自己
fetch-registry: false # 是否檢索服務
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ # 註冊中心訪問地址
client端
eureka:
instance:
instance-id: user-api-8081
prefer-ip-address: true # 訪問路徑可以顯示 IP
client:
service-url:
defaultZone: http://localhost:9000/eureka/ # 註冊中心訪問地址
在啓動類上添加 @EnableEurekaClient 註解。
3.config 配置中心
server端(config)
1>config配置中心
1.1配置文件
spring:
profiles:
active: jdbc #讀取的配置文件名,從數據庫中讀取,必須爲jdbc
cloud:
config:
label: master #讀取的配置的分支,與數據庫中數據對應
server:
jdbc: true
spring.cloud.config.server.jdbc.sql: SELECT prop_key, prop_value from config_properties where APPLICATION=? and PROFILE=? and LABEL =? #查詢數據庫的sql語句,該語句的字段必須與數據庫的表字段一致。
2>啓動文件xxApplication加上@EnableConfigServer註解,開啓ConfigServer的功能
3>初始化數據庫 字段必須對應
id key value application profile label
存儲的是 配置 的鍵值對
引入配置中心 服務啓動時會到數據庫讀取配置 加載到yml文件
ps:
1.配置的訪問路徑
http://192.168.199.82:8757/configProperties/view/list
2.數據庫表
config_properties
client端
1>配置文件
bootstrap.yml 優先級最高
spring:
cloud:
config:
uri: http://192.168.199.82:8757 #配置的config-server的地址
fail-fast: true #讀取配置失敗後,執行快速失敗
name: contract
profile: dev
discovery:
enabled: true
service-id: config
profiles:
active: data #讀取本地配置文件application-data.yml或application-data.properties
4.權限驗證
4.1 gateWay
AccessFilter -->全局過濾器,用於需要經過網關的請求是否需要登錄
4.1.1 驗證權限白名單
#地址白名單,不需要登錄就能訪問的地址
auth:
urlWhiteList:
-->轉至auth進行驗證
-->驗證通過 發至路由服務
4.2 auth
權限驗證
4.2.1 redis 判斷該路徑是否存在
1>存在則redis取路徑的角色信息 和當前用戶擁有的角色進行對比
2>不存在則 查詢該路徑所分配的角色放置redis 和當前用戶擁有的角色進行對比
4.2.2 角色資源add -->刷新redis緩存url_role_
4.3 路由服務
路由服務器的攔截過濾
5.gateway 網關路由
5.1 網關配置
# 網關路由配置
gateway:
discovery:
locator:
enabled: false
lowerCaseServiceId: true
defaultFilters:
- PreserveHostHeader
routes: #引入配置中心
# 測試模塊1
#- id: luokf-cloud-module-test1
# uri: lb://luokf-cloud-module-test1
# predicates:
# - Path=/demo/**
5.2 AccessFilter 的filter 實現GatewayFilterChain 進行路由轉發
6.Feign使用
微服務和微服務之間如何互相調用