【Spring Cloud】实战项目搭建
2020-12-13 15:31
标签:注册服务 调用本地 默认 实现 str boot adb 通过 查询 创建maven项目,删除其中的src目录,作为整体父项目,在其中添加module实现各个组件。 添加module,创建Spring Boot项目,添加Eureka Discovery Client和Eureka Server依赖,作为Eureka Server。 启动类添加@EnableEurekaServer注释。 修改配置文件application.yml,如下: 启动项目,即可访问http://localhost:1001/查看eurekaServer管理中心。 添加module,创建Spring Boot项目,添加Eureka Discovery Client和Eureka Server依赖。 启动类添加@EnableEurekaClient注释(也可用@EnableDiscoveryClient取代,效果相同,前者对应Eureka,后者适用多种注册中心)以及@ComponentScan注释。 修改配置文件application.yml,如下: 配置完成后启动项目,可在eureka管理中心看到注册的服务。 项目中新建service和controller包,controller包中HelloController负责接受请求,并路由到service包中的具体实现,controller中仅注入service对象,然后根据请求路径调用响应的service实现,service中负责具体的实现。 同理,按上面步骤增加第二个Service节点,注册名为Service2,注册在8002端口。 Sping Cloud由两种消费方式,rest+ribbon和feign两种。 添加module,创建Spring Boot项目,添加Eureka Discovery Client、Eureka Server和Ribbon依赖。 启动类添加@EnableDiscoveryClient和@ComponentScan注释。 修改配置文件application.yml,注册在8003端口上的Service3服务。 service包和controller包同上。 Service3调用Service1和Service2: 启动类中注入RestTemplate对象,添加@LoadBalance、@Bean和@Autowired注释,开启负载均衡。 改造service包中的具体实现: 自动注入(@Autowired)RestTemplate对象,restTemplate.getForObject("http://${注册应用名}/${请求路径}?参数列表",String.class)。 实现远程调用,通过注册应用名自动负载均衡。 添加module,创建Spring Boot项目,添加Eureka Discovery Client、Eureka Server和Feign依赖。 启动类添加@EnableDiscoveryClient和@ComponentScan注释。 修改配置文件application.yml,注册在8004端口上的Service4服务。 service包和controller包同上。 Service4调用Service1和Service2: 新增feignRPC包,其中定义两个接口,分别对应两个应用Service1和Service2的调用。 service1_feign接口为: 改造service包中的具体实现: 自动注入(@Autowired)service1_feign接口,像调用本地方法那样调用接口的方法即可实现远程调用。 Feign集成了Ribbon,通过注册应用名自动负载均衡。 创建module,普通的service节点,注册在8005端口,应用名为Service1。 在eureka server管理界面可以看到Service1有两个服务提供者提供同名应用。 通过Service3或者Service4调用应用名为Service1的服务。 由于Ribbon默认的负载均衡策略为轮询,通过刷新界面,可以看到一次调用module1和module5提供的服务。 创建module,添加Eureka Discovery Client、Eureka Server和Zuul依赖。 启动类添加@EnableZuulProxy注释。 修改配置文件application.yml,注册在6001端口上,注册应用名为zuul。 启动项目后,可以通过网关访问服务: 直接http://localhost:8001/hello?name=world可以访问Service1; 通过网关转发,http://localhost:6001/Service1/hello?name=world访问Service1应用,Zuul默认实现了按应用名负载均衡。 在application.yml配置文件中配置: 启动项目后,访问http://localhost:8001/hello?name=world失败,网关禁止直接调用后台服务Service1。 通过网关访问http://localhost:6001/api/service_1_zuul/hello?name=world,可以轮询调用Service1和Service5。 【Spring Cloud】实战项目搭建 标签:注册服务 调用本地 默认 实现 str boot adb 通过 查询 原文地址:https://www.cnblogs.com/iUtopia/p/11577916.html0、项目搭建
1、Eureka Server的实现
1 server:
2 port: 1001
3
4 eureka:
5 client:
6 //是否将自己注册到eureka server上,默认为true
7 //由于本节点为eureka server,设为false
8 registerWithEureka: false
9 //是否从eureka server获取注册信息,默认为true
10 //由于为单点的eureka server,不需要同步信息,设为false
11 fetchRegistry: false
12 //设置与eureka server交互的地址,查询和注册服务都经过这个地址
13 serviceUrl:
14 defaultZone: http://localhost:${server.port}/eureka/
2、Service节点
1 spring:
2 //服务名称
3 application:
4 name: Service112
13 server:
14 port: 8001
15
16 //在服务中心进行注册
17 eureka:
18 client:
19 serviceUrl:
20 defaultZone: http://localhost:8801/eureka/
3、服务调用
3.1、rest+ribbon调用(通过RestTemplate构造URL调用)
3.2、feign调用(通过动态代理的接口来实现接口调用,在接口中实现远程调用)
1 @FeignClients(value = "Service1") //通过应用注册名来调用服务
2 public interface service1_feign() {
3 @RequestMapping(value = "/${请求路径}", method = RequestMethod.GET)
4 public String getHello(@RequestParam("service1中参数名") 具体参数);
5 }
4、体验负载均衡机制
5、网关Zuul的搭建
5.1、体验网关的请求转发功能
5.2、网关的自定义路由
1 zuul:
2 //前缀,请求路径前必须加
3 prefix: /api
4 //自定义路由
5 routes:
6 Service1: /service_1_zuul/**
7 //禁止直接访问后台服务
8 ignored-services: Service1
6、Eureka Server集群
7、熔断降级功能
文章标题:【Spring Cloud】实战项目搭建
文章链接:http://soscw.com/index.php/essay/35201.html