dubbo
dubbo的架构
节点角色说明:
节点 角色名称
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
虚线都是异步访问,实线都是同步访问 蓝色虚线:在启动时完成的功能 红色虚线(实线)都是程序运行过程中执行的功能
调用关系说明:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
注册中心 zookeeper
Zookeeper树型目录服务:
流程说明:
服务提供者(Provider)启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的URL 地址
服务消费者(Consumer)启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
监控中心(Monitor)启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者URL 地址
安装 zookkper
下载地址:http://archive.apache.org/dist/zookeeper/
在虚拟机中安装 jdk
解压缩 下载好的安装包 tar -zxvf zookeeper-3.4.6.tar.gz -C 要存放的位置
进入 zookkper 的目录下 创建一个 data 文件夹 命令: mkdir data
进入 zookkper 的conf 目录下 如 /root/apps/zookeeper-3.4.6/conf
如下:
复制一份配置文件
cp zoo_sample.cfg zoo.cfg
编辑配置文件
vim zoo.cfg
在 zoo.cfg 配置文件中找到 dataDir 修改成下面内容 data目录修改成自己的目录
dataDir = /root/apps/zookeeper-3.4.6/data
启动和停止 zookkper
进入 zookkper 的 bin 目录
启动 zookkper
./zkServer.sh start
停止 zookkper
./zkServer.sh stop
查看服务状态
./zkServer.sh status
客户端链接
./zkCli.sh
Dubbo 初识
服务提供方
创建一个空工程 添加一个 maven model 这个model 叫 provider
在 pom.xml 文件中添加以下内容
配置web.xml
创建服务接口
创建服务实现类
在src/main/resources下创建applicationContext-service.xml
服务消费者
创建 maven 工程 dubbo_consumer , pom.xml和上面相同,修改 tomcat 插件的端口号为 8082即可
配置 web.xml 文件
将 上面服务提供者的 Helloservice 接口复制到当前工程的 service 目录下
编辑 controller
在 src/main/resources 下创建 applicationContext-web.xml
Dubbo 配置说明
包扫描
<dubbo:annotation package=“com.jsj.controller” />
服务提供者和服务消费者都需要配置,表示包扫描,作用是扫描指定包(包括子包)下的类。
如何不配置 包扫描 也可以使用下面形式发布服务.
<dubbo:service interface=“com.jsj.service.HelloService” ref=“helloService” protocol=“dubbo”></dubbo:service>
消费者可以使用以下引用服务
<dubbo:reference id=“helloSerive” interface=“com.jsj.service.HelloService”></dubbo:reference>
负载均衡
配置 负载均衡策略 ,,既可以在服务提供者一方配置,也可以在服务消费者一方配置
服务消费方配置负载均衡策略
服务调用方配置负载均衡策略