Dubbo

Dubbo

一、Dubbo的简介(原先是阿里的产品,后来成了Apache)
1、Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(远程过程调用)远程服务调用方案,以及SOA(面向服务的架构)服务治理方案。大家一起干同一个活:集群  大家一起干不同的活:分布式
Dubbo架构图


dubbo执行流程
1、首先服务提供方通过dubbo容器来启动
2、然后去注册中心去注册服务提供方的服务
3、服务消费方想去调用服务提供方,必须先得注册中心订阅服务,注册中心会给服务消费方一个通知(服务的代理对象)
4、然后拿着代理对象的地址真正的去调用服务提供方

二、Registry 注册中心
1、 Registry 注册中心 
1.1 注册中心是整个Dubbo架构重要部分,是Provider和Customer桥梁(服务提供方 服务消费方)
1.2 Dubbo支持很多种注册中心类型(Multicast注册中心、Zookeeper注册中心、Redis注册中心、Simple注册中心)
1.2.1 Zookeeper 注册中心。从Dubbo 2.3.3 开始支持。支持基于网络的集群方。也是官方推荐的方式,但是稳定性受限Zookeeper的稳定性 
1.2.2 Multicast注册中心,去中心化注册中心,不需要单独单机注册中心,只适用于小型应用或测试环境。除此之外还有Redis注册中心和Simple注册中心. 
3、Zookeeper 简介 
3.1 ZooKeeper是一个开放源码的分布式应用程序协调服务组件。是Hadoop的一个子项目
3.2 特点:具有高可靠性,可扩展性,分布式,可配置的协调机制
3.3 作用 
3.3.1 数据发布与订阅(注册中心),Dubbo应用此特性 
3.3.2 集群管理与Master选举 ,Solr集群应用此特性 
3.3.3 命名服务(Naming Service) 
3.3.4 分布式通知/协调 
3.3.5 负载均衡 
3.3.6 分布式锁 
3.3.7 分布式队列 
3.4 底层使用java编写.所以使用Zookeeper时需要配置JDK环境变量

三、zookeeper安装
下载地址:zookeeper.apache.org 
1、修改/etc/profile,配置jdk环境变量 
2、安装Zookeeper单机版步骤 
3、上传Zookeeper压缩包,并解压 
mkdir /usr/local/zookeeper 
tar zxvf zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper/
4、 在解压后的文件夹中新建data文件夹。作为zookeeper数据存放文件夹
mkdir data 
全路径:/usr/local/zookeeper/zookeeper-3.4.12/data
5、 进入zookeeper的conf文件夹中把zoo_sample.cfg复制一份命名为zoo.cfg 
cp zoo_sample.cfg zoo.cfg

6、修改zoo.cfg中dataDir的值为data文件夹的路径
[root@localhost conf]# vim zoo.cfg 
dataDir=/usr/local/zookeeper/zookeeper-3.4.12/data

7、进入Zookeeper的bin文件夹(/usr/local/zookeeper/zookeeper-3.4.12/bin),使用zkServer.sh启动和查看状态
8、 ./zkServer.sh start 启动命令

9、 ./zkServer.sh status  查看状态

查看状态时显示下面效果表示安装并启动成功,其中Mode:standalone表示单机版 
停止zookeeper服务:[root@localhost bin]# ./zkServer.sh stop

四、dubbo协议
服务提供者通过指定的协议来暴露服务。协议由提供方指定,消费方被动接受。推荐使用dubbo协议,除此之外还支持RMI 协议和Hessian 协议
dubbo协议的特点及配置:
dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
配置:<dubbo:protocol name="dubbo" port="20880" />

五、dubbo开发基础代码
一:配置式开发
服务提供方(provider)[配置式开发]
1.新建Maven Project,命名为dubbo-provider,其中Packaging方式选择jar即可.Dubbo是不依赖于web容器
2.配置provider的pom.xml文件(配置基本的依赖gav:dubbo依赖、zookeeper客户端、spring-context)
因为Dubbo需要在zookeeper中进行注册,需要上传数据给zookeeper,所以需要客户端功能.需要下载zkClient

3.新建实体类,实现Serializable接口(pojo)
4.新建service接口和service接口的实现类
5.新建Spring配置文件(约束头信息可在官方文档User Guide中查找,官方文档里的-换成英文的)
配置式开发的spring配置文件(spring配置文件路径classpath:/META-INF/spring/*.xml)

spring-provider配置文件的头信息及需要配置的五项基本内容

Maven项目结构一览(配置式开发dubbo-provider)

启动dubbo-provider =>使用Dubbo的Main类

启动成功截图

服务消费方(consumer)[配置式开发]
1.pom.xml依赖 =>跟服务提供方保持一致
2.dubbo-consumer的配置文件
<!-- 配置应用名称 -->
<dubbo:application name="dubbo-consumer"/>
<!-- 配置注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.199.83:2181"></dubbo:registry>
<!-- 声明调用服务接口 (调用的服务提供方的暴露出来的service接口)-->
<dubbo:reference id="peopleProviderService" interface="com.boom.service.PeopleProviderService"></dubbo:reference>
3.service接口和service实现类的代码(没用上)
4.测试类

Maven项目结构一览(配置式开发dubbo-consumer)

测试总结:

二:注解式开发(service )
服务提供方(provider)[注解式开发]
1.在service实现类上加上service注解,表示当前类对外提供远程服务

2.修改dubbo-provider.xml

服务消费方(consumer)[注解式开发]
1.修改dubbo-consumer.xml

2.修改PeopleConsumerServiceImpl

3.修改测试类

服务消费方(consumer)[注解式开发]修改结束

六、registry可视化管理界面
1、把dubbo-admin-2.5.3.war粘贴到tomcat中(windows下或linux下都可以)
2、启动tomcat,然后关闭tomcat(通过tomcat解压该war包),并删除webapps中dubbo-xxx.war(如果不删则启动后重新覆盖)
3、修改dubbo-admin-2.5.3/WEB-INF/dubbo.properties
第一行需要改写成自己Zookeeper的地址及端口
第二行是管理员root的密码为root
第三行是用户guest的密码为guest

4、关闭防火墙或放行8080端口,启动tomcat。浏览器访问。访问默认用户名和密码:root/root (不要忘记启动zookeeper)

原文地址:https://www.cnblogs.com/cao-yin/p/10561762.html