dubbo集群应用
前面写了一篇dubbo的基础应用篇,单机版 http://www.cnblogs.com/yun965861480/p/6257670.html,
这次将集群的相关配置记录下来。
1.zookeeper,dubbo-admin,dubbo应用我就不写了,还是沿用基础应用篇的demo
http://www.cnblogs.com/yun965861480/p/6257670.html
2.对于集群的配置使用,只需要在服务端暴露接口的时候添加2个参数就可以了
cluster="failover" loadbalance="random"
配置如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 -->
<dubbo:application name="dubbo_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.158.129:2181" check="false" subscribe="false" register=""></dubbo:registry>
<!-- 要暴露的服务接口 -->
<dubbo:service interface="com.yum.service.DubboServer" ref="dubboService" accesslog="/apps/logs/dubbo.log"
cluster="failover" loadbalance="random" version="1.0"/> <dubbo:service interface="com.yum.service.DubboProvider" ref="dubboProvider" accesslog="/apps/logs/dubbo.log"
cluster="failover" loadbalance="random" version="1.0"/>
<!-- expose this service through dubbo protocol, through port 20880 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- which service interface do we expose? -->
<!-- bean配置 -->
<bean id="dubboService" class="com.qihh.dubbo.service.impl.DubboServerImpl" />
<bean id="dubboProvider" class="com.qihh.dubbo.service.impl.DubboProviderImpl" /> </beans>
2.将服务端打包放到服务器上,我是在虚拟机上操作的,同一台上放置了2台tomcat,部署2台应用。
在当然在启动之前需要更改tomcat的端口(在tomcat的配置目录 conf/server.xml中),dubbo对外提供的端口
<dubbo:protocol name="dubbo" port="20880" /> 也要不一样。我这里设置了 20880,20881
3.启动服务端,我们查看下注册中心,发现提供者有2个了。同一个IP下的不同端口。
4.启动测试,启动客户端调用,
package com.dubbo.test; import java.util.ArrayList;
import java.util.List; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.yum.entity.Person;
import com.yum.service.DubboProvider;
import com.yum.service.DubboServer; /**
*Administrator
*2016年8月10日
*TODO
*/
public class DubboClientTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "dubbo_client.xml" });
context.start();
DubboServer dubboServer = (DubboServer) context.getBean("dubboService");
DubboProvider dubboProvider = (DubboProvider) context.getBean("dubboProvider");
Person person = new Person();
person.setAge(22);
person.setName("qihh");
List list = new ArrayList();
list.add("abc");
list.add("123");
list.add("zzzz");
person.setList(list);
System.out.println(dubboServer.hello("hello world"));
System.out.println(dubboProvider.PersonInfo(person)); } }
查看dubbo的日志,这里日志地址在服务接口定义时已经指定了,这里是 /apps/logs/dubbo.log,第二台是 /apps/logs/dubbo2.log
打开2个日志,发送请求,发现服务被路由到了2台应用上了。表示,dubbo应用集群成功。
4.关于参数
cluster="failover" loadbalance="random"
可参考
http://dubbo.io/Registry+Config-zh.htm
http://liureying.blog.163.com/blog/static/61513520141145473756/
dubbo如何集群,同一个服务部署多台机或者同一台机不同端口在注册中心注册。客户端就通过访问规则访问集群内的不同节点的服务。
集群策略
Failover Cluster :失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用)
Failfast Cluster :快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作
Failsafe Cluster : 失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作
Failback Cluster : 失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作
Forking Cluster : 并行调用多个服务器,只要一个成功即返回,通常用于实时性要求较高的读操作
Broadcast Cluster : 广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于更新提供方本地状态
集群访问策略
Random LoadBalance : 随机,按权重设置随机概率(推荐使用)
RoundRobin LoadBalance : 轮循,按公约后的权重设置轮循比率
LeastActive LoadBalance : 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差,使慢的机器收到更少请求。
ConsistentHash LoadBalance : 一致性Hash,相同参数的请求总是发到同一提供者,当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动
声明需要暴露的服务接口
<!-- 声明需要暴露的服务接口 -->
<!--loadbalance="random" 随机,按权重设置随机概率。-->
<!--loadbalance="roundrobin" 轮循,按公约后权重设置轮循比率。-->
<!--loadbalance="LeastActive" 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。-->
<!--loadbalance="ConsistentHash" 一致性Hash,相同参数的请求总是发到同一提供者。-->
<dubbo:service interface="com.hwz.demo.DemoService" ref="demoService" cluster="failsafe" loadbalance="random />
dubbo集群应用的更多相关文章
- Dubbo学习(二) Dubbo 集群容错模式-负载均衡模式
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- 用隧道协议实现不同dubbo集群间的透明通信
用隧道协议实现不同dubbo集群间的透明通信 前言 笔者最近完成了一个非常有意思的隧道机制(已在产线运行),可以让注册到不同zookeeper之间的dubbo集群之间能够正常进行通信.如下图所示: 例 ...
- dubbo集群容错解决方案
dubbo主要核心部件 Remoting:网络通信框架,实现了sync-over-async和request-response消息机制. RPC:一个远程过程调用的抽象,支持负载均衡.容灾和集群功能. ...
- Dubbo集群容错
转自dubbo官网文档http://dubbo.apache.org/zh-cn/blog/dubbo-cluster-error-handling.html Design For failure 在 ...
- dubbo集群服务下一台服务挂了对服务调用的影响
一.问题描述:项目中2台dubbo服务给移动端提供查询接口,移动端反应说查询时而很快(秒刷),时而很慢(4-5秒). 二.问题分析: 1.问题猜想:网络不稳定原因导致,但是切换公司wifi和手机4G, ...
- Dubbo集群配置和官方文档
集群配置: https://blog.csdn.net/zh520qx/article/details/63679908 https://www.cnblogs.com/hd3013779515/p/ ...
- dubbo集群容错之LoadBalance
原文地址:Dubbo 源码分析 - 集群容错之 LoadBalance dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance.基于最少活跃调用数算法的 Le ...
- Dubbo 集群容错有几种方案?
集群容错方案 说明 Failover Cluster 失败自动切换,自动重试其它服务器(默认) Failfast Cluster 快速失败,立即报错,只发起一次调用 Failsafe Cluster ...
- zookeeper+dubbo集群
1.https://no-east.gitbooks.io/origin-zookeeper/content/zookeeper_gong_zuo_yuan_li.html 2.http://blog ...
随机推荐
- 51nod 1103 N的倍数
1103 N的倍数 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8, ...
- 第四次程序设计作业 C++计算器计算及命令行的使用 前缀表达式方法实现
关键词:前缀中缀后缀表达式 波兰式 命令行 myGithub 一.前言 很有意思的开发和学习经历,从刚刚开始看到作业思考半天到现在的Debug过程,对我来说都或多或少有所提升. 也许这个时候自己挺迷茫 ...
- LA 3644 易爆物
https://vjudge.net/problem/UVALive-3644 简单的并查集题目. #include<iostream> using namespace std; + ; ...
- NOI 4977 怪盗基德的滑翔翼(LIS)
http://noi.openjudge.cn/ch0206/4977/ 描述: 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围 ...
- HTTP错误 404.17 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 出现这种情况的原因通常是因为先安装了Framewo ...
- [BZOJ]|[Ural] Formula 1-----插头DP入门
1519. Formula 1 Time limit: 1.0 secondMemory limit: 64 MB Background Regardless of the fact, that Vo ...
- hdu 1370 || poj 1006 简单的中国剩余定理或者暴力
Biorhythms Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Probl ...
- Springboot 学习笔记 之 Day 1
SpringBoot快速入门 https://spring.io/ 1. SpringBoot简介Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个 ...
- VSS_01
1.设置 工作目录 右击 CSDRGis --> Set Working Folder.. --> D:\CSDRGis 2.下载 源码 右击 CSDRGis --> Get Las ...
- Codeforces 827C - DNA Evolution
827C - DNA Evolution 思路: 写4*10*10个树状数组,一个维度是4(ATCG),另一个维度是长度len,另一个维度是pos%len,因为两个pos,如果len和pos%len相 ...