Spring Cloud基础教程
一个简单例子
Discover Server
EurekaApplication
@EnableEurekaServer
bootstrap.yml
server.port
8761
自己的监听端口
Config Server
ConfigServerApplication
@EnableConfigServer
@EnableDiscoveryClient
把自己注册到discovery服务器
bootstrap.yml
git.uri
放各种配置文件的git库
eureka.client.serviceUrl
http://localhost:8761/eureka
spring.application.name: configserver
我怀疑这个名字是约定的,如果换了其他名字可能discovery就不能自动识别为config源了,其他服务可能就会找不到这里了
server.port
8888
自己的监听端口
这个端口是默认的,Config Client会自动寻找这个端口
Zuul Gateway
GatewayApplication
@EnableDiscoveryClient
把自己注册到discovery服务器
@EnableZuulProxy
对API请求进行路由转发
@EnableWebSecurity
没有这个就没有安全,session也不会有
@EnableRedisHttpSession
用 Spring Session Redis
替换 Apache Tomcat HttpSession
bootstrap.yml
eureka.client.serviceUrl
http://localhost:8761/eureka
server.port
8080
自己的监听端口
zuul-gateway.yml
(在git库里)
spring.session.store-type: redis
localhost:6379 默认的redis位置
zuul.routes
order-management-ms: /order-management/**
sensitiveHeaders
Authorization, Set-Cookie
Cookie没有放这里,是为了让sessionId可以透传给其他service
security.user:
name: gateway
password: password
Order Management Microservice
RestApplication
@EnableDiscoveryClient
把自己注册到discovery服务器
@EnableWebSecurity
@EnableRedisHttpSession
@RestController
bootstrap.yml
eureka.client.serviceUrl
http://localhost:8761/eureka
server.port
8081
自己的监听端口
order-management-ms.yml
(在git库里)
spring:session:
store-type: redis
security.user:
name: ms
password: password
总结:
1. 以Discovery服务为中心;
所有的其他服务在bootstrap.yml文件里都要设置discovery的uri地址,就是说要能找到这个中心老大;
2. config配置服务也要注册到Discover服务,然后其他服务是通过discovery服务来知道config配置服务的
有点疑问:似乎里面的怎么找到是根据约定?
因为没发现其他服务有设置用哪个config service 的地方
3. API网关也注册到discoery服务,对外的话,API网关统一提供8080访问端口,具体各个后台服务是通过配置的路由转发来找到的;