26-zookeeper+kafka集群的安装部署以及如何简单使用的介绍

多级缓存的架构

主要是用来解决什么样的数据的缓存的更新的啊?

时效性不高的数据,比如一些商品的基本信息,如果发生了变更,假设在5分钟之后再更新到页面中,供用户观察到,也是ok的

时效性要求不高的数据,那么我们采取的是异步更新缓存的策略

时效性要求很高的数据,库存,采取的是数据库+缓存双写的技术方案,也解决了双写的一致性的问题,因此对时效性要求很高的数据我们采用了redis集群去解决,然后通过分析业务去解决双鞋一致性的问题。

思路:解决时效性不高的数据的缓存问题

存数据生产服务,监听一个消息队列,然后数据源服务(商品信息管理服务)发生了数据变更之后,就将数据变更的消息推送到消息队列中

缓存数据生产服务可以去消费到这个数据变更的消息,然后根据消息的指示提取一些参数,然后调用对应的数据源服务的接口,拉取数据,这个时候一般是从mysql库中拉去的

 

1、zookeeper集群搭建

将zookeeper-3.4.5.tar.gz拷贝到/opt/zkdir目录下。
对zookeeper-3.4.5.tar.gz进行解压缩:tar -zxvf zookeeper-3.4.5.tar.gz。
对zookeeper目录进行重命名:mv zookeeper-3.4.5 zk

  • 配置zookeeper相关的环境变量,,环境变量的配置也可以在 /etc/profile里面进行配置
vi ~/.bashrc

export ZOOKEEPER_HOME=/usr/local/zk
export PATH=$ZOOKEEPER_HOME/bin

#使配置生效
source ~/.bashrc
  • 修改zk的配置文件
# 复制一份配置文件
cd zk/conf
cp zoo_sample.cfg zoo.cfg

vi zoo.cfg
#修改:添加数据目录和日志目录文件配置
dataDir=/opt/zkdir/data
dataLogDir=/opt/zkdir/logs 
#新增:server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 IP 地址或/etc/hosts 文件中映射了 IP 的主机名;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。例如server.1=edu-provider-01:2888:3888  其中, 2888 端口号是 zookeeper 服务之间通信的端口。 3888 是 zookeeper 与其他应用程序通信的端口。 edu-provider-01 是在 hosts 中已映射了 IP 的主机名。 
server.0=eshop-cache01:2888:3888    
server.1=eshop-cache02:2888:3888
server.2=eshop-cache03:2888:3888

#创建文件 /opt/zkdir/data
cd /opt/zkdir/
mkdir data
cd data

# 在data下创建myid,编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。如在 zookeeper 上,myid文件内容就是 1。如果只在单点上进行安装配置,那么只有一个 server.1
vi myid
0

在另外两个节点上按照上述步骤配置ZooKeeper,使用scp将zk和.bashrc拷贝到eshop-cache02和eshop-cache03上即可。唯一的区别是标识号分别设置为1和2。

分别在三台机器上执行:zkServer.sh start
检查ZooKeeper状态:zkServer.sh status,应该是一个leader,两个follower
jps:检查三个节点是否都有QuromPeerMain进程

2、kafka集群搭建

scala,就是一门编程语言,现在比较火,很多比如大数据领域里面的spark(计算引擎)就是用scala编写的

将scala-2.11.4.tgz拷贝到/opt/scaladir目录下。
对scala-2.11.4.tgz进行解压缩:tar -zxvf scala-2.11.4.tgz。
对scala目录进行重命名:mv scala-2.11.4 scala

  • 配置scala相关的环境变量,也可以在/etc/profile中编辑scala的环境变量
vi ~/.bashrc

export SCALA_HOME=/usr/local/scala
export PATH=$SCALA_HOME/bin

#使环境生效
source ~/.bashrc

查看scala是否安装成功:scala -version

按照上述步骤在其他机器上都安装好scala。使用scp将scala和.bashrc拷贝到另外两台机器上即可。

 

kafka安装

将kafka_2.9.2-0.8.1.tgz拷贝到/opt/kafkadir目录下。
对kafka_2.9.2-0.8.1.tgz进行解压缩:tar -zxvf kafka_2.9.2-0.8.1.tgz。
对kafka目录进行改名:mv kafka_2.9.2-0.8.1 kafka

  • 配置kafka
# 编辑kafka配置文件
vi /opt/kafkadir/kafka/config/server.properties

broker.id:依次增长的整数,0、1、2,集群中Broker的唯一id
zookeeper.connect=192.168.31.187:2181,192.168.31.19:2181,192.168.31.227:2181

安装slf4j
将slf4j-1.7.6.zip上传到/opt/slf4jdir目录下
unzip slf4j-1.7.6.zip
把slf4j中的slf4j-nop-1.7.6.jar复制到kafka的libs目录下面

 

解决kafka Unrecognized VM option 'UseCompressedOops'问题

# 编辑
vi /opt/kafkadir/kafka/bin/kafka-run-class.sh 

if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then
  KAFKA_JVM_PERFORMANCE_OPTS="-server  -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
fi

去掉-XX:+UseCompressedOops即可

按照上述步骤在另外两台机器分别安装kafka。用scp把kafka拷贝到其他机器即可。
唯一区别的,就是server.properties中的broker.id,要设置为1和2

在三台机器上的kafka目录下,分别执行以下命令后台启动:nohup bin/kafka-server-start.sh config/server.properties &

使用jps检查启动是否成功

使用基本命令检查kafka是否搭建成功

#创建一个测试的topic

bin/kafka-topics.sh --zookeeper 192.168.1.51:2181,192.168.31.1:52:2181,192.168.1.53:2181 --topic test --replication-factor 1 --partitions 1 --create

 

#创建一个生产者producer

bin/kafka-console-producer.sh --broker-list 192.168.1.51:9092,192.168.31.1:52:9092,192.168.1.53:9092 --topic test

 

#创建一个消费者consumer

bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181 --topic test3 --from-beginning

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值