本站网址
www.kjyfx.com

『Java』Dubbo远程调用服务框架的搭建及调用

一、配置注册中心(这里采用Zookeeper)

Zookeeper下载地址:http://zookeeper.apache.org/releases.html

1、Zookeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,负责服务的协调调度,当客户端发起请求时,返回正确的服务器地址。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

 

2、微服务注册中心工作原理

 

调用步骤:

  1. 当服务提供者启动时,将服务名称:IP地址:端口写入注册中心.
  2. 当注册中心接收提供者的写入请求时,会动态维护服务列表数据.
  3. 当消费者启动时会链接注册中心.获取注册中心的服务列表数据保存到本地.
  4. 当用户进行业务请求时,会通过消费者获取服务端(提供者)的数据.消费者根据用户的请求类型查询服务列表数据.,之后根据负载均衡的策略.实现RPC远程访问.

5.注册中心有心跳检查机制.如果连续3次没有任何响应.则断定当前服务器宕机.首先会更新注册中心本地的服务列表数据.之后进行全网广播,之后及时更新消费者端的数据. 更新时注册中心是阻塞的.

 

3、Zookeeper安装

  3.1、安装Zookeeper之前先安装JDK

 jdk安装参考:http://www.kjyfx.com/4101.html

 

3.2、上传Zookeeper安装文件

上传到/usr/local/src目录下并解压

解压指令:tar -xvf zookeeper-3.4.8.tar.gz

 

再在zookeeper根目录下创建文件夹data与log两个目录

指令:mkdir data log

 

复制conf目录下的zoo_sample.cfg配置文件并更改名称,再进行zoo.cfg配置文件的编辑

复制指令:cp zoo_sample.cfg zoo.cfg

修改指令:vim zoo.cfg

配置文件修改内容
dataDir=/usr/local/src/zookeeper/data
dataLogDir=/usr/local/src/zookeeper/log

 zookeeper的启动与关闭,到bin目录下执行以下指令

启动指令:sh zkServer.sh start
关闭指令:sh zkServer.sh stop
查看状态:sh zkServer.sh status

 

3.3、zookeeper集群搭建

在zookeeper根目录中创建新的文件夹zkClusters

创建指令:mkdir zkCluster

 

在zkClusters目录下创建zk1、zk2、zk3三个文件夹

指令:mkdir zk1 zk2 zk3

 

在zk1、zk2、zk3三个目录下分别创建data与log两个目录

指令:mkdir {zk1,zk2,zk3}/{data,log}

 

分别在zk1/zk2/zk3中的data文件夹中创建新的文件myid,其中的内容依次为1/2/3,与zk节点号对应

指令:vim myid

 

编辑配置文件,将zoo_sample.cfg 复制为zoo1.cfg之后修改配置文件

复制指令:cp zoo_sample.cfg zoo1.cfg
编辑指令:vim zoo1.cfg


修改内容:
#相对应的data与log目录
dataDir=/usr/local/src/zookeeper/zkCluster/zk1/data
dataLogDir=/usr/local/src/zookeeper/zkCluster/zk1/log

#zoo1中clientPoring为2181,zoo2中为2182,zoo3为2183
clientPort=2181
server.1=192.168.161.132:2887:3887
server.2=192.168.161.132:2888:3888
server.3=192.168.161.132:2889:3889

 

zoo1.cfg配置完成后将zoo1.cfg复制2份.之后需要修改对应的文件夹目录,和不同的端口即可

指令:cp zoo1.cfg zoo2.cfg
指令:cp zoo1.cfg zoo3.cfg

 

集群测试,在bin目录下通过下面的命令启动zk集群

启动指令zoo1:sh zkServer.sh start zoo1.cfg
启动指令zoo2:sh zkServer.sh start zoo2.cfg
启动指令zoo3:sh zkServer.sh start zoo3.cfg

关闭指令:sh zkServer.sh stop zoo1.cfg
查看状态(主从关系):sh zkServer.sh status  zoo1.cfg

说明:Zookeeper集群中leader负责监控集群状态,follower主要负责客户端链接获取服务列表信息.同时参与投票.

 

二、dubbo框架

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

 

项目调用

1、Dubbo主要采用生产消费者模式,这里以UserDubboService为例

 

2、在common项目中创建UserDubboService接口,在生产者端创建实现类UserDubboServiceImpl(标注@Service(timeout=3000)注解,使用的是Dubbo的注解,超时设置),实现UserDubboService接口,UserDubboServiceImpl再去调用Dao层即可

生产者端yml文件配置

dubbo:
  scan:
    basePackages: com.kjyfx  #配置包扫描
  application:            #服务名称必须定义
    name: provider-user
  registry:               #注册中心
    address: zookeeper://192.168.38.128:2181?backup=192.168.38.128:2182,192.168.38.128:2183
  protocol:
    name: dubbo           #zookeeper节点名称
    port: 20880           #RPC通信 dubbo内部通信端口,每个提供者的端口应不一样,20881、20228等

 

2、消费者端的yml文件配置

dubbo:
  scan:
    basePackages: com.kjyfx
  application:
    name: consumer-user
  registry:
    address: zookeeper://192.168.38.128:2181?backup=192.168.38.128:2182,192.168.38.128:2183

 

消费端Controller层代码,使用dubbo的Reference注解,timeout属性也可以设置3000,check属性设置为false即可,使其不会因为启动顺序的先后而报错

@Reference(check = false) 
private DubboUserService userService;

 

赞(2) 打赏
未经允许不得转载:所有资源由个人搜集整理自互联网,仅用于学习交流使用,请勿用于其他商业用途。如有侵权,请联系2448941602@qq.com删除科技云分享 » 『Java』Dubbo远程调用服务框架的搭建及调用
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

更多资源,尽在微信公众号【科技云分享】

关注公众号加入Q群

我叫科技云,感谢您的支持~

支付宝扫一扫打赏

微信扫一扫打赏