`

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——Zookeeper(注册中心)

    SpringCloud为Zookeeper提供了一个名为`spring-cloud-starter-zookeeper`的启动器,允许开发者轻松地将Zookeeper集成到SpringBoot应用中。首先,我们需要在项目中引入依赖: ```xml &lt;groupId&gt;org.springframework...

    基于SpringCloud的微服务实战案例-基于Dubbo的微服务开发基础框架

    ### 基于SpringCloud的微服务实战案例与Dubbo微服务开发基础框架解析 #### 一、SpringCloud微服务实战案例—simplemall 在现代软件开发领域,微服务架构因其高灵活性、易于扩展和独立部署等优势而备受青睐。其中,...

    springcloud集成zookeeper的方法示例

    SpringCloud 作为一个微服务架构下的框架,提供了许多实用的功能和组件,以便于开发者快速构建微服务应用程序。然而,在分布式系统中,服务注册、服务发现、配置管理等问题都是开发者需要面临的挑战。为了解决这些...

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

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

    基于Spring Cloud的微服务架构学习项目.zip

    基于Spring Cloud的微服务架构学习项目 项目概述 本项目是一个基于Spring Cloud的微服务架构学习项目,涵盖了服务注册与发现、服务调用、服务降级、服务网关、服务配置、消息总线、分布式请求链路跟踪等多个方面...

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

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

    springcloud2.0-zookeeper.rar

    Spring Cloud是基于Spring Boot实现的一系列微服务开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    Dubbo和Spring Cloud微服务架构对比——服务注册和发现.docx

    - **服务管理**:Spring Cloud提供了丰富的服务治理工具,如Hystrix(用于实现熔断、降级等)和Zuul(用于路由和服务网关)。 #### 总结 通过上述对比分析可以看出,Dubbo和Spring Cloud在服务注册与发现方面各有...

    Spring Cloud 微服务落地从0到1.pdf

    同时,平台还支持不同类型的开源服务框架接入,如dubbo、springcloud、motan等,提供了服务治理的功能,包括服务的启停、新增节点、服务权重配置、容错、降级等操作,提高了运维效率和开发效率。 权限管理系统是...

    springcloud面试准备,面经

    在本文中,我们将详细介绍 Spring Cloud 面试准备的相关知识点,包括 Spring Cloud 的定义、微服务架构、Spring Cloud 的优势、微服务之间的独立通讯方式、服务熔断和服务降级、Eureka 和 Zookeeper 的区别等。...

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

    本文主要介绍了使用 SpringCloud 搭建配置中心的方法,该方法使用 Zookeeper 作为分布式服务框架来维护和监控存储的数据状态变化,从而达到基于数据的集群管理。 为什么使用 Zookeeper? Zookeeper 作为一个分布式...

    全套spring cloud 项目

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

    面试专题-面试人员必看-微服务架构面试专题系列:Dubbo+Spring Boot+Spring Cloud.rar

    3. **Spring Cloud**:基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    SpringCloud微服务治理技术入门(SCN).doc

    - **SpringCloud**:基于SpringBoot的微服务治理框架,为SpringBoot应用提供了一站式的微服务解决方案。 6. **版本选择** 使用SpringCloud时,应根据官方推荐的兼容版本进行选择,避免因版本不匹配导致的问题。 ...

    毕业设计后端-基于springcloud微服务和区块链的志愿服务平台.zip

    【标题】中的“毕业设计后端-基于springcloud微服务和区块链的志愿服务平台”揭示了这个项目是一个针对毕业设计的后端系统实现,它利用了SpringCloud微服务架构以及区块链技术来构建一个志愿服务管理平台。...

    苏宁数据中台基于Spring Cloud微服务架构实践.docx

    ### 苏宁数据中台基于Spring Cloud微服务架构实践 #### 一、项目背景 ##### 1.1 为何选择Spring Cloud? 苏宁大数据中心的传统架构采用VIP负载均衡+Nginx+Spring MVC,其中大部分代码组织成单一的war包。这种模式...

    Spring Cloud.pdf

    Spring Cloud 由多个项目组成,包括 Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Zookeeper 等。 Boot 和 Cloud 版本选型 在选择 Spring Boot 和 Spring Cloud 的版本时,需要考虑到版本的兼容性和...

    springcloudalibaba微服务dubbo+sentinel+gateway+zookeeper+nacos的demo

    在IT行业中,Spring Cloud Alibaba是一款备受推崇的微服务框架,它为开发者提供了构建分布式系统的一系列工具和服务。这个“springcloudalibaba微服务dubbo+sentinel+gateway+zookeeper+nacos的demo”压缩包文件,...

    Spring Cloud 微服务架构详细指南.docx

    - Spring Cloud Gateway 是一个基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.0 的 API 网关实现。 - 添加依赖: ```xml &lt;groupId&gt;org.springframework.cloud &lt;artifactId&gt;spring-cloud-...

Global site tag (gtag.js) - Google Analytics