背景:在分佈式架構中,有時候一個服務的併發量達到上限,怎麼辦呢?以前傳統的更多的是增加服務器用Nginx轉發來實現,因此呢spring出了一個組件叫做gateway,它和zuul是大同小異,這裏就不介紹區別了,接下來我們進入主題。
一.老規矩新建一個module是maven格式的。
引入jar
jar版本
<properties> <lcn.version>5.0.2.RELEASE</lcn.version> <config.version>2.1.1.RELEASE</config.version> <jdbc.version>5.2.2.RELEASE</jdbc.version> <mysql.version>5.1.6</mysql.version> <eureka.version>2.1.1.RELEASE</eureka.version> <gateway.version>2.1.5.RELEASE</gateway.version> <hystrix.version>2.1.5.RELEASE</hystrix.version> <redis.version>2.1.9.RELEASE</redis.version> </properties>
<dependencies> <!-- config start --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> <version>${config.version}</version> </dependency> <!--config end--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>${eureka.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>${gateway.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>${hystrix.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> <version>${redis.version}</version> </dependency>
<!--這裏是爲了剔除tomcat包,不然會報啓動錯誤--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
二.配置文件如上一篇文章所寫
spring: application: name: serviceConfig profiles: active: git cloud: config: label: master #這裏我的gateway配置文件命名爲gateway-master profile: gateway-master uri: http://localhost:9527/serviceConfig discovery: enabled: true service-id: fool-cloud-config eureka: instance: prefer-ip-address: true client: serviceUrl: defaultZone: http://admin:[email protected]:9526/eureka/eureka enabled: true 三.遠程文件放到前面文章所寫的github地址裏面內容如下
server:
#端口號
port: 8105
##數據庫連接信息
spring:
# profiles:
# active: dev
cloud:
gateway:
discovery:
locator:
enabled: true
# 服務名小寫
lower-case-service-id: true
routes:
# =====================================
- id: SERVICEBASIC
# lb代表從註冊中心獲取服務,且已負載均衡方式轉發
#遇到下面斷言轉發到什麼服務
uri: lb://FOOL-CLOUD-EXAMPLE
predicates:
#斷言轉發碰到什麼路徑開始轉發
- Path=/example/**
filters:
- StripPrefix=0
#====================================
application:
name: inter-hsp-gateway
redis:
host: 10.10.10.242
#redis端口號
port: 6379
#redis 密碼
password:
eureka:
instance:
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://admin:[email protected]:9526/eureka/eureka/
enabled: true
# 暴露監控端點
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
logging:
level:
org:
springframework:
cloud:
gateway: debug
四.新建啓動類只需要兩個註解
@SpringBootApplication @EnableDiscoveryClient
五.啓動主類,見到gateway的配置文件端口即成功。下一篇文章我們將講解gateway的轉發知識點
更多技術交流請加入QQ羣:260292706
Owen