Dubbojava
1、Dubbo的简介(原先是阿里的产品,后来成了Apache)
一、Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(远程过程调用)远程服务调用方案,以及SOA(面向服务的架构)服务治理方案。你们一块儿干同一个活:集群 你们一块儿干不一样的活:分布式
Dubbo架构图linux
dubbo执行流程
一、首先服务提供方经过dubbo容器来启动
二、而后去注册中心去注册服务提供方的服务
三、服务消费方想去调用服务提供方,必须先得注册中心订阅服务,注册中心会给服务消费方一个通知(服务的代理对象)
四、而后拿着代理对象的地址真正的去调用服务提供方web
2、Registry 注册中心
一、 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注册中心.
三、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环境变量spring
3、zookeeper安装
下载地址:zookeeper.apache.org
一、修改/etc/profile,配置jdk环境变量
二、安装Zookeeper单机版步骤
三、上传Zookeeper压缩包,并解压
mkdir /usr/local/zookeeper
tar zxvf zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper/
四、 在解压后的文件夹中新建data文件夹。做为zookeeper数据存放文件夹
mkdir data
全路径:/usr/local/zookeeper/zookeeper-3.4.12/data
五、 进入zookeeper的conf文件夹中把zoo_sample.cfg复制一份命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
六、修改zoo.cfg中dataDir的值为data文件夹的路径
[root@localhost conf]# vim zoo.cfg
dataDir=/usr/local/zookeeper/zookeeper-3.4.12/data
七、进入Zookeeper的bin文件夹(/usr/local/zookeeper/zookeeper-3.4.12/bin),使用zkServer.sh启动和查看状态
八、 ./zkServer.sh start 启动命令
九、 ./zkServer.sh status 查看状态
查看状态时显示下面效果表示安装并启动成功,其中Mode:standalone表示单机版
中止zookeeper服务:[root@localhost bin]# ./zkServer.sh stopapache
4、dubbo协议
服务提供者经过指定的协议来暴露服务。协议由提供方指定,消费方被动接受。推荐使用dubbo协议,除此以外还支持RMI 协议和Hessian 协议
dubbo协议的特色及配置:
dubbo缺省协议采用单一长链接和NIO异步通信,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的状况
dubbo缺省协议不适合传送大数据量的服务,好比传文件,传视频等,除非请求量很低。
配置:<dubbo:protocol name="dubbo" port="20880" />vim
5、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类windows
启动成功截图
服务消费方(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)tomcat
测试总结:网络
二:注解式开发(service )
服务提供方(provider)[注解式开发]
1.在service实现类上加上service注解,表示当前类对外提供远程服务
2.修改dubbo-provider.xml
服务消费方(consumer)[注解式开发]
1.修改dubbo-consumer.xml
2.修改PeopleConsumerServiceImpl
3.修改测试类
服务消费方(consumer)[注解式开发]修改结束
6、registry可视化管理界面
一、把dubbo-admin-2.5.3.war粘贴到tomcat中(windows下或linux下均可以)
二、启动tomcat,而后关闭tomcat(经过tomcat解压该war包),并删除webapps中dubbo-xxx.war(若是不删则启动后从新覆盖)
三、修改dubbo-admin-2.5.3/WEB-INF/dubbo.properties
第一行须要改写成本身Zookeeper的地址及端口
第二行是管理员root的密码为root
第三行是用户guest的密码为guest
四、关闭防火墙或放行8080端口,启动tomcat。浏览器访问。访问默认用户名和密码:root/root (不要忘记启动zookeeper)