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
相关推荐
除此之外,还通过整合SpringMVC+SpringBoot+Mybatis构建一个可用的基于SpringCloud的微服务工程将上述技术组件逐步落地,让大家看得懂做得出学得会。 00、尚硅谷_SpringBoot_源码、课件 01.尚硅谷_SpringCloud_前提...
通过整合SpringMVC+SpringBoot+Mybatis构建一个可用的基于SpringCloud的微服务工程将上述技术组件逐步落地,让大家看得懂做得出学得会。 00、硅谷学习_SpringBoot_源码、课件 01.硅谷学习_SpringCloud_前提概述 ...
29.尚硅谷_SpringCloud_Eureka比Zookeeper好在哪里 30.尚硅谷_SpringCloud_Ribbon是什么 31.尚硅谷_SpringCloud_Ribbon配置初步 32.尚硅谷_SpringCloud_Ribbon负载均衡 33.尚硅谷_SpringCloud_Ribbon核心组件...
Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单...
SpringCloud微服务课程说明 1 网站架构演变过程 1 传统架构 1 分布式架构 1 SOA架构 1 微服务架构 2 微服务架构产生的原因 2 漫谈微服务架构 2 什么是微服务 2 微服务架构特征 3 微服务架构如何拆分 3 ...
springcloud微服务H版,初级和中级部分,从整个项目的搭建到每一个技术模块,注释和总结写的比较清晰。适合新手学习,包括:eureka及集群,zookeeper、consul、Ribbon、OpenFeign、Hystrix、GateWay、Config、Bus、...
Spring Cloud是一系列框架的集合,其基于Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(发现注册)、配置中心、消息总线、负载均衡、断路器、数据监控、分布式会话和集群状态管理等...
善于运用SpringCloud,解脱传统的开发模式的苦恼2、让开发者能够学习更多的开发使用技巧,成为微服务开发大牛〖课程目录〗:1-101什么是微服务.mp41-1010创建父级工程.mp41-1111创建子工程API.mp41-1213创建微服务...
断路器示意图 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下,通常会有多个层次的服务调用. 下面是微服架构下, 浏览器端通过API访问后台微服务的一个示意图: hystrix 1 一个微服务的超时...
比如: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 端口占用: mysql3306 redis单机版6379 redis集群7001-7006 solr单机版8082 zookeeper集群2881:3881-2883:3883 solr集群6060-6063 ftp图片服务器21 nginx代理图片路径9090 阿波罗配置中心 ...
Netty之IO模型开发本质手写部分实现推导篇 全手写基于Netty的RPC框架自定义协议,连接池 全手写基于Netty的RPC框架 协议编解码问题 粘包拆包与内核关系 ... Elasticsearch 分布式架构原理 写入数据的原理 查询效率...
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 + ...
基于注解使用,对业务代码可以说是零入侵,目前内置适配spring-cloud(Feign调用) , dubbo。 同时具备一定的扩展性与兼容性,因为存在自定义的服务框架,或者以后会涌现出更多的流行分布式服务框架,所以会提供...
Dubbo 和 Spring Cloud 有什么哪些区别? Dubbo 和 Dubbox 之间的区别? 注册中心 Dubbo 有哪些注册中心? Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么? 集群 Dubbo集群提供了哪些负载均衡策略? ...
分布式服务/框架 ...多种RPC : 支持 Dubbo, SpringCloud,Motan, Sofa-rpc, brpc, tars 等知名RPC框架 日志存储 : 支持 mysql, oracle, mongodb, redis, zookeeper 等方式 复杂场景 : 支持RPC嵌套调用事务
├─面试必问-微服务架构深入浅出讲解springcloud │ 微服务架构 --深入浅出讲解springcloud.mp4 │ ├─面试必问-教你手写MyBatis框架 │ 一小时教你手写MyBatis框架.mp4 │ ├─面试必问-架构杀手锏——java混乱...
面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
leader-by-lock 使用Redis Lock轻松实现集群领导者选举仅使用Spring-Boot和Redis动机几乎所有使用Spring Boot进行领导力选举的例子都转到Hazelcast(现在已弃用)和Zookeeper(在简单情况下过强)中的Spring Cloud ...