公共抽象類(lèi) Commons
DiscoveryClient
服務(wù)發(fā)現(xiàn),如EurekaDiscoveryClient
ServiceRegistry
服務(wù)注冊(cè)收奔,如EurekaServiceRegistry
RestTemplate
HTTP請(qǐng)求院喜,可以通過(guò)setInterceptors添加攔截器對(duì)請(qǐng)求進(jìn)行功能擴(kuò)展场刑,如負(fù)載均衡的實(shí)現(xiàn)
配置中心
Config
- @EnableConfigServer
Nacos
服務(wù)注冊(cè)與發(fā)現(xiàn)
Eureka 參考
- @EnableEurekaServer 啟用服務(wù)端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
#服務(wù)注冊(cè)中心端口號(hào)
server.port=1110
#服務(wù)注冊(cè)中心實(shí)例的主機(jī)名
eureka.instance.hostname=localhost
#是否向服務(wù)注冊(cè)中心注冊(cè)自己
eureka.client.register-with-eureka=false
#是否檢索服務(wù)
eureka.client.fetch-registry=false
#服務(wù)注冊(cè)中心的配置內(nèi)容鳄乏,指定服務(wù)注冊(cè)中心的位置
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
- @EnableEurekaClient 或 @EnableDiscoveryClient 啟用客戶(hù)端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
#服務(wù)注冊(cè)中心的配置內(nèi)容蔽豺,指定服務(wù)注冊(cè)中心的位置
eureka.client.serviceUrl.defaultZone=http://host:port/eureka/
- 啟用賬號(hào)密碼
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
spring.security.user.name=aaaa
spring.security.user.password=123456
- 工作步驟
# server端
服務(wù)注冊(cè)(Register)-> 服務(wù)續(xù)約(Renew)-> 服務(wù)下線(Cancel)-> 服務(wù)剔除(Eviction)
# producer端
服務(wù)注冊(cè)(Register)-> 服務(wù)續(xù)約(Renew)-> 服務(wù)下線(Cancel)
# consumer端
獲取服務(wù)列表(Fetch)-> 更新服務(wù)列表(Update)
Nacos
負(fù)載均衡
Ribbon
- @LoadBalanced
- 均衡restRemplate實(shí)例請(qǐng)求的Rest API
Nginx
LoadBalancer
- 替代Ribbon
容錯(cuò)保護(hù)
Hystrix
- 服務(wù)降級(jí)
- 資源隔離区丑,防止線程長(zhǎng)時(shí)間占用耗盡tomcat的線程
- 服務(wù)熔斷
Sentinel 官網(wǎng)
- 流量控制
服務(wù)調(diào)用
RestTemplate
OpenFeign
- @EnableFeignClients啟用Feign
- @FeignClient創(chuàng)建bean
- @RequestMapping映射Rest API
- 自帶斷路器hystrix
- 自動(dòng)負(fù)載均衡ribbon
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
網(wǎng)關(guān)路由
Zuul
- @EnableZuulProxy
- 配置路由
- 服務(wù)過(guò)濾filter
zuul:
ignoredServices: '*'
host:
connect-timeout-millis: 20000
socket-timeout-millis: 20000
routes:
auth-service:
path: /uaa/**
url: http://auth-service:5000
stripPrefix: false
sensitiveHeaders:
account-service:
path: /accounts/**
serviceId: account-service
stripPrefix: false
sensitiveHeaders:
Gateway
- 替代zuul
健康檢查
Actuator
引入依賴(lài)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
通過(guò)HTTP暴露Actuator endpoints
# 對(duì)外暴露的endpoints,默認(rèn)health,info
management.endpoints.web.exposure.include = *
# 顯示詳細(xì)信息
management.endpoint.health.show-details = always
# 關(guān)閉mongo健康檢查
management.health.mongo.enabled = false
常用接口
# 查看actuator接口
http://xxx.com/config/actuator
# 健康檢查
http://xxx.com/config/actuator/health
# 容器的Bean
http://xxx.com/config/actuator/beans
自定義
@Endpoint 構(gòu)建 rest api 的唯一路徑
@ReadOperation GET請(qǐng)求,響應(yīng)狀態(tài)為 200 如果沒(méi)有返回值響應(yīng) 404
@WriteOperation POST請(qǐng)求沧侥,響應(yīng)狀態(tài)為 200 如果沒(méi)有返回值響應(yīng) 204
@DeleteOperation DELETE請(qǐng)求可霎,響應(yīng)狀態(tài)為 200 如果沒(méi)有返回值響應(yīng) 204
@Selector 獲取路徑上的參數(shù)