简介:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。本文简单分析zookeeper的工作原理
zookeeper会非常难懂。其实原理简单来说,就是要选举leader,会生成一个zxid,然后分发给所有的server(所以这里一台server可以接受多台server给他发送要选举leader的请求),然后各个server根据发送给自己的zxid,选择一个值最大的,然后将这个选择返回给发送这个zxid的server,只要这个server收到的答复大于等于2/n+1个(也就是超过半数的同意票),则表明自己当选为leader,然后会向所有server广播自己已经成为leader。
大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。
(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。
并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。
(2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。
(3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。
其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。
Dubbo提供了很多协议,Dubbo协议、RMI协议、Hessian协议,我们查看Dubbo源代码,有各种协议的实现,如图所示:
我们之前没用Dubbo之前时,大部分都使用Hessian来使用我们服务的暴露和调用,利用HessianProxyFactory调用远程接口。
Zookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookeeper,Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。我们先在linux上安装Zookeeper,我们安装最简单的单点,集群比较麻烦。
xml配置属性说明:
dubbo:registry 标签一些属性的说明:
1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。
2)check注册中心不存在时,是否报错。
3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。
4)timeout注册中心请求超时时间(毫秒)。
5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。
dubbo:service标签的一些属性说明:
1)interface服务接口的路径
2)ref引用对应的实现类的Bean的ID
3)registry向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A
4)register 默认true ,该协议的服务是否注册到注册中心。
dubbo:reference 的一些属性的说明:
1)interface调用的服务接口
2)check 启动时检查提供者是否存在,true报错,false忽略
3)registry 从指定注册中心注册获取服务列表,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔
4)loadbalance 负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
相关推荐
【标题】"dubbo+zookeeper+spring+springMVC+mybatis" 描述了一个基于这些技术构建的服务消费方与服务提供方的项目架构。在这个架构中,`Dubbo`是核心的服务框架,它负责服务的注册与发现;`Zookeeper`作为注册中心...
在Dubbo+Spring的整合中,我们可以通过Spring的XML配置或注解来声明服务提供者和服务消费者。Spring的ApplicationContext加载这些配置后,会自动完成服务的暴露和引用。 【四】Demo源码解析 1. **服务提供者**: ...
本项目"springBoot+dubbo+zookeeper分布式微服务"充分利用了这三个组件的优势,构建了一个高效、可扩展且易于维护的服务网络。以下是对这些技术及其整合应用的详细说明: **SpringBoot** SpringBoot是Spring框架的...
在这个"springboot+dubbo+zookeeper"的项目中,开发者使用SpringBoot作为基础框架,构建微服务应用。SpringBoot的自动配置特性使得初始化和配置过程更加简洁。然后,Dubbo被引入作为服务治理框架,它允许服务提供者...
2.该项目提高了自己对Spring Boot整合Dubbo的理解,并深刻的认识到了服务者与消费者之间的调用及流程 4. Dubbo配置全部采用yml文件配置,方便,易读 5. 简化了开发流程,完整的Spring Boot工程 6. 适用于Dubbo初学者...
标题 "Spring + Dubbo + Zookeeper" 涉及到的是一个常见的微服务架构组合,主要涵盖Spring框架、Dubbo服务治理框架以及Zookeeper作为注册中心。这些技术在分布式系统中广泛使用,构建高可用、可扩展的服务网络。 ...
这个“springcloudalibaba微服务dubbo+sentinel+gateway+zookeeper+nacos的demo”压缩包文件,显然是一个实战示例,旨在帮助开发者理解并实践这些关键组件的集成与使用。下面将详细解析这些组件以及它们在微服务架构...
在IT行业中,Zookeeper、Dubbo和Spring是三个非常重要的组件,它们在分布式系统和微服务架构中扮演着核心角色。下面将详细解释这三个技术及其相互间的整合。 **Zookeeper** 是一个分布式的,开放源码的分布式应用...
压缩包中的" Dubbo+Zookeeper+Spring所需jar包(全)"应该包含了这些必要的库。 3. **服务提供者配置**:创建服务提供者(Provider)的Java类,使用`@Service`注解标记服务接口的实现类。在Spring的配置文件中,定义`...
本示例"**DUBBO+Zookeeper小例子**"旨在演示如何利用SpringMVC、Dubbo和Zookeeper来实现一个微服务架构。这是一次将这些组件集成到一起的实际操作,通过IDEA(IntelliJ IDEA)开发环境进行。在开始之前,确保你已...
在《Springboot + Mybatis+Dubbo+Zookeeper+nginx+redis+HTML.docx》这份文档中,作者详细介绍了如何集成并使用Spring Boot、MyBatis、Dubbo、Zookeeper、Nginx以及Redis等多种技术,构建一个高效稳定的应用系统。...
【标题】"dubbo+spring+zookeeper整合案例详解" 【描述】该资源是一个全面的教程,涵盖了将Dubbo、Spring和Zookeeper整合到一起的实际操作步骤,包括完整的配置文件和必要的jar包。遗憾的是,它没有涉及Dubbo与...
自己从零开始搭建的springboot框架,可以参照我的博客有详细的步骤,很适合初学者,前端整合jsp博客:http://blog.csdn.net/u010775025/article/details/79194348,dubbo+zk整合博客:...代码gitHub也可以下载上面的会...
这个“dubbo+zookeeper+spring -demo”是一个实际应用了这三者的分布式系统演示项目。 1. **Dubbo服务框架**: Dubbo的核心设计理念是面向接口的编程,它允许服务提供者暴露服务,而服务消费者透明地调用。服务...
【标题】"dubbo+zookeeper+tomcat资源包"涵盖了三个关键的IT技术组件:Dubbo、ZooKeeper和Tomcat。这些技术在分布式系统、服务治理和Web应用部署方面扮演着重要角色。 Dubbo是阿里巴巴开源的一个高性能、轻量级的...
在分布式系统中,Dubbo、Zookeeper和SpringMVC是三个关键组件,它们协同工作以构建高可用、高性能的服务架构。下面将详细讲解这三个技术如何整合,并探讨它们在实际项目中的应用。 首先,Dubbo是一个由阿里巴巴开源...
【描述】提到的" dubbo+zookeeper+springmvc实例demo"是一个综合性的应用示例,它将Dubbo的远程调用能力、Zookeeper的服务发现和注册功能与Spring MVC的Web开发框架结合在一起。这个实例通常会展示如何在Spring MVC...
#### 三、Dubbo与Zookeeper整合原理 Dubbo与Zookeeper的整合主要是通过Zookeeper作为Dubbo的服务注册中心来实现的。在Dubbo框架中,服务提供者会向注册中心注册服务信息,而服务消费者则会从注册中心订阅所需的服务...
### Spring Boot + Dubbo + ZooKeeper + JPA 架构详解 #### 一、概述 在微服务架构中,Spring Boot、Dubbo 和 ZooKeeper 的组合应用非常常见,它们能够帮助开发者快速构建分布式系统。本篇文章将围绕这些技术的...
总结起来,这个"Dubbo+zookeeper调用java接口"的案例旨在演示如何在分布式环境中,通过Dubbo和Zookeeper实现服务的发布、注册、查找和调用。开发者可以通过分析和运行这个案例,深入了解Dubbo和Zookeeper的协同工作...