基于Spring Cloud Zookeeper实现服务注册与发现

服务注册

1.添加Spring Cloud Zookeeper依赖:

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
		<exclusions>
			<exclusion>
				<groupId>org.apache.zookeeper</groupId>
				<artifactId>zookeeper</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.apache.zookeeper</groupId>
		<artifactId>zookeeper</artifactId>
		<version>3.6.2</version>
		<exclusions>
			<exclusion>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>

2.在服务配置文件中添加zookeeper配置:

spring:
 cloud:
  zookeeper:
   connect-string: localhost:2181 #zookeeper地址

3.启动zookeeper服务器和服务(我这边是启动了两个服务,分别是provider和consumer),然后在zookeeper客户端中可以查看已经注册到zookeeper中的服务:

服务发现

1.创建controller

消费者controller:

package com.buhe.zk.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@RestController
public class ZkConsumerController {
  private static final String SERVICE_NAME = "provider";
  private static final String SERVICE_PATH = "/zk/provider";

  @Autowired
  private RestTemplate restTemplate;

  @Autowired
  private DiscoveryClient discoveryClient;

  /**
   * 调用提供者服务
   * @return
   */
  @GetMapping("/zk/consumer")
  public String zkConsumer(){
    return "我吃了" + restTemplate.getForObject("http://" + SERVICE_NAME + SERVICE_PATH, String.class);
  }

  /**
   * 获取提供者服务URL
   * @return
   */
  @GetMapping("/zk/url")
  public String serviceUrl() {
    List<ServiceInstance> list = discoveryClient.getInstances(SERVICE_NAME);
    if (list != null && list.size() > 0 ) {
      return list.get(0).getUri().toString() + SERVICE_PATH;
    }
    return null;
  }

}

要使用RestTemplate别忘了加配置:

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
	return new RestTemplate();
}

提供者controller:

package com.buhe.zk.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ZkProviderController {

  @GetMapping("/zk/provider")
  public String zkProvider(){
    return "10个苹果";
  }
}

2.服务调用

以上就是基于Spring Cloud Zookeeper实现服务注册与发现的详细内容,更多关于Spring Cloud Zookeeper服务注册与发现的资料请关注我们其它相关文章!

(0)

相关推荐

  • SpringCloud容器化服务发现及注册实现方法解析

    springclould项目容器化过程中, 可能是采用部分部分容器化,逐步迁移到容器环境, 这时候我们就会面临一个问题: 外部服务如何调用k8s内部服务. Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,consumer 通过 Eureka 发现其他节点/服务. 应用场景 Eureka , gateway , app01, app02 处于k8s集群外部 app03

  • springcloud干货之服务注册与发现(Eureka)

    使用Eureka实现服务治理 作用:实现服务治理(服务注册与发现) 简介:Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块.而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合.通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统.它主要提供的模块包括:服务发

  • 详解使用Spring Cloud Consul实现服务的注册和发现

    首先安装consul环境,参照之前的文章:https://www.jb51.net/article/141789.htm 项目规划,2个服务端,1个客户端 首先来看服务端, 一:服务端1: 项目依赖 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clou

  • Netty + ZooKeeper 实现简单的服务注册与发现

    一. 背景 最近的一个项目:我们的系统接收到上游系统的派单任务后,会推送到指定的门店的相关设备,并进行相应的业务处理. 二. Netty 的使用 在接收到派单任务之后,通过 Netty 推送到指定门店相关的设备.在我们的系统中 Netty 实现了消息推送.长连接以及心跳机制. 2.1 Netty Server 端: 每个 Netty 服务端通过 ConcurrentHashMap 保存了客户端的 clientId 以及它连接的 SocketChannel. 服务器端向客户端发送消息时,只要获取

  • SpringCloud Eureka实现服务注册与发现

    前言 Eureka是一种基于REST(具像状态传输)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障转移.本文记录一个简单的服务注册与发现实例. GitHub地址:https://github.com/Netflix/eureka 官网文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.RC2/single/spring-cloud-netflix.html Eureka-Ser

  • springcloud集成zookeeper的方法示例

    为什么使用zookeeper Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理. zookeeper 核心 Zookeeper的数据模型是树结构,在内存数据库中,存储了整棵树的内容,包括所有的节点路径.节点数据.ACL信息,Zookeeper会定时将这个数据存储到磁盘上. zoo

  • Spring Cloud EureKa Ribbon 服务注册发现与调用

    概述 用一个简单的例子演示Spring Cloud中EureKa和Ribbon的基本用法. 版本和环境 IDEA Spring Boot 1.5.·0 JDK 1.8 Maven 3 构建eureka server 在Spring Cloud,可以使用eureka来管理微服务,微服务可以注册到eureka中. 首先可以用IDEA的Spring Initialzr 来创建eureka server注册中心. 修改application.properties文件,添加如下内容 spring.appl

  • SpringCloud用Zookeeper搭建配置中心的方法

    本文介绍了SpringCloud +Zookeeper完成配置中心,分享给大家,具有如下: 使用场景 项目配置更改不需要打包,重启 提供配置文件的可视化界面 和springcloud快速整合 为什么使用zookeeper Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理. 怎么使

  • C#使用Consul集群进行服务注册与发现

    前言 我个人觉得,中间件的部署与使用是非常难记忆的:也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用. 所以,我觉得学习中间件的文章,越详细越好:因为,这对作者而言也是一份珍贵的备忘资料. Consul简介 Consul一个什么,我想大家通过搜索引擎一定可以搜索到:所以,我就不在重复他的官方描述了. 这里,我为大家提供一个更加好理解的描述. Consul是什么? Consul本质上是一个Socket通信中间件. 它主要实现了两个功能,服务注册与发现与自身的负载均衡的集群.

  • SpringBoot + Spring Cloud Consul 服务注册和发现详细解析

    什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式",内置了服务注册与发现框架.分布一致性协议实现.健康检查.Key/Value 存储.多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等).使用起来也较为简单.Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux.windows和Mac OS X):安装包仅包含一个可执行文件

随机推荐