微服务-springCloud快速实践1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yhhyhhyhhyhh/article/details/83475390

微服务-springCloud快速实践1:springCloud机制测试

完整代码下载链接:

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仓库地址
[email protected]: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上的配置信息
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yhhyhhyhhyhh/article/details/83475390