Dubbo分布式服务框架搭建

Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。以下是一个简单的dubbo架构图。

Dubbo分布式服务框架搭建

dubbo

笔者从刀耕火种的原始web开发时代一直走到现在,感慨良多。从单体应用,到mvc模型,再到使用webservice,企业服务总线,一直到dubbo,每一次理念的升级,都是带来开发工作的解放。互联网技术日新月异,活到老学到老是必须的。

Zookeeper 搭建

从官网下载zookeeper作为服务注册中心。解压后进入conf目录,重命名zoo_simple.cfg为zoo.cfg.根据是windows还是linux其中zkServer.cmd或zkServer.sh。这样服务就启动起来了。注意clientPort=2181,客户端使用这个端口和zookeeper通信。现在假设zookeeper所在机器域名为zooregistry.com。后文将会用到。

dubbo monitor安装

下载dubbo-monitor-simple-2.4.1-assembly.tar.gz 解压。打开conf/dubbo.properties,启用配置

dubbo.registry.address=zookeeper://zooregistry.com:2181。使用bin/start.bat或bin/start.sh其中dubbo monitor。monitor可以用来监控分布式系统的运行状态,并提供上线或下线服务等功能。

dubbo admin安装

下载dubbo-admin-2.5.8 这个war包解压。修改WEB-INF/dubbo.properties。修改配置为

dubbo.registry.address=zookeeper://zooregistry.com:2181.这里可以修改用户名和密码。将修改后的包放到tomcat/webapp/ROOT/目录并启动既可以。

dubbo admin可以简单理解dubbo admin的加强版,两者各有所长。这个步骤是非必须的,笔者建议还是配置下。

Spring开发环境搭建

Api provider

以上配置的注册中心和监控中心后,就可以进行系统开发了。我们使用maven管理项目。

服务提供者和消费者需要一套接口,那么我们使用maven创建一个jar项目.例如我们在定义一个接口。

package io.kuaibao.provider.service;

import java.io.Serializable;

public interface ServerTimeService extends Serializable {

String getTime();

}

然后使用maven创建消费者web项目,和一个提供者jar项目。

Provider开发

定义提供者bean文件applicationProvider20883.xml。以下只列出核心代码,有需求的话可以在github上下载源代码试用。

<!-- 提供方应用信息,用于计算依赖关系 -->

<dubbo:application name="dubbo_provider3"/>

<!-- 使用zookeeper注册中心暴露服务地址 -->

<dubbo:registry address="zookeeper://zooregistry:2181" />

<!-- 用dubbo协议在20883端口暴露服务 -->

<dubbo:protocol name="dubbo" port="20883" />

<dubbo:monitor protocol="registry"/>

<!-- 声明需要暴露的服务接口 -->

<dubbo:annotation package="io.kuaibao.provider.service" />

实现服务:

package io.kuaibao.provider.service.impl;

import i.kuaibao.provider.service.ServerTimeService;

import java.text.SimpleDateFormat;

import java.util.Date;

@com.alibaba.dubbo.config.annotation.Service

public class TimeServiceImpl implements ServerTimeService {

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

@Override

public String getTime() {

System.out.println("invoke");

return simpleDateFormat.format(new Date());

}

}

启动服务者:

public class Main {

public static void main(String[] args) throws IOException {

ClassPathXmlApplicationContext classPathXmlApplicationContext=new ClassPathXmlApplicationContext("classpath*:applicationProvider20883.xml");

System.in.read();

}

}

如果要启动多个服务提供者只需要修改<dubbo:protocol name="dubbo" port="20883" />并执行即可。

Consumer开发

在spirngmvc.xml文件中进行一下配置:

<dubbo:application name="dubbo_consumer222" />

<!-- 使用multicast广播注册中心暴露发现服务地址 -->

<dubbo:registry address="zookeeper://zooregistry:2181" />

<dubbo:annotation package="io.kuaibao.consumer.controller"/>

<dubbo:consumer timeout="30000" />

<dubbo:monitor protocol="registry"/>

<!-- 自动扫描 @Controller-->

<context:component-scan base-package="io.kuaibao.consumer.controller"/>

注意服务在什么地方使用,就将dubbo配置放在什么容器中。我们这里直接在controller中使用,所以讲dubbo放在mvc容器中。

此时我们可以在controller中使用@com.alibaba.dubbo.config.annotation.Reference注解注入需要的service。

以上只是初略的搭建了一个开发和运行环境。其中zookeeper搭建集群等咳没有讲,留给读者研究。

Java学习资料获取(复制下段连接至浏览器即可)
data:text/html;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值