微服务-springCloud快速实践1

悠悠 2022-05-14 15:50 337阅读 0赞

微服务-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. 1.cloud-eureka:发现、注册服务
  2. 2.cloud-service:提供服务
  3. 3.cloud-ribbon;客户端
  4. 4.cloud-fegin:客户端,Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法
  5. 5.cloud-zuulzuul网关
  6. 6.cloud-config-server:配置中心服务端(git为例)
  7. 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:

  1. spring.application.name=eureka-server
  2. eureka.instance.prefer-ip-address=true
  3. eureka.client.register-with-eureka=false
  4. eureka.client.fetch-registry=false
  5. #单个eureka
  6. server.port=8761
  7. eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka/
  8. #Eureka Server集群:注册其他Eureka Server,以逗号分隔,这里以不同的端口号区分进行测试
  9. #server.port=8762
  10. #eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
  11. #server.port=8761
  12. #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:

  1. spring.application.name=cloud-zuul
  2. server.port=8766
  3. eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
  4. ###url路由转发,/api-a/下的请求都转发到服务id为cloud-ribbon的服务下对应的接口
  5. zuul.routes.api-a.path=/api-a/**
  6. zuul.routes.api-a.serviceId=cloud-ribbon
  7. ###url路由转发,/api-a/下的请求都转发到服务idcloud-ribbon下对应的请求
  8. zuul.routes.api-b.path=/api-b/**
  9. zuul.routes.api-b.serviceId=cloud-feign
  10. #zuul限流配置
  11. zuul.ratelimit.repository=in_memory
  12. zuul.ratelimit.enabled=true
  13. zuul.ratelimit.behind-proxy=true
  14. zuul.ratelimit.key-prefix=cloud-zuul
  15. #zuul.ratelimit.default-policy.limit=3
  16. #zuul.ratelimit.default-policy.refresh-interval=60
  17. #zuul.ratelimit.default-policy.type=URL
  18. zuul.ratelimit.policies.api-a.limit=3
  19. zuul.ratelimit.policies.api-a.quota=20
  20. zuul.ratelimit.policies.api-a.refreshInterval=60
  21. zuul.ratelimit.policies.api-a.type=URL
  22. zuul.ratelimit.policies.api-b.limit=6
  23. zuul.ratelimit.policies.api-b.quota=20
  24. zuul.ratelimit.policies.api-b.refreshInterval=60
  25. zuul.ratelimit.policies.api-b.type=URL

这里以简单的密码过滤进行测试;

1.访问:http://localhost:8766/api-a/test?name=zyq

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3loaHloaHloaHloaA_size_27_color_FFFFFF_t_70 8

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配置

  1. server.port=8770
  2. spring.application.name=config-server
  3. # 配置git仓库地址
  4. spring.cloud.config.server.git.uri=git@github.com:2010yhh/springCloud-demos.git
  5. # git仓库地址下的相对路径,可以配置多个,用,分割
  6. spring.cloud.config.server.git.search-paths=/
  7. # 配置仓库的分支
  8. spring.cloud.config.label=master
  9. # 访问git仓库的用户名
  10. spring.cloud.config.server.git.username=****
  11. # 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
  12. spring.cloud.config.server.git.password=****
  13. #配置服务注册中心
  14. eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

config-client的bootstrap.properties配置

  1. #对应git上的配置文件:config-dev.properties
  2. spring.application.name=config
  3. spring.cloud.config.label=master
  4. spring.cloud.config.profile=dev
  5. spring.cloud.config.uri=http://localhost:8770

6.1直接访问server

在这里插入图片描述

在这里插入图片描述
6.2从config-server获取git上的配置信息
在这里插入图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,337人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringCloud 服务最佳开发实践

    现在基于SpringCloud的微服务开发日益流行,网上各种开源项目层出不穷。我们在实际工作中可以参考开源项目实现很多开箱即用的功能,但是必须要遵守一定的约定和规范。 本文结