您好,欢迎访问这里是深圳市硕远科技有限公司!
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
联系我们
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
邮箱:2324898850@qq.com
电话:400-080-6079
地址:深圳市龙华区河背工业区108创业园A301
当前位置:主页 > 新闻动态 > 行业新闻 >

行业新闻

spring-cloud服务注册中心和负载均衡的简单使用教

发布时间:2021-08-13 18:01:34浏览次数:

本文介绍了eureka和ribbon,feign的简单使用教程。


一、配置服务注册中心:

1、Eureka是Netflix开发的服务注册中心,使用eureka作为服务发现中心,需要单独启动一个spring boot服务作为服务发现中心,该服务需要引入eureka的服务端依赖:

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

</dependency>

2、然后在spring boot的启动类上面加上注解@EnableEurekaServer;

3、最后在配置文件Application.yml中配置eureka

eureka:

instance:

hostname: localhost #实例的主机名称

client:

registerWithEureka: false #本身就是服务器,所以无需注册到服务器

fetchRegistry: false #无需获取服务器的注册信息

serviceUrl:

defaultZone: http://${eureka.instance.hostname}:server.port/eureka/ #指定服务注册中心地址

spring:

application:

name: eureka-server

二、使用服务发现客户端注册微服务

1、引入服务发现中心客户端依赖

<dependency>

<groupId>org.springframework.cloud</goupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</aritfactId>

</dependency>

2、在spring boot的启动类上面加上注解@EnableEurekaClient

3、配置文件中配置服务名和服务发现中心的地址

spring:

application:

name: product-data-service

eureka:

client:

serviceUrl:

defaultZone:
http://localhost:8761/eureka/ #对应服务发现中心中的配置

三、使用客户端负载均衡调用服务实例

springcloud提供了两种方式访问服务实例:一种是Ribbon,另一种是Feign;Ribbon使用RestTemplate调用,并进行客户端负载均衡。Feign是对Ribbon的封装。

(1)、Ribbon实现负载均衡调用微服务

1、需要在启动类上增加一个@EnableDiscoveryClient,表示启动服务发现客户端,该注解用于从服务发现中心发现服务,而@EnableEurekaClient表示将该服务注册到服务发现中心

2、可以直接使用Ribbon提供的LoadBalancerClinet实现负载均衡获得一个可用的服务实例,或者在注入RestTemplate类的时候使用@LoadBalanced注解开启负载均衡。

①@Autowired LoadBalancerClient loadBalancerClient;

ServiceInstance serviceInstance =ladBalancerClient.choose("服务实例名");

String uri = serviceInstance.getUri().toString;

restTemplate.getForObject(uri+"/...",String.class);

②:

@Bean

@LoadBalanced

public RestTemplate getRestTemplate(){

return new RestTemplate;

}

(2)、Feign实现负载均衡调用微服务

1、使用引入openfeign依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2、启动类上添加@EnableFeignClients

3、创建FeignClient

@FeignClient(value="注册到服务发现中心的服务名")

public interface ProductClientFeign{

@GetMapping("/products")

public List<Product> listProducts();

}

4、Feign使用动态代理的方式创建相应接口的实现类并注入到spring容器中,所以使用的时候只需要自动注入,然后调用接口方法就可以了。

@Autowired

ProductClientFeign productClientFeign;

List<Product> products = productClientFeign.listProducts();

400-080-6079