dubbo详解及demo实例

一、dubbo例子1(简单示例)

二、dubbo例子2(检查依赖)

三、dubbo集群容错

四、负载均衡策略

五、线程模型

六、直连提供者

七、多注册中心

八、多版本

九、异步调用

十、结果缓存

十一、并发控制

十二、令牌验证

十三、路由规则(某些机房提供服务,有些不提供服务)

 

一、dubbo例子1(简单示例)

由于Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。(官网示例:http://dubbo.apache.org/zh-cn/docs/user/preface/usage.html

我这里举个例子,例子demo下载(提取码:s08v)

结构如下

 

主要关注SampleServiceImpl和SampleService

代码如下

SampleService.java(服务接口类)

package xjd.dubbo.sample.provider;

import java.util.List;

public interface SampleService {

	String sayHello(String name);

	public List getUsers();

}

SampleServiceImpl.java(服务接口实现类)
package xjd.dubbo.sample.provider.impl;

import java.util.ArrayList;
import java.util.List;

import xjd.dubbo.sample.provider.SampleService;

public class SampleServiceImpl implements SampleService {
	
	public String sayHello(String name) {
		return "Hello " + name;
	}

	public List getUsers() {
		List list = new ArrayList();
		User u1 = new User();
		u1.setName("jack");
		u1.setAge(20);
		u1.setSex("m");

		User u2 = new User();
		u2.setName("tom");
		u2.setAge(21);
		u2.setSex("m");

		User u3 = new User();
		u3.setName("rose");
		u3.setAge(19);
		u3.setSex("w");

		list.add(u1);
		list.add(u2);
		list.add(u3);
		return list;
	}
}

现在我想把服务对外暴露,那么我们就要使用dubbo了。由于dubbo与spring紧密结合,我们查看sample-provider.xml。配置如下

<?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
        ">

	<!-- 具体的实现bean -->
	<bean id="sampleService" class="xjd.dubbo.sample.provider.impl.SampleServiceImpl" />

	<!-- 提供方应用信息,用于计算依赖关系 -->
	<dubbo:application name="sample-provider" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
<!-- 	<dubbo:registry address="zookeeper://192.168.1.111:2181?backup=192.168.1.112:2181,192.168.1.113:2181" /> -->
	<dubbo:registry address="zookeeper://IP:2181" />

	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />

	<!-- 声明需要暴露的服务接口  写操作可以设置retries=0 避免重复调用SOA服务 -->
	<dubbo:service retries="0" interface="xjd.dubbo.sample.provider.SampleService" ref="sampleService" />

</beans>

一般在工作中,会把这个2个类达成一个jar包发布到linux上。

这里我为了节省时间,我用一个main方法直接启动

代码如下

Provider.java

package xjd.dubbo.sample.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Provider {

	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "sample-provider.xml" });
		context.start(); 
		System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
	}
}

 

以上是Provider端。下面我们看consumer端。同样的consumer也有一个SampleService.java这个类于Provider端的SampleService.java是一模一样的。也就是说,consumer端要用到Provider端的接口也需要有,这样消费端才能使用Provider端的接口。

consum

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值