ps -ef |grep java 查看运行的java程序
--------对传统工程的改造
1.maven父配置
2.common(公用类和配置)
3.edu-facade-user 用户服务接口(接口)
4.edu-service-user 用户服务实现(服务提供)
5.edu-web-boss 服务消费者(调用服务)
2345依赖1,45依赖3
45之间没有依赖,因此5调用的都是3接口
4里的spring-dubbo-provider.xml里配置dubbo参数,并公布3的服务接口(dubbo:service)
5里配置dubbo连接参数,并访问服务接口(dubbo:reference)
-
zookeeper能做什么
数据的发布/订阅(配置中心:disconf) 、 负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、
master选举(kafka、hadoop、hbase)、分布式队列、分布式锁
-
zookeeper的特性
- 顺序一致性
从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
- 原子性
所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、要么全都不应用
- 可靠性
一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
- 实时性
一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)
-
zookeeper集群
zookeeper集群, 包含三种角色: leader / follower /observer
observer 是一种特殊的zookeeper节点。可以帮助解决zookeeper的扩展性(如果大量客户端访问我们zookeeper集群,需要增加zookeeper集群机器数量。从而增加zookeeper集群的性能。 导致zookeeper写性能下降, zookeeper的数据变更需要半数以上服务器投票通过。造成网络消耗增加投票成本)
- observer不参与投票。 只接收投票结果。因此不会造成网络消耗增加投票成本
- 不属于zookeeper的关键部位。
在zoo.cfg里面增加
peerType=observer
server.1=192.168.11.129:2181:3181:observer
server.2=192.168.11.131:2181:3181
server.3=192.168.11.135:2181:3181
安装zookeeper
1.修改操作系统,增加主机名映射
su root
vi /etc/hosts
# zookeeper servers
192.168.3.71 edu-provider-01
2.下载zookeeper-3.4.6
http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
3.解压zookeeper安装包
tar -zxvf zookeeper-3.4.6.tar.gz
4.在/home/wusc/zookeeper-3.4.6目录创建以下目录
cd /home/wusc/zookeeper-3.4.6
mkdir data
mkdir logs
5.将zookeeper-3.4.6/conf目录下的zoo_sample.cfg拷贝一份,命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
6.修改zoo.cfg,修改
vi zoo.cfg
dataDir=/home/wusc/zookeeper-3.4.6/data
dataLogDir=/home/wusc/zookeeper-3.4.6/logs
clientPort=2181
server.1=edu-provider-01:2888:3888(server.1=192.168.3.71:2888:3888)
2888端口号是zookeeper服务之间的通信端口
3888是zookeeper与其他应用程序通信的端口
edu-provider-01是安装第一步映射了IP的主机名
initLimit:这个配置是用来配置zookeeper接受客户端(zookeeper服务器集群中连接到Leader的Follower服务器)
初始化最长能忍受多少个心跳时间间隔数。当超过10个心跳间隔后zookeeper服务器还没收到客户端返回的信息,
那么表明这个客户端(Follower)连接失败,总耗时5*2000=10秒
svnLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度。不能超过2*2000=4秒
server.A=B:C:D :其中A是一个数字,表示这个是第几号服务器;B是这个服务器的IP地址或者是映射名;C表示
这个服务器与集群中的Leader服务器交换信息的端口;D表示如果Leader挂了,需要一个端口来端口来重新进行选举
一个新的Leader。
7.在dataDir=/home/wusc/zookeeper-3.4.6/data下创建myid文件
vi myid
1(对应第六步的A)
8.wusc用户下配置环境变量,增加zookeeper配置
vi /home/wusc/.bash.profile
#zookeeper env
export ZOOKEEPER_HOME=/home/wusc/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
source /home/wusc/.bash.profile
9.在防火墙中打开端口2181、2888、3888
su root
chkconfig iptables on
service iptables start
vi /etc/sysconfig/iptables
#zookeeper
添加
-A INPUT -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --dport 3888 -j ACCEPT
重启防火墙
service iptables restart
查看防火墙状态
service iptables status
10.启动测试zookeeper(用wusc用户启动)
zkServer.sh start
输入jps查看进程,QuorumpeerMain是zookeeper对的进程,启动正常
查看状态
zkServer.sh status
查看zookeeper服务输出信息,文件在/home/wusc/zookeeper-3.4.6/bin/zookeeper.out
tail -500f zookeeper.out
11.停止zookeeper进程
zkServer.sh stop
12.配置zookeeper开机使用wusc用户启动
su root
vi /etc/rc.local
加入
su - wusc -c '/home/wusc/zookeeper-3.4.6/bin/zkServer.sh start'