Zookeeper+Dubbo基础入门

一、Zookeeper基础

1、什么是zookeeper

ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的有组织服务的标准。

2、分布式

分布式是啥?

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。 逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

优点:
  • 可靠性 - 单个或几个系统的故障不会使整个系统出现故障。
  • 可扩展性 - 可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。
  • 透明性 - 隐藏系统的复杂性,并将其显示为单个实体/应用程序。
分布式应用的挑战:
  • 竞争条件 - 两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。
  • 死锁 - 两个或多个操作等待彼此无限期完成。
  • 不一致 - 数据的部分失败。
分布式和集群比较

比喻列子:小饭店原来只有一个厨师,切菜洗菜备料炒菜全干,后来客人多了,厨房一个厨师忙不过来,又请了一个厨师,两个厨师都炒一样的菜,这两个厨师的关系是集群,为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来,又请了一个配菜师,这两个配菜师的关系是集群。分布式讲究的是协作,一个事件的发生可以触发多个事件同时进行不同的业务运算。而集群中的成员功能是一样的。
在这里插入图片描述

3、ZooKeeper的优点:

  • 简单的分布式协调过程
  • 同步 - 服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理。
  • 有序的消息
  • 序列化 - 根据特定规则对数据进行编码。确保应用程序运行一致。这种方法可以在MapReduce中用来协调队列以执行运行的线程。
  • 可靠性
  • 原子性 - 数据转移完全成功或完全失败,但没有事务是部分的。

4、zookeeper用来做什么?

  • 应用场景1:统一命名服务
    简单点来说,就是为分布式系统提供一套完整的命名规则。既能产生唯一的名称又便于让人识别和记住。
  • 应用场景2:配置管理
    通过zookeeper达到统一的配置文件管理,将配置文件保存在zookeeper的某个目录节点中,然后**将所有需要修改的应用及其监控配置信息的状态(也就是用上面我们说到的watcher)。**一旦配置文件发生变化,每台机器就会收到zookeeper的通知。然后从zookeeper获取到最新的配置信息应用到系统中。
  • 应用场景3:集群管理
    如果有多台server组成的一个服务集群,那么必须要一个“总管”知道当前集群中每台机器的服务状态,一旦有机器不能提供服务,集群中的其他机器必须知道,同样当增加一台或多台server,同样也必须让“总管知道”,从而做出调整重新分配服务策略。Zookeeper不仅能维护当前集群中机器的服务状态,而且能够选出一个“总管”,让这个总管来管理集群。
  • 应用场景4:数据发布/订阅(其实也就是dubbo的注册中心)
    数据发er布/订阅系统,就是将数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,从而达到动态获取数据的目的。发布/订阅系统一般有两种设计模式,分别是推(Push)和拉(Pull)。ZooKeeper中采用的是推拉接口的方式:客户端向服务端注册自己需要关注的节点,一旦该节点数据发生变更,服务端就会向相应的客户端发送Watcher事件通知,客户端收到这个消息后,需要主动到服务端获取最新的数据。
    应用场景5:负载均衡
    在分布式系统中,负载均衡是一种普遍的技术。ZooKeeper作为一个集群,负责数据的存储以及一系列分布式协调。所有的请求,会通过ZooKeeper通过一些调度策略去协调调度哪一台服务器。

二、Dubbo基础

1、什么是Dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC(远程调用) 实现服务的输出和输入功能,可以和 Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
RPC(Remote Procedure Call Protocol): 远程过程调用:
两台服务器A、B,分别部署不同的应用a,b。当A服务器想要调用B服务器上应用b提供的函数或方法的时候,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义传达调用的数据。
说白了,就是你在你的机器上写了一个程序,我这边是无法直接调用的,这个时候就出现了一个远程服务调用的概念。
在这里插入图片描述
工作原理:

Provider: 暴露服务方称之为“服务提供者”。

Consumer: 调用远程服务方称之为“服务消费者”。

Registry: 服务注册与发现的中心目录服务称之为“服务注册中心”。

Monitor: 统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。

Conrainer: 服务运行容器。
在这里插入图片描述

发布了9 篇原创文章 · 获赞 9 · 访问量 827

猜你喜欢

转载自blog.csdn.net/qq_36908783/article/details/105753240