微服务-springCloud快速实践1
微服务-springCloud快速实践1:springCloud机制测试
文章目录
- 微服务-springCloud快速实践1:springCloud机制测试
- 1.springCloud配置
- 2.注册中心
- 3.服务调用和负载均衡
- 3.1ribbon
- 3.2fegin
- 4.zuul网关
- 5.服务降级:hystrix断路器
- 6.配置中心
完整代码下载链接:
https://github.com/2010yhh/springCloud-demos.git
环境
idea2018,jdk1.8,
springboot版本:springboot2.0.3.RELEASE,
springcloud版本:Finchley.SR1(2.0.1.RELEASE,)
1.springCloud配置
demo工程:
工程说明:
1.cloud-eureka:发现、注册服务
2.cloud-service:提供服务
3.cloud-ribbon;客户端
4.cloud-fegin:客户端,Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法
5.cloud-zuul:zuul网关
6.cloud-config-server:配置中心服务端(git为例)
7.cloud-config-client:获取配置的接口
springCloud配置:
1.1.首先是pom,只需引入相应版本的springCloud即可
1.2.各个工程的配置详见代码中application.properties配置,
测试说明:1个Eureka注册中心,2个服务进程,(这里以不同的端口启动2个cloud-service的进程),1个ribbon客户端,1个fegin客户端,1个zull网关进程,1个配置服务进程,1个配置测试客户端进程,见下图。
访问Eureka注册中心:http://localhost:8761/
2.注册中心
cloud-eureka的配置,以下测试,Eureka注册中心使用单Eureka:
spring.application.name=eureka-server
eureka.instance.prefer-ip-address=true
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#单个eureka
server.port=8761
eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka/
#Eureka Server集群:注册其他Eureka Server,以逗号分隔,这里以不同的端口号区分进行测试
#server.port=8762
#eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#server.port=8761
#eureka.client.service-url.defaultZone=http://localhost:8762/eureka/
3.服务调用和负载均衡
3.1ribbon
访问:http://localhost:8764/test?name=zyq
测试结果:会分发到不同的服务上(下图中服务端口不同,代表不同的服务进程)
3.2fegin
访问:http://localhost:8765/test?name=zyq
测试结果:会分发到不同的服务上(下图中服务端口不同,代表不同的服务进程)
4.zuul网关
cloud-zuul的application.properties:
spring.application.name=cloud-zuul
server.port=8766
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
###url路由转发,/api-a/下的请求都转发到服务id为cloud-ribbon的服务下对应的接口
zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=cloud-ribbon
###url路由转发,/api-a/下的请求都转发到服务idcloud-ribbon下对应的请求
zuul.routes.api-b.path=/api-b/**
zuul.routes.api-b.serviceId=cloud-feign
#zuul限流配置
zuul.ratelimit.repository=in_memory
zuul.ratelimit.enabled=true
zuul.ratelimit.behind-proxy=true
zuul.ratelimit.key-prefix=cloud-zuul
#zuul.ratelimit.default-policy.limit=3
#zuul.ratelimit.default-policy.refresh-interval=60
#zuul.ratelimit.default-policy.type=URL
zuul.ratelimit.policies.api-a.limit=3
zuul.ratelimit.policies.api-a.quota=20
zuul.ratelimit.policies.api-a.refreshInterval=60
zuul.ratelimit.policies.api-a.type=URL
zuul.ratelimit.policies.api-b.limit=6
zuul.ratelimit.policies.api-b.quota=20
zuul.ratelimit.policies.api-b.refreshInterval=60
zuul.ratelimit.policies.api-b.type=URL
这里以简单的密码过滤进行测试;
1.访问:http://localhost:8766/api-a/test?name=zyq
2.访问:http://localhost:8766/api-a/test?name=zyq&token=123456
3.访问:http://localhost:8766/api-b/test?name=zyq
4.访问:http://localhost:8766/api-b/test?name=zyq&token=123456
5.多次访问:http://localhost:8766/api-b/test?name=zyq&token=123456
结果说明:
1.###url路由转发,/api-a/下的请求都转发到服务id为cloud-ribbon的服务下对应的接口
2.###url路由转发,/api-a/下的请求都转发到服务idcloud-ribbon下对应的请求
3.token校验通过的才进行转发,校验不通过的返回异常信息。
4.zuul限流次数,达到设置的限流次数时,会触发限流措施,抛出访问过多的异常
5.zuul网关转发仍然会进行负载均衡
6.Zuul 目前只支持服务级别的熔断,不支持具体到某个接口进行熔断
5.服务降级:hystrix断路器
5.1.停掉1个cloud-service进程
请求会始终落在另一个服务上
5.2.停掉2个cloud-service进程
1)ribbon
访问:cloud-ribbon中的接口:http://localhost:8764/test?name=zyq
test接口进行了服务降级
http://localhost:8764/test2?name=zyq
test2接口没有进行服务降级,直接抛出了异常信息
2)feign
访问:cloud-feign中的接口:http://localhost:8765/test?name=zyq
3)服务降级,zuul
服务不可用时,zuul直接返回了服务级别的信息,而不是接口中的熔断机制
在这里插入图片描述
6.配置中心
需要创建git仓库,上传配置文件,如下图所示
config-server的application.properties配置
server.port=8770
spring.application.name=config-server
# 配置git仓库地址
spring.cloud.config.server.git.uri=git@github.com:2010yhh/springCloud-demos.git
# git仓库地址下的相对路径,可以配置多个,用,分割
spring.cloud.config.server.git.search-paths=/
# 配置仓库的分支
spring.cloud.config.label=master
# 访问git仓库的用户名
spring.cloud.config.server.git.username=****
# 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
spring.cloud.config.server.git.password=****
#配置服务注册中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
config-client的bootstrap.properties配置
#对应git上的配置文件:config-dev.properties
spring.application.name=config
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:8770
6.1直接访问server
6.2从config-server获取git上的配置信息
还没有评论,来说两句吧...