`

Spring Cloud基于Zookeeper的微服务集群实现

阅读更多

Spring cloud集成了zookeeper得使用,通过服务端注册服务,客户端发现服务并使用轮询实现负载均衡,下面看具体的使用方法:
服务端的实现

1、pom文件需引入以下组件

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2、application.yml配置文件内容:指定应用名称,以便在客户端调用服务使用
spring:
  application:
    name: zkserver

3、main方法的实现:

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@RestController
public class ZkServerApp {

	@RequestMapping("/user")
	public Map<String,Object> info() {
		//模拟返回一个用户信息
		Map<String, Object> map = new HashMap<>();
		map.put("name", "john");
		map.put("age", 22);
		return map;
	}
	public static void main(String[] args) {
		SpringApplication.run(ZkServerApp.class, args);
	}
}

 
4、服务端启动:
默认端口为8080,可以通过—server.port指定启动端口,在本例中启动8080,8081,8082三个服务端口提供服务调用。
客户端的实现
1、pom文件需引入以下组件
客户端的依赖引入通服务端一致即可,同上
2、application.yml配置文件内容:
指定启动端口为8888,防止端口冲突
server:
  port: 8888
同时将本服务的注册发现设置为false
spring:
  cloud:
    zookeeper:
      discovery:
        register: false

3、main方法的实现:

@SpringBootApplication
@RestController
@EnableDiscoveryClient
public class ZkClientApp {
	
	//获取服务端的应用名称
	@Value("${spring.application.name:zkserver}")
	private String appName;

	@Bean
	@LoadBalanced
	RestTemplate loadBalancedRestTemplate() {
		return new RestTemplate();
	}
	
	@Autowired
	LoadBalancerClient loadBalance;

	@Autowired
	private RestTemplate rt;

	@RequestMapping("/user")
	public String getUser() {
		System.out.println(loadBalance.choose(appName)); //打印当前调用的服务端地址
		@SuppressWarnings("unchecked")
		Map<String, Object> user = rt.getForObject("http://" + this.appName + "/user", Map.class);
		return user.toString();
	}

	public static void main(String[] args) {
		SpringApplication.run(ZkClientApp.class, args);
	}
}

 

4、启动客户端,访问 http://localhost:8888/user,页面出现如下结果
{name=john, age=22},多次调用后控制台打印如下信息:
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8080, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8081, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8082, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8080, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8081, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8082, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8080, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8081, secure=false, metadata={}}
RibbonServer{serviceId='zkserver', server=windows10.microdone.cn:8082, secure=false, metadata={}}

完整代码地址:https://github.com/hjguang/spring-cloud

 

0
0
分享到:
评论

相关推荐

    尚硅谷SpringCloud视频(最新)

    除此之外,还通过整合SpringMVC+SpringBoot+Mybatis构建一个可用的基于SpringCloud的微服务工程将上述技术组件逐步落地,让大家看得懂做得出学得会。 00、尚硅谷_SpringBoot_源码、课件 01.尚硅谷_SpringCloud_前提...

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    通过整合SpringMVC+SpringBoot+Mybatis构建一个可用的基于SpringCloud的微服务工程将上述技术组件逐步落地,让大家看得懂做得出学得会。 00、硅谷学习_SpringBoot_源码、课件 01.硅谷学习_SpringCloud_前提概述 ...

    尚硅谷Java视频教程_SpringCloud视频教程

    29.尚硅谷_SpringCloud_Eureka比Zookeeper好在哪里 30.尚硅谷_SpringCloud_Ribbon是什么 31.尚硅谷_SpringCloud_Ribbon配置初步 32.尚硅谷_SpringCloud_Ribbon负载均衡 33.尚硅谷_SpringCloud_Ribbon核心组件...

    Spring Cloud构建微服务架构.doc

    Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单...

    新版本SpringCloud2学习手册

    SpringCloud微服务课程说明 1 网站架构演变过程 1 传统架构 1 分布式架构 1 SOA架构 1 微服务架构 2 微服务架构产生的原因 2 漫谈微服务架构 2 什么是微服务 2 微服务架构特征 3 微服务架构如何拆分 3 ...

    springcloud 微服务demo

    springcloud微服务H版,初级和中级部分,从整个项目的搭建到每一个技术模块,注释和总结写的比较清晰。适合新手学习,包括:eureka及集群,zookeeper、consul、Ribbon、OpenFeign、Hystrix、GateWay、Config、Bus、...

    全套spring cloud 项目

    Spring Cloud是一系列框架的集合,其基于Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(发现注册)、配置中心、消息总线、负载均衡、断路器、数据监控、分布式会话和集群状态管理等...

    SpringCloud实战入门视频课程

    善于运用SpringCloud,解脱传统的开发模式的苦恼2、让开发者能够学习更多的开发使用技巧,成为微服务开发大牛〖课程目录〗:1-101什么是微服务.mp41-1010创建父级工程.mp41-1111创建子工程API.mp41-1213创建微服务...

    springCloud

    断路器示意图 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下,通常会有多个层次的服务调用. 下面是微服架构下, 浏览器端通过API访问后台微服务的一个示意图: hystrix 1 一个微服务的超时...

    spring-cloud-example:春云的例子

    比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。

    scen-springcloud-store:springcloud高可用分布式商城

    scen-springcloud-store 端口占用: mysql3306 redis单机版6379 redis集群7001-7006 solr单机版8082 zookeeper集群2881:3881-2883:3883 solr集群6060-6063 ftp图片服务器21 nginx代理图片路径9090 阿波罗配置中心 ...

    leetcode题库-Blog:Fashion'sBlog个人学习笔记,涵盖JVM、数据结构、算法、设计模式、中间件、数据库、缓存、分布式微服

    Netty之IO模型开发本质手写部分实现推导篇 全手写基于Netty的RPC框架自定义协议,连接池 全手写基于Netty的RPC框架 协议编解码问题 粘包拆包与内核关系 ... Elasticsearch 分布式架构原理 写入数据的原理 查询效率...

    毕业设计-基于Java的分布式软件测试管理系统的设计与实现.zip

    web服务部署多个,nginx反向代理,其中要实现session共享,采用spring-session的redis集群存储方案 mysql主从复制,读写分离 3技术要点 后端: spring-boot、spring-session、spring-security等全家桶 dubbo + ...

    分布式软件测试管理系统的设计与实现

    web服务部署多个,nginx反向代理,其中要实现session共享,采用spring-session的redis集群存储方案 mysql主从复制,读写分离 3技术要点 后端: spring-boot、spring-session、spring-security等全家桶 dubbo + ...

    基于springboot , zookeeper , redis 分布式事务强一致性方案+源代码+文档说明

    基于注解使用,对业务代码可以说是零入侵,目前内置适配spring-cloud(Feign调用) , dubbo。 同时具备一定的扩展性与兼容性,因为存在自定义的服务框架,或者以后会涌现出更多的流行分布式服务框架,所以会提供...

    Dubbo 是一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架

    Dubbo 和 Spring Cloud 有什么哪些区别? Dubbo 和 Dubbox 之间的区别? 注册中心 Dubbo 有哪些注册中心? Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么? 集群 Dubbo集群提供了哪些负载均衡策略? ...

    hmily-master.zip

    分布式服务/框架 ...多种RPC : 支持 Dubbo, SpringCloud,Motan, Sofa-rpc, brpc, tars 等知名RPC框架 日志存储 : 支持 mysql, oracle, mongodb, redis, zookeeper 等方式 复杂场景 : 支持RPC嵌套调用事务

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    ├─面试必问-微服务架构深入浅出讲解springcloud │ 微服务架构 --深入浅出讲解springcloud.mp4 │ ├─面试必问-教你手写MyBatis框架 │ 一小时教你手写MyBatis框架.mp4 │ ├─面试必问-架构杀手锏——java混乱...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    redis-leader-by-lock:使用Redis Lock轻松实现集群领导者选举

    leader-by-lock 使用Redis Lock轻松实现集群领导者选举仅使用Spring-Boot和Redis动机几乎所有使用Spring Boot进行领导力选举的例子都转到Hazelcast(现在已弃用)和Zookeeper(在简单情况下过强)中的Spring Cloud ...

Global site tag (gtag.js) - Google Analytics