Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

spring cloud

xinjia 2019-02-19 10:59:00 阅读数:177 评论数:0 点赞数:0 收藏数:0

1 版本说明

Spring boot 版本: 2.1.3.RELEASE 

Spring Cloud 版本:Greenwich.RELEASE

2 搭建Eureka服务侧

 

pom依赖如下:1 2 4 4.0.0 5 6 org.springframework.boot 7 spring-boot-starter-parent 8 2.1.3.RELEASE 9 10 11 com.linxi.jia 12 eureka-server 13 0.0.1-SNAPSHOT 14 eureka-server 15 eureka-server project for Spring Boot 16 17 18 1.8 19 Greenwich.RELEASE 20 21 22 23 24 org.springframework.cloud 25 spring-cloud-starter-netflix-eureka-server 26 27 28 29 org.springframework.boot 30 spring-boot-starter-test 31 test 32 33 34 35 36 37 38 org.springframework.cloud 39 spring-cloud-dependencies 40 ${spring-cloud.version} 41 pom 42 import 43 44 45 46 47 48 49 50 org.springframework.boot 51 spring-boot-maven-plugin 52 53 54 55 56 57 58 spring-milestones 59 Spring Milestones 60 https://repo.spring.io/milestone 61 62 63 64

 注意:Eureka即是服务端,也是客户端,默认配置是将自己注册到Eureka Server 上,所以在配置客户端信息的时候,也需要配置客户端注册的地址,当然也可以通过配置的形式关闭。

配置文件如下:

Eureka采用高可用部署方式,提供三个节点,三个配置文件只有 Eureka 服务侧的端口信息不一样,其余信息都一样。

修改本地hosts文件,模拟三个不同节点:

application.yml文件:1 spring:2 application:3 name: eureka-server4 logging:5 level:6 root: info7 server:8 port: 87619 eureka:10 client:11 registerWithEureka: false /# 是否自身注册到 Eureka 服务器上面 默认 true12 fetchRegistry: false /#是否从 Eureka Server 获取服务提供的信息,默认 true13 serviceUrl:14 defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/ /# 当前的eureka版本,服务端同时也是户端,所以必须要将客户端注册到服务端上面去15 instance:16 hostname: node117 /# 为注册的 clinet 配置显示的ip值,默认显示的是主机名称18 /#perferIpAddress: true19 /#instance-id: 0.0.0.0:8888

 

启动方式: 在应用启动类添加注解  @EnableEurekaServer

 3 以client搭建生产者

配置文件:1 server:2 port: 87643 spring:4 application:5 name: client-provider6 eureka:7 client:8 registerWithEureka: true9 fetchRegistry: true10 serviceUrl:11 /# 需要注册到的 eureka 服务端信息12 defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/13 instance:14 hostname: node115 /# 为注册的 clinet 配置显示的ip值,默认显示的是主机名称16 /#perferIpAddress: true17 /#instance-id: 0.0.0.0:888818 logging:19 level:20 root: info

启动:在应用启动类上面添加注解:@EnableEurekaClient

注意:上述配置文件中包含两个配置项,spring.application.name 和 eureka.client.instance.hostname

  1. 前者代表当前应用的名称,在消费者进行消费时,是依靠该应用名进行服务消费。比如A应用以n台主机进行部署成集群的方式,如果直接调用ip进行访问,则没有办法实现负载均衡过程。

    2. 后者代表一个Eureka Client实例主机名称,比如点击查看8766实例的详细信息时,跳转的域名就是该配置项的值。

 

跳转截图如下:

 

Eureka页面

下面截图描述的是注册到当前 Eureka Server 上面的 clinet 端。

下面截图描述的是当前client 注册哪些 Eureka Server 上:

完善生产者功能,向服务中心发布一个服务:packagecom.linxi.jia.com.linxi.jia;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.HashMap;importjava.util.Map;//// Created by 156 on 2019/2/19.//@RestController @RequestMapping("/get")public classTController { @Value("${server.port}")privateString port; @GetMapping("/info")public MapgetInfo(){ Map info = new HashMap(); info.put("name","zhangsan"); info.put("age","20"); info.put("port",port);returninfo; } }

4 以client创建消费者

Ribbon是Neflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端行为,为Ribbon配置服务提供列表后,Ribbon就可以基于某种负载均衡算法,自动的帮助服务消费者去请求。

在生产者基础上新增依赖,并创建 RestTemplate 实例 org.springframework.cloud spring-cloud-starter-ribbon

由于客户端本身已经集成,所以无需引入:

 

创建 RestTemplate 实例,同时开启负载均衡。packagecom.linxi.jia.config;importorg.springframework.cloud.client.loadbalancer.LoadBalanced;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.client.RestTemplate;//// Created by 156 on 2019/2/19.//@Configurationpublic classRibbonCfg { @Bean @LoadBalancedpublicRestTemplate restTemplate(){return newRestTemplate(); } }

创建调用实例:

packagecom.linxi.jia;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.client.RestTemplate;importjava.util.Map;//// Created by 156 on 2019/2/19.//@RestController @RequestMapping("/test")public classTController { @AutowiredprivateRestTemplate restTemplate;publicMap getInfo(){//通过 Eureka 服务端的 应用名称调用,无需考考虑端口和ip return restTemplate.getForObject("http://CLIENT-PROVIDER/get/info",Map.class); } }

修改配置文件,添加启动注解。

消费:http://localhost:8768/test/get

分别消费多次,观察负载均衡情况。

 

小样

 

版权声明
本文为[xinjia]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/nevegiveup/p/10399737.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;

支付宝红包,每日可领