dubbo入门使用
主要参考dubbo官网demo
此处采用zookeeper注册中心进行服务协调管理
真个项目结构如下所示:

dcommon : 主要用于定义服务接口, 为dconsumer,dprovider所依赖
dparent: maven父工程
dconsumer: 服务消费者
dprovider: 服务提供者
首先需要在dconsumer和dprovider工程pom文件中加入相关dubbo及zookeeper客户端依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<!-- 此处zk客户端使用curator(从 2.3.0 版本开始支持可选 curator 实现) 客户端, 也可选择使用zkclient 客户端(从 2.2.0 版本开始缺省为 zkclient 实现) -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
dcommon服务接口定义如下,DemoService.java:
package com.yinz.service;
public interface DemoService {
String sayHello(String word);
}
dprovider服务实现如下,DemoServiceImpl.java:
package com.yinz.service.impl;
import com.yinz.service.DemoService;
public class DemoServiceImpl implements DemoService{
@Override
public String sayHello(String word) {
return "hello : " + word;
}
}
xml配置如下,application.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"> <dubbo:application name="demo-provider"/> <!-- 延迟暴露服务,spring容器初始化成功后再暴露服务,防止当服务器实现类中有 applicationContext.getBean() 的调用时出错,
强烈建议全部采用 IoC 注入的方式使用 Spring的Bean。-->
<dubbo:provider delay="-1"/> <!-- register="false" 禁用注册
subscribe="false" 禁用订阅 -->
<dubbo:registry address="zookeeper://47.98.11.199:2181"/> <!-- 配置dubbo协议线程模型 -->
<dubbo:protocol name="dubbo" port="20880" accesslog="true"
dispatcher="message" threadpool="fixed" threads="100"/> <!--cluster="failover" 为默认配置,此处可省略 -->
<dubbo:service interface="com.yinz.service.DemoService" ref="demoService"
retries="2" cluster="failover" loadbalance="roundrobin"/>
<bean id="demoService" class="com.yinz.service.impl.DemoServiceImpl"/> </beans>
加载spring配置代码如下:
package com.yinz.provider;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"classpath:application.xml"});
context.start();
// press any key to exit
System.in.read();
}
}
dconsumer,服务消费端配置引用远程服务,application.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"> <dubbo:application name="demo-consumer"/>
<dubbo:registry address="zookeeper://47.98.11.199:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:reference interface="com.yinz.service.DemoService" id="demoService" async="true"/>
</beans>
加载spring配置并调用远程服务
package com.yinz.consumer; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.yinz.service.CallbackListener;
import com.yinz.service.CallbackService;
import com.yinz.service.DemoService; public class Consumer { public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"classpath:application.xml"});
context.start();
// obtain proxy object for remote invocation
DemoService demoService = (DemoService) context.getBean("demoService");
String hello = demoService.sayHello("world");
System.out.println(hello);
System.in.read();
}
}
此外dubbo支持容错、负载均衡等高级特性,可参考dubbo官方文档介绍
另外附上dubbo管理控制台官网安装教程
dubbo入门使用的更多相关文章
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- Dubbo入门—搭建一个最简单的Demo框架
一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...
- 基于MAVEN使用IDEA创建dubbo入门项目图文教程
花了很长时间没有找到一个很详细的图文教程来学习dubbo入门框架,故记录下来. 一: 项目工程目录 简单介绍项目目录结构: 二: 创建父工程 具体操作步骤: 1,打开IDEA,按下面步骤来 File- ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Dubbo入门---搭建一个最简单的Demo框架(转)
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- dubbo入门之微服务客户端服务端配置
正常一个服务不会只做客户端或者只做服务端,一般的微服务都是服务与服务相互调用,那么,应该怎么配置呢?接着之前的dubbo入门之helloWorld,我们再改改配置,即可实现正常的微服务架构.与之前相比 ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...
- 企业级应用,如何实现服务化三(dubbo入门案例)
今天是六一儿童节,从千里之外的广州,回到了贵州老家,真好!好山好水好心情,好了接着写点东西.这是企业级应用,如何实现服务化系列的第三篇.在上一篇:企业级应用,如何实现服务化二(dubbo架构)中,认识 ...
- 电商系统的演变可以看出架构演变 Dubbo入门 远程过程调用 需要解决的问题
Dubbo入门---搭建一个最简单的Demo框架 - CSDN博客 https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo背景和 ...
- dubbo学习实践(2)之Dubbo入门Demo
开篇之前,先来了解下dubbo服务治理与技术架构,直接看图 dubbo技术架构图: 1. 新建dubbo项目,目录结构如下 代码说明: 1.代码分为Provider(服务提供方)与consumer(服 ...
随机推荐
- Item 33: 避免覆盖(hiding)“通过继承得到的名字”
莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...
- windows下进程管理常用命令
1.查看当前正在运行的进程 tasklist 注: /im 后为映像名称参数:/f 为强行终止,可以通过 taskkill /? 查看更多帮助 2.强制杀死映像名称为imagename的进程,映像名 ...
- 《大话操作系统——做坚实的project实践派》(5)
有人说我不是仅仅会玩X86吗?我如今铁板钉钉的申明:我事实上兼通:ARM.IA-32.IA-32e.AMD64. 了解MIPS.但没做过MIPS由于确实没有对应的MIPS硬件平台.
- swift 使用匿名函数初始化属性
swift 使用匿名函数初始化属性 匿名函数格式: { //代码体 }() 大括号是定义函数体的,小括号()是调用函数体的. 为什么不写一个函数然后调用函数呢?为何用匿名函数呢? 主要还是代码的简洁性 ...
- Android Tint着色与帧动画结合
需求 最近遇到一个需求: 要求根据后台接口给的色值 显示不同色值的帧动画(UI给了三张透明色的图) 正常的帧动画 是配置在xml里三张静态图片 然后加载一下就完事了现有的静态图片是透明的 还没有填充颜 ...
- Sun公司开源游戏服务器
http://www.360doc.com/content/11/0307/12/2902158_98866885.shtml http://www.cnblogs.com/daidu/archive ...
- 算法笔记_053:最优二叉查找树(Java)
目录 1 问题描述 2 解决方案 1 问题描述 在了解最优二叉查找树之前,我们必须先了解何为二叉查找树? 引用自百度百科一段讲解: 二叉排序树(Binary Sort Tree)又称二叉查找树(B ...
- IFA Basics
The inverted-F antenna is shown in Figure 1. While this antenna appears to be a wire antenna, after ...
- DNS使用的是TCP协议还是UDP协议简析
DNS使用的是TCP协议还是UDP协议简析 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况 ...
- phpMyAdmim和Yii 连接Mysql报错。
故障: 之前phpMyAdmim和Yii连接Mysql都好着的.某天,同一时候出现例如以下报错: 1.linux下phpMyAdmin 出现 "缺少 mysqli 扩展,请检查 PHP 配置 ...