ITKeyword,专注技术干货聚合推荐

注册 | 登录

远程服务调用 Dubbo分布式框架

标签: dubbo 分布式

相关推荐:Dubbo分布式服务框架入门(附工程)

要想了解Dubbo是什么,我们不防先了解它有什么用。 使用场景:比如我想开发一个网上商城项目,这个网上商城呢,比较复杂,分为pc端web管理后台,微信端销售公众

Dubbo一、Dubbo介绍Dubbo 是一个分布式服务框架,用于提高性能和透明化的RPC远程服务调用。为什么要用Dubbo最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间的解耦合,或者最大限度的分耦合。原理:首先有个服务器,提供注册服务,称之为注册中心。服务提供方连接注册中心,将对应的服务配置到注册中心中。服务消费方连接到注册中心,通过注册中心,调用服务提供方提供的方法或服务。注册中心使用的软件:zookeeper和redis ,官方推荐使用zookeeper二、注册中心搭建本次教程时搭建单机版的zookeeper使用CentOS 6.5系统1、将zookeeper-xxx.tar.gz上传到虚拟机2、解压到/usr/local文件夹中 tar -zxvf zookeeper-xxx.tar.gz -C /usr/local/zookeeper3、进入/usr/local/zookeeper 目录 cd /usr/local/zookeeper4、创建data目录,用于存储数据,创建logs目录,用于记录日志 mkdir data logs5、进入conf目录 cd conf6、复制zoo_sample.cfg 并命名为zoo.cfg,因为系统默认时读取的zoo.cfg配置文件 cp zoo_sample.cfg zoo.cfg7、编辑zoo.cfg 文件。配置数据存储目录,以及日志存储目录 vim zoo.cfgdataDir=/usr/local/zookeeper-3.4.6/data/logDir=/usr/local/zookeeper-3.4.6/logs/8、进入bin目录,启动zookeeper服务cd bin启动服务 ./zkServer.sh start查看服务状态: ./zkServer.sh satus## 三、配置服务提供方

1、配置dubbo-provider.xml文件。

步骤:

第一步:配置服务方名称

第二步:连接注册中心

第三步:配置提供方,ip以及端口

第四步:配置对外提供的接口<?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:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:task="http://www.springframework.org/schema/task"

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-4.0.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!--配置服务提供方名称-->

<dubbo:application name="sport-service-product"/>

<!-- 连接zookeeper注册中心 192.168.200.128:2181 -->

<dubbo:registry address="192.168.200.128:2181" protocol="zookeeper"></dubbo:registry>

<!-- 对外提供服务的端口号

默认20880 -->

<dubbo:protocol host="127.0.0.1" port="20880"></dubbo:protocol>

<!-- 对外暴露的接口

ref为接口对应的实现类

-->

<dubbo:service interface="cn.lx.sport.service.TestService" ref="testService"></dubbo:service></beans>接口代码public interface TestDao {

void insert(TestS ts);}实现类代码@Service("testService")@Transactionalpublic class TestServiceImpl implements TestService{

@Autowired

private TestDao testDao;

@Override

public void insert(TestS ts) {

// TODO Auto-generated method stub

testDao.insert(ts);

int i =10/0;

}}## 四、配置服务消费方

1、配置消费方配置文件 dubbo-customer.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:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:task="http://www.springframework.org/schema/task"

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

相关推荐:(十五) Thunder分布式RPC框架

Thunder(QQ 群 471164539)发布在淘宝代码基地 http://code.taobao.org/p/Thunder/框架支持两种方式的序列化,Java对象和字节数组的序列化和反序列化,Java

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-4.0.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 配置dubbo消费方 -->

<!--配置消费方名称

-->

<dubbo:application name="sport-console"/>

<!--注册zookeeper 连接

192.168.200.128:2181

-->

<dubbo:registry address="192.168.200.128:2181" protocol="zookeeper"></dubbo:registry>

<!-- 获取服务

id值 必须和服务方提供的id值一致 也即服务方配置ref一致,才能注入成功

-->

<dubbo:reference interface="cn.lx.sport.service.TestService"

id="testService"></dubbo:reference></beans>注意:接口为公共接口,必须在服务方和消费方的项目中都要有,而服务方中给出具体的实现类。Controller代码@Controllerpublic class TestController {

//自动注入远程调用的接口实现类

@Autowired

private TestService testService;

@RequestMapping("test")

public String test(){

TestS ts = new TestS();

ts.setName("范冰冰2");

ts.setSex("女");

testService.insert(ts);

return "test";

}}因为POJO类要进行传输,所以一定要实现Serializable,代码如下:public class TestS implements Serializable{

/**

*

*/

private static final long serialVersionUID = 3982580692962054581L;

private Integer id;

private String name;

private String sex;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}}注意:启动服务时,首先要启动服务提供方,再启动服务消费方,否则会报异常五、Dubbo优化1、连接超时问题解决在开发过程中,由于要使用调试模式,人为控制程序的执行顺序,会导致程序的执行时间延长,而Dubbo中,默认服务消费方连接服务的超时时间为10ms,时间过多,会影响我们的调试,为了解决这个问题,可以在服务消费方的dubbo的配置文件中,配置超时时间,配置方式如下:<!--

配置全局超时时间

默认单位为ms--><dubbo:consumer timeout="600000" ></dubbo:consumer>2、消费方连接检查服务提供方问题按照现在的配置,启动服务器时,我们每次都需要先启动服务提供方,才能启动服务消费方,否则会报无法连接异常,操作起来较为繁琐,我们可以通过配置文件来让消费方在启动服务时,不自动检查服务提供方,具体配置如下:<!--

配置全局超时时间--><dubbo:consumer timeout="600000" check="false"></dubbo:consumer>check=false 需要注意,如果服务消费方配置了log4j,依然会提示报错,但是不影响服务器的运行。3、消费方直连方式连接服务方在开发中,如果都是通过注册中心进行连接,需要一直开启注册中心服务,如果电脑配置相对较差的话,可能较为卡顿,可以 使用消费方直连方式连接服务方。而且配置相对较为简单。服务方配置<dubbo:registry address="N/A" protocol="zookeeper"></dubbo:registry><!-- 对外提供服务的端口号

默认20880 --><dubbo:protocol host="127.0.0.1" port="20880"></dubbo:protocol>消费方配置<!-- 配置直连服务方,则不连接注册中心 --><dubbo:registry address="N/A"></dubbo:registry><!--使用直连时,需要配置一个url属性--><dubbo:reference interface="cn.lx.sport.service.product.BrandService"

id="brandService"

url="dubbo://127.0.0.1:20880"></dubbo:reference>

$(function () {

$('pre.prettyprint code').each(function () {

var lines = $(this).text().split('\n').length;

var $numbering = $('<ul/>').addClass('pre-numbering').hide();

$(this).addClass('has-numbering').parent().append($numbering);

for (i = 1; i <= lines; i++) {

$numbering.append($('<li/>').text(i));

};

$numbering.fadeIn(1700);

});

});

相关推荐:【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)

Dubbo与Zookeeper、Spring整合使用Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的S

Dubbo一、Dubbo介绍Dubbo 是一个分布式服务框架,用于提高性能和透明化的RPC远程服务调用。为什么要用Dubbo最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间的解耦合,...

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。