Spring Cloud 之服务注册&发现

包括服务注册中心,服务提供方(注册服务),服务使用方(调用服务)

注册中心:

1. 使用spring-cloud-starter-eureka-server,主类中使用@EnableEurekaServer,开启服务注册功能,增加服务注册中心

2. 配置yml

server.port=10001

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

3. 启动注册中心工程后,访问:http://localhost:10001/  可通过spring自带的管理器查看注册中心的服务注册信息。

服务注册:

1. 各个服务提供方使用spring-cloud-starter-eureka,主类中使用@EnableEurekaClient,注册到中心。

2. 配置yml

spring.application.name=provider-service

server.port=18443

eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/

说明:

spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。

eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。

3. 启动该工程后,再次访问:http://localhost:10001/  可看到compute-service已注册到中心。

服务调用:

1)Ribbon

使用spring-cloud-starter-ribbon,启动类中使用@EnableEurekaClient,开启服务发现功能,

创建RestTemplate实例到容器中,并通过@LoadBalanced注解到该实例,开启均衡负载能力。

配置yml

spring.application.name=ribbon-service

server.port=30001

eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/

优点:简单、直接。

2)Feign

使用spring-cloud-starter-feign,启动类中使用@EnableFeignClients,开启Feign功能,

创建interface,并通过@FeignClient(value=服务名)绑定服务提供方服务到interface(相当于被调用接口的声明),调用方直接注入该interface,通过调用本地接口就可实现RPC。Feign已包含Ribbon的负载均衡能力。

配置yml

spring.application.name=feign-service

server.port=40001

eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/

优点:就像调用本地方法一样调用远程接口

实例源码: register-server  service-provider  feign-call  ribbon-call

你可能感兴趣的:(Spring Cloud 之服务注册&发现)