发表于: 2019-10-31 20:09:27
1 3559
一、今天完成的事
1.在服务器上配置zookeeper
cd /usr/local
tar zxvf zookeeper-3.3.6.tar.gz
在zookeeper的跟目录下创建两个文件夹data和datalog
mkdir data
mkdir datalog
在data目录下创建一个myid的文件
vim myid
将入zookeeper的conf目录下,复制zoo_sample.cfg文件并自定义配置
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
.png)
启动zookeeper
cd bin/
./zkServer.sh start
.png)
zk启动后查看zk的启动情况
./zkServer.sh status
.png)
上传程序检测
java -jar server.jar
.png)
访问成功
.png)
2.配置两台server,一台server挂掉另一台能访问。
查看了dubbo的官方文档
.png)
看了半天官方文档发发现是用于集群,我这里没用到集群,本来想能够简单一点就能随机访问,还是只能用老方法,try/catch
复制一份sever,修改端口
.png)
在client中复制一份consumer.xml
.png)
程序中加入try/catch实现随机访问
ClassPathXmlApplicationContext context;
int code = new Random().nextInt(2);
if (code == 1) {
try {
context = new ClassPathXmlApplicationContext( new String[] {"/spring/consumer1.xml"});
log.info(1+"========================================");
} catch (Exception e) {
context = new ClassPathXmlApplicationContext( new String[] {"/spring/consumer.xml"});
log.info(2+"========================================");
}
} else {
try {
context = new ClassPathXmlApplicationContext( new String[] {"/spring/consumer.xml"});
log.info(3+"========================================");
} catch (Exception e) {
context = new ClassPathXmlApplicationContext( new String[] {"/spring/consumer1.xml"});
log.info(4+"========================================");
}
}
context.start();
StudentService studentService = (StudentService)context.getBean("studentService");
启动访问成功
.png)
程序中可以看到用的是哪个配置文件,执行的哪一步
.png)
这个方法还是太麻烦了,又找到了特别简单的方法
直接修改server端暴露服务的端口
.png)
.png)
dubbo自带均衡负载。。。
上传到服务器上
先开启sever1
.png)
能够访问
.png)
再开启sever2
.png)
也能访问
.png)
二、遇到的问题
server传到服务器上,后台启动会自动挂掉,前台启动不会挂
.png)
三、收获
zookeeper部署到服务器上的时候,由于没有开启端口导致连接失败,可以开放端口和直接就关闭防火墙。
开放端口
查询 netstat -anp 所有开放端口信息,或者netstat -an | grep 23查询指定端口信息
关闭端口号
iptables -A OUTPUT -p tcp --dport 端口号-j DROP
打开端口号
iptables -A INPUT -p tcp --dport 8099 -j ACCEPT
保存设置
service iptables save
直接一点就关闭防火墙
linux关闭防火墙
查看默认防火墙状态
firewall-cmd --state
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
Dubbo 负载均衡
负载策略
Dubbo 提供了多种均衡策略,缺省为 random 随机调用。
A、Random LoadBalance
随机,按权重设置随机概率。
在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
B、 RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率。
存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
C、 LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
D、ConsistentHash LoadBalance
一致性 Hash,相同参数的请求总是发到同一提供者。
当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者, 不会引起剧烈变动。算法参见:http://en.wikipedia.org/wiki/Consistent_hashing。
缺省只对第一个参数 Hash,如果要修改,请配置<dubbo:parameter key="hash.arguments"
value="0,1" />
配置方式:
<dubbo:service interface="..." loadbalance="roundrobin" />
或
<dubbo:reference interface="..." loadbalance="roundrobin" />
随机:loadbalance=” random”
轮询:loadbalance=” roundrobin”
最少活跃:loadbalance=” leastactive”
一致性 Hash:loadbalance=” consistenthash”
四、明天的计划
学习springboot
评论