博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[dubbo] dubbo 基础使用
阅读量:6755 次
发布时间:2019-06-26

本文共 6424 字,大约阅读时间需要 21 分钟。

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)。

其核心部分包含:
1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。      

2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

另外附上测试demo:

1.新建maven工程:dubbo,作为服务的提供者

 依赖jar:

2.22.1
4.1.6.RELEASE
2.5.3
3.4.6
junit
junit
4.11
test
org.glassfish.jersey.ext
jersey-spring3
${jersey.version}
org.glassfish.jersey.media
jersey-media-json-jackson
${jersey.version}
org.glassfish.jersey.ext
jersey-mvc
${jersey.version}
org.glassfish.jersey.core
jersey-client
${jersey.version}
javax.servlet
jstl
1.2
org.aspectj
aspectjweaver
1.8.7
com.alibaba
druid
1.0.13
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-aspects
${spring.version}
mysql
mysql-connector-java
5.1.6
org.mybatis
mybatis
3.3.0
org.mybatis
mybatis-spring
1.2.3
com.alibaba
fastjson
1.2.7
com.alibaba
dubbo
${dubbo.version}
org.apache.zookeeper
zookeeper
${zookeeper.version}
com.github.sgroschupf
zkclient
0.1

 

  web.xml:

Archetype Created Web Application
contextConfigLocation
classpath:spring-dubbo.xml
org.springframework.web.context.ContextLoaderListener
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*

spring-dubbo.xml:

接口和实现类:

package com.xwolf.dubbo.dao;public interface HelloDao {        String sayHello(String name);}
package com.xwolf.dubbo.dao.impl;import com.xwolf.dubbo.dao.HelloDao;public class HelloDaoImpl implements HelloDao {    public String sayHello(String name) {        return "Hello,"+name+" Dubbo 欢迎你!";    }}

将工程部署即可,服务提供者创建完成。

 

2.服务调用

新建java Project ,导入jar。

spring-dubbo-consumer.xml:

测试接口:

package com.xwolf.dubbo.dao;public interface HelloDao {        String sayHello(String name);}

 

 测试:

package com.xwolf.dubbo.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.xwolf.dubbo.dao.HelloDao;public class TestDubbo {        public static void main(String[] args) {                ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(                  new String[] { "spring-dubbo-consumer.xml" });          context.start();                 HelloDao helloDao = (HelloDao) context.getBean("helloDao");              System.out.println(helloDao.sayHello("wo cao"));    }}

运行:

注意问题:

工程中暴露的接口路径和名称一定要完全一致,否则会抛出异常。

 

转载地址:http://mzweo.baihongyu.com/

你可能感兴趣的文章
《用chsh选择shell》-linux命令五分钟系列之十二
查看>>
parseDouble() 的用法
查看>>
shell的基础语法
查看>>
另类L2TP Tunnel
查看>>
CentOS 6.9使用Shell脚本实现FTP自动上传和下载文件
查看>>
#51CTO学院四周年#我与51CTO不得不说多的故事
查看>>
java函数参数默认值
查看>>
远程关机对企业的意义
查看>>
Kafka笔记整理(三):消费形式验证与性能测试
查看>>
WINPE集成SCSI/RAID驱动
查看>>
我们为什么需要大数据?
查看>>
单例模式-singleton
查看>>
自动布局下的iPhone 6 plus等比例放大,且UITextfield失败关于placeholder的原因
查看>>
利用div实现邮件收件人的输入框
查看>>
我的友情链接
查看>>
单页布局
查看>>
我的友情链接
查看>>
综合布线详细方案设计
查看>>
rhel6.3下安装GCC4.8.1
查看>>
大图片生成缩略图 导致imagecreatefromjpeg 内存崩溃问题
查看>>