dubbo zookeeper

zookeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中,应用系统一致性问题的,例如怎样避免同时操作同一数据而造成脏读的问题。
zookeeper本质上是一个分布式的小文件存储系统。提供类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效的管理。从而用来维护和监控存储数据的状态变化。通过监控这些数据状态的变化,从而达到基于数据的集群管理。诸如:统一命名服务(dubbo),分布式配置管理(sorl的配置集中管理)、分布式消息队列(sub/pub)\分布式锁、分布式协调等功能。
zookeeper集群中的角色,leader(是事务请求的唯一调度和处理者,保证集群事务处理的顺序性,同时是集群内部各个服务器的调度者),follower处理客户端非事务性的请求,转发事务请求给leader,参与集群leader选举投票
observer观察者,针对访问量比较大的集群还可以增加观察者的角色,观察者只负责处理非事务的请求,并将事务性的请求转发给leader,不参数leader的选举

zookeeper的特性:
全局数据一致性
可靠性
顺序性
数据更新原子性
实时性

zookeeper的shell操作
ls /查看根目录下的目录情况
ls 路径 (/是根目录,查看某路径下的文件情况)
get 路径 获取该路径下的内容及详细信息
create -s 路径 内容 创建一个顺序目录,它是有编号的
create -e 路径 内容 创建一个临时目录 当该客户端关闭后就消失了
create 路径 内容 创建的是一个永久的路径
create -e -s 创建一个临时的顺序化节点

set 路径 内容 修改目录的值

delete 路径 删除目录

rmr 路径 递归的删除目录 因为有子目录的目录不能被直接删除,可以被递归删除

dubbo是一个提供远程服务调用的分布式框架
节点角色的说明
provider:暴露服务的服务提供方
consumer:调用远程服务的服务消费方
register:服务注册的注册中心
container:服务运行的容器
monitor:统计服务的调用次数和时间的监控中心

调用过程
服务容器负责启动,加载,运行服务的提供者
服务提供者在启动的时候向注册中心注册自己提供的服务
服务消费者在启动的时候向注册中心订阅自己所需的服务
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
服务消费者从提供者列表中基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,每分钟发送一次统计数据到监控中心

zookeeper 三个端口(默认)的含义
2181为客户端提供服务的
2888集群内机器通讯使用(leader监听此端口)
3888选举leader使用

zookeeper集群的搭建过程
1.首先将压缩文件上传到linux服务器
2.解压缩至指定的文件夹
3.创建data目录
4.进入conf文件夹中将zoo_sample.cfg改名为zoo.cfg
5.修改zoo.cfg中的datadir为自己新建的data的目录
6.在data目录下创建一个myid文件,并依次写入1,2,3代表服务器id
7.将集群中的服务器清单添加在zoo.cfg下方 server.服务器id=ip地址:2888:3888
server.2=ip地址:2888:3888
server.3=ip地址:2888:3888

zookeeper集群能容忍的是宕机不超过半数

solrCloud是基于solr和zookeeper的分布式搜索方案
为什么要搭建solrCloud集群 因为可以实现高可用,高并发,扩展存储

zookeeper集群在solrcloud中的作用
1.集中管理solr集群配置文件
2.solr集群管理(选举主从)

solrCloud集群搭建的准备工作
1.准备4台安装好solr的tomcat(即在tomcat中的webapp里面解压了solr.war并将solr需要的jar包放到了tomcat的jar包中) 以及准备好solrhome 并配置好各自的solrhome(在tomcat的webapp里面的solr文件夹的conf-》web.xml里配置solrHOME的地址)

搭建solrcloud集群
1.让tomcat能找到zookeeper集群
进入bin/catalina.sh 在注释的JAVA_OPTS下面加 JAVA_OPTS=“-DzkHost=ip1:2181,ip2:2181,ip3:2181”
2.让solrCloud找到它的tomcat的ip和端口 在每个solrhome下的solr.xml

3.让zookeeper统一管理solr的配置文件,需要把solrhome下的collection1/conf目录上传至zookeeper 即上传solr的索引库配置文件,传一份就可以

传的话需要借助于solr中一个脚本,先将solr压缩包上传解压至linux,进入example/scripts/cloud-scripts目录
执行上传命令
./zkcli.sh -zkhost 192.168.25.140:2181,192.168.25.140:2182,192.168.25.140:2183 -cmd upconfig
-confdir /usr/local/solrhomes/solrhome-1/collection1/conf -confname myconf
注意:一定是在zookeeper集群启动的情况下上传

solr集群中某一个节点启动失败,我们可以先看看tomcat日志有没有报错,没有的话,将log4j.properties的配置文件放入到solr的web_INFO里面的classes目录里,查看solr的详细启动日志,发现了错误原因

redisCluster redis集群 是在redis3.0之后才出现的集群版本

redisCluster的分布式存储机制-槽 共有16384个槽,存入的key先经过crc16算法计算出一个值,该值模上16384得出一个值 然后根据得出的值存入到对应的节点中

redisCluster的容错机制-投票
当超过半数的master节点连接故障节点超时的话,会自动启动故障转移操作,故障节点对应的从节点自动升级为主节点

如果集群中某个节点的主节点挂掉后,它没有从节点,那么整个集群就进入fail状态

集群的准备工作
1.安装C语言环境 及安装ruby rubygems
2.上传redis压缩文件至linux系统
3.解压文件
4.make
5.make install 安装每个redis节点
6.拷贝redis.conf到每个redis节点的bin目录下

集群的配置
1.修改redis.conf的端口号 设置为后台程序 开启集群能力
2.启动每一个redis节点
3.上传redis-3.0.0.gem ,安装 ruby用于搭建redis集群的脚本。
4.使用 ruby 脚本搭建集群
进入redis源码目录中的src目录(有redis-trib.rb脚本) 执行下面的命令
./redis-trib.rb create --replicas 1 192.168.25.140:7001 192.168.25.140:7002 192.168.25.140:7003
192.168.25.140:7004 192.168.25.140:7005 192.168.25.140:7006

redis集群存储数据的话,在任意节点都可以查询到集群中存储的数据,但是keys * 只能查询到本节点存储的key

查看集群状态,可以使用刚才的ruby脚本 check 任一节点ip:端口号

或者在集群客户端内执行 cluster nodes 命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值