SpringCloud 服务注册中心 服务提供者 服务消费者

1. 建立“服务注册中心”

创建一个基础的Spring Boot工程,并在pom.xml中引入需要的依赖内容:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

在主类中通过@EnableEurekaServer注解启动一个服务注册中心。

@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}

在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为。在application.yml中配置

server:
      port: 9999
eureka:
       instance:
           hostname: 127.0.0.1
       server:
            enableSelfPreservation: false
       client:
            registerWithEureka: false
            fetchRegistry: false
            serviceUrl:
                     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

这里,服务注册中心的端口是9999

2. 建立“服务提供方”

下面创建提供服务的客户端,并向服务注册中心注册自己。

首先,创建一个基本的Spring Boot应用,在pom.xml中,加入如下配置:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

其次,实现test1接口

@RestController
public class TestController {

    @GetMapping("test1")
    public Object getUser(String userName) {
        logger.info("access test");
        User user = null;
        try{
            user = userServiceImpl.getByUserName(userName);
        } catch (Exception e) {

        }
        return user;
    }

最后在主类中通过加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,才能实现Controller中对服务信息的输出。

@EnableDiscoveryClient
@EnableTransactionManagement
@SpringBootApplication
public class Provider1 {

    public static void main(String[] args) {
        //第一个简单的应用,
        SpringApplication.run(Provider1.class,args);
    }

}

在完成了服务内容的实现之后,再继续对application.properties做一些配置工作,具体如下:

server.port=18081

eureka.client.serviceUrl.defaultZone=http://192.168.20.144:9999/eureka/

spring.application.name=provider1

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

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

这样就可以在注册中心localhost:9999中看到名称为provider1的服务了

3. 建立“服务消费者”(Feign)

创建一个Spring Boot工程,配置pom.xml,将上述的配置中的ribbon依赖替换成feign的依赖即可,具体如下:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

在应用主类中通过@EnableFeignClients注解开启Feign功能,具体如下:

@EnableDiscoveryClient
@EnableFeignClients
@EnableScheduling
@SpringBootApplication
public class Consumer1 {

    public static void main(String[] args) {
        //第一个简单的应用,
        SpringApplication.run(Consumer1.class,args);
    }
}

定义服务的接口,具体如下:

@FeignClient(name="provider1",fallback = UserFeignClientServiceFallback.class)
@Service("userFeignClientService")
public interface UserFeignClientService{
    @GetMapping("test1")
    Object getUser(@RequestParam("userName") String userName);
}
  • 使用@FeignClient("provider1")注解来绑定该接口对应provider1服务
  • 使用@GetMapping声明服务调用的接口test1,不需要实现。

在web层中调用上面定义的ComputeClient,具体如下:

@RestController
public class TestController {
    @Autowired
    private UserFeignClientService userFeignClientService;

    @GetMapping("test")
    public Object test(String userName){
        logger.info("hello world!!");
        Object map = userFeignClientService.getUser(userName);
        return map;
    }

这样就可以通过@Autowired注解,实现了在注册中心发现服务并调用的过程。

application.properties中不用变,指定eureka服务注册中心即可,如:

server.port=19090

eureka.client.serviceUrl.defaultZone=http://192.168.20.144:9999/eureka/

spring.application.name=consumer1

以上,通过Feign以接口和注解配置的方式,轻松实现了对provider1服务的绑定,并且可以在本地应用中像本地服务一下的调用它,并且做到了客户端均衡负载。

原文地址:https://www.cnblogs.com/benlcs/p/9923838.html

时间: 2024-11-07 00:22:32

SpringCloud 服务注册中心 服务提供者 服务消费者的相关文章

Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 服务注册和发现对于微服务架构而言,是非常重要的.有了服务发现和注册,只需要使用服务的标识符就可以访问到服务,而不需要修改服务调用的配置文件.该功能类似于 Dubbo 的注册中心,比如 Zookeeper. Eureka

【转帖】阿里金融云:分布式服务注册中心(DSR)

https://www.cloud.alipay.com/docs/middleware/register/index.html 分布式服务注册中心(DSR) 分布式服务注册中心简介 服务注册中心 (Register) 是一个基于“发布-订阅”模式的协调中间件.在分布式环境下,它通常被用作地址服务器. SOFA RPC.MsgBroker 等金融云中间件,都依靠服务注册中心来实时感知各个角色的在线地址列表.例如SOFA RPC中,服务消费方需要感知服务提供方地址:MsgBroker中,消息发布者

SpringCloud Eureka(注册中心集群)

多个注册中心,其实用不同的配置对应 不同的端口号注册就行了. 注册中心自己也是个服务,看看之前的单个注册中心是怎么样的呢? server: port: 8888 # 服务端口eureka: instance: hostname: localhost # 设置主机名 client: registerWithEureka: false # 是否向 Eureka 注册服务.该应用为服务注册中心,不需要自注册,设置为 false fetchRegistry: false # 是否检索服务.该应用为服务注

史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心

最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f10-eureka/或者http://blog.csdn.net/forezp/article/details/81041101 文章 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,

spring cloud(服务注册中心及服务提供者——初学一)

一.创建服务注册中心 1.创建spring boot项目 2.引入eureka-server依赖(也可以在创建项目时勾选eureka-server服务,自动生成依赖) 注意版本号,版本不对可能启动会报错,本次使用Dalston.SR1版本 3.启动类中开启服务注册中心功能 4.在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties中问增加如下配置: 5.浏览器访问  localhost:1111

Spring Cloud Eureka 服务注册中心(二)

序言 Eureka 是 Netflix 开发的,一个基于 REST 服务的,服务注册与发现的组件 它主要包括两个组件:Eureka Server 和 Eureka Client Eureka Client:一个Java客户端,用于简化与 Eureka Server 的交互(通常就是微服务中的客户端和服务端) Eureka Server:提供服务注册和发现的能力(通常就是微服务中的注册中心) 各个微服务启动时,会通过 Eureka Client 向 Eureka Server 注册自己,Eurek

如何创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> <relativePath

spring cloud(二)服务(注册)中心Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组件之一. 背景介绍 服务中心 服务中心又称注册中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等,比如dubbo admin后台的各种功能. 有了服务中心调用关系会有什么变化,画几个简图来帮忙理解 项目A调用项目B 正常调用项目A请求项目B 有了服务中心之后,任何一个服务都不能直接去掉用

(四)鸿鹄云架构一服务注册中心

产品简介 鸿鹄云架构[服务注册中心]是所有业务微服务的统一注册中心,本身是给予Restful的服务,主要用于定位运行在服务器中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用的接口和性能高效.功能稳定的系统提供给用户. 功能清单 运行环境支持 开发工具:Eclipse.MyEclipse.IdeaWEB容器:内置TomcatJDK版本:1.8+系统支持:Window.Linux服务框架:Sp