【Dubbo篇】--Dubbo框架的使用
一、前述
Dubbo是一种提供高性能,透明化的RPC框架.是阿里开源的一个框架。
官网地址:http://dubbo.io/
二、架构

组件解释:
Provider: 提供者.发布服务的项目.
Registry: 注册中心.所有提供者必须去注册中心注册自己所有能发布的服务.
Consumer: 消费者.调用服务的项目.
Monitor: 监控中心.监控消费者和提供者调用服务的时间及次数.默认每1分钟向监控中心生成一次统计数据.之间调用必须遵守Dubbo支持的协议.
Container:容器.Dubbo依赖于Spring容器.
执行顺序:
0:由Spring容器启动服务.
1 向注册中心注册服务.
2 消费者向注册中心订阅需要调用的服务.在注册中心的服务列表中寻找需要调用的服务.获取到提供者真实地址.
3 注册中心通知消费提供者的真实地址.如果提供者的服务发生变化,注册中心会自动推送信息给消费者.
4 消费者调用提供者的服务.
5 在调用过程中向监控中心发送数据,进行统计调用时间和调用次数.
6 虚线都是异步请求,实线都是同步请求.
三、Dubbo支持的注册中心
1.Zookeeper注册中心
1.1 优点:支持集群.
1.2 缺点:稳定性受Zookeeper影响.
2.Redis注册中心
1.1 优点:基于服务器双写模式.性能高.
1.2 缺点:要求服务器时间必须一致.
3.Multicast注册中心
3.1 免中心化的注册中心,不需要额外安装软件.
3.2 不支持集群.
4.Simple注册中心
4.1 适用于测试环境的.
四、Dubbo支持的几种协议
1. Dubbo
1.1 基于NIO的协议.性能比较高
1.2 缺点:在单一连接时,传输大文件可能出错.
2.RMI
2.1 RMI是JDK提供的.可以和原生RMI互用.
2.2 缺点:可能出现连接无效情况.
3.Hession
3.1 第三方的Hession.jar
3.2 缺点:短连接性能低.
五、Zookeeper简介
1.分布式协调组件(就是一个软件.)
2.好处:
2.1 高效性
2.2 可扩展性.
3.作用:
3.1 服务发布和订阅(注册使用这个特性)
3.2 集群管理功能(SolrCloud使用这个特性)
3.3 负载均衡
3.4 分布式锁
4.使用java语言编写.
六.使用Maven发布服务的步骤
1.创建dubbo-service项目,只写接口
2.创建dubbo-service-impl项目,需要依赖dubbo-service
3.在pom.xml配置,导入dubbo.jar和zkClient.jar
3.1 <exclusions>不导入哪个依赖包
3.2 spring-context:我们使用的spring版本
3.3 zkClient:连接Zookeeper的客户端工具包
3.4 dubbo: dubbo框架的包
<dependencies>
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
4. 在resources下新建spring配置文件
<beans>可以在dubbo-master.zip\dubbo-master\ dubbo-admin\ src\main\resources\META-INF\spring里面复制
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 在监控中心/admin管理界面中看是哪个项目 -->
<dubbo:application name="dubbo-service-impl"/>
<!-- 配置注册中心 -->
<dubbo:registry protocol="zookeeper" address="192.168.92.130:2181"></dubbo:registry>
<!-- 配置协议 -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 注解扫描 -->
<dubbo:annotation package="com.bjsxt.service.impl"/>
</beans>
5.编写服务实现类
5.1 @Service是Dubbo的注解
import com.alibaba.dubbo.config.annotation.Service;
import com.bjsxt.service.DemoService; @Service
public class DemoServiceImpl implements DemoService {
@Override
public String test(String name) {
return "传递过来的内容:"+name;
}
}
七.使用Maven创建Consummer项目
1.保证Consummer项目中服务方接口
1.1 需要知道服务方接口名称及方法名
2.创建Maven projec,配置pom.xml
2.1 依赖的dubbo-service可以从svn上下载.
<dependencies>
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
3.编写spirng配置文件
3.1 application需要自定义名称
3.2 扫描自己项目中ServiceImpl的@Reference注解
<!-- 在监控中心/admin管理界面中看是哪个项目 -->
<dubbo:application name="dubbo-consummer"/>
<!-- 配置注册中心 -->
<dubbo:registry protocol="zookeeper" address="192.168.92.130:2181"></dubbo:registry>
<!-- 配置协议 -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 注解扫描,扫描@Reference注解 -->
<dubbo:annotation package="com.bjsxt.service.impl"/>
4.编写Service实现类代码
4.1 @Service 把类交给Spring容器
4.2 @Reference给接口注入对象.对象信息从注册中心获取.
import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.bjsxt.service.DemoService;
import com.bjsxt.service.MyService; @Service
public class MyServiceImpl implements MyService {
@Reference
private DemoService demoService;
@Override
public void test() {
String result = demoService.test("张三");
System.out.println(result);
}
}
5、编写测试代码:
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-consummer.xml");
MyServiceImpl bean = ac.getBean("myServiceImpl", MyServiceImpl.class);
bean.test();
}
}
八.Admin管理界面
1.本质:web项目,war打包项目
2.直接把dubbo-admin-2.5.3放入到tomcat(linux/window都可以)中
3.启动tomcat.
4.关闭tomcat.
5.删除dubbo-admin-2.5.3.war
5.1 防止下次启动tomcat后重新解压,导致修改内容无效
6.进入解压后文件夹dubbo-admin-2.5.3/WEB-INF/中修改dubbo.properties文件
6.1 第一行为注册中心地址
6.2 第二行是管理员用户名和密码
6.3 第三行是游客的用户名个和密码

【Dubbo篇】--Dubbo框架的使用的更多相关文章
- Dubbo分布式服务框架入门(附project)
要想了解Dubbo是什么,我们不防先了解它有什么用. 使用场景:比方我想开发一个网上商城项目.这个网上商城呢,比較复杂.分为pc端web管理后台.微信端销售公众号,那么我们分成四个项目,pc端站点,微 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
- [推荐]dubbo分布式服务框架知识介绍
[推荐]dubbo分布式服务框架知识介绍 CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程 http://wenku.baidu.com/view/20e8f36bf ...
- Dubbo分布式服务框架入门使用
概念: Provider 暴露服务方称之为"服务提供者". Consumer 调用远程服务方称之为"服务消费者". Registry 服务注册与发现的中心目录服 ...
- dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示
dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示 By:客 授客 QQ:1033553122 欢迎加入全国软件测试交流 QQ 群:7156436 ...
- Dubbo 分布式服务框架简介
1.分布式服务框架 1.1 Dubbo 简介 Dubbo 是一个分布式服务框架,以及阿里巴巴内部的 SOA 服务化治理方案的核心框架.其功能主要包括:高性能 NIO 通讯及多协议集成,服务动态寻址与路 ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(二)
上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...
- 160719、Spring + Dubbo + zookeeper (linux) 框架搭建
转载一篇博客,写得不错(至少我参考一下搭建成功了) 转载地址:http://my.oschina.net/wangt10/blog/522799 dubbo简介 节点角色说明: Provider: 暴 ...
- 高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架
在过去持续分享的几十期阿里Java面试题中,几乎每次都会问到Dubbo相关问题,比如:“如何从0到1设计一个Dubbo的RPC框架”,这个问题主要考察以下几个方面: 你对RPC框架的底层原理掌握程度. ...
随机推荐
- 测试APPEND INSERT是否产生UNDO信息的过程
D:\>sqlplus test/testSQL*Plus: Release 11.1.0.6.0 - Production on 星期三 06月 29 19:46:41 2016Copyrig ...
- 开机进入grub命令行之后。。。。
最近由于经常整理自己电脑上的文件,难免都会遇到误删系统文件或者操作失误导致系统不能够正常进入的情况.这时就会出现grub错误的提示,只能输入命令才能进入系统.那么该输入什么命令呢?其实非常简单. gr ...
- api_response.go
, "METHOD_NOT_ALLOWED"} }, Log(l), V1)(w, req, nil) }) }
- 夏娜的菠萝包 JDFZ1098
Description 问题描述:夏娜很喜欢吃菠萝包,她的经纪人RC每半个月就要为她安排接下来的菠萝包计划.今天是7月份,RC又要去商场进货买菠萝包了.这次RC总共买了N种菠萝包,每种一个.每个菠萝包 ...
- java中的单例模式与静态类
单例模式与静态类(一个类,所有方法为静态方法)是另一个非常有趣的问题,在<Java中有关单例模式的面试问题>博文中露掉了,由于单例模式和静态类都具有良好的访问性,它们之间有许多相似之处,例 ...
- (4)STM32使用HAL库实现串口通讯——理论讲解
一.查询模式 1. 二.中断模式 1.中断接收. 1.1先看中断接收的流程(以 USART2 为例) 在启动文件中找到中断向量 USART2_IRQHandler 找到USART2_IRQHandle ...
- 列表(list) ----python
Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型 ...
- C++ set用法以及迭代器用法
有关set的一些常用函数 1.begin() / end() 返回首/尾元素迭代器 2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已 ...
- .NET Core 迁移躺坑记
最近将自己负责的一个核心接口系统从.Net Framework迁移到了.Net Core. 整体过程,从业务层面说一般般吧(整体还好但还是搞的业务有感,没出严重故障)但是技术层面上感觉其实并没有达到要 ...
- Java实现大批量数据导入导出(100W以上) -(一)导入
最近业务方有一个需求,需要一次导入超过100万数据到系统数据库.可能大家首先会想,这么大的数据,干嘛通过程序去实现导入,为什么不直接通过SQL导入到数据库. 大数据量报表导出请参考:Java实现大批量 ...