一、前述

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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://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 {@Overridepublic 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 {@Referenceprivate DemoService demoService;@Overridepublic 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 第三行是游客的用户名个和密码

转载于:https://www.cnblogs.com/LHWorldBlog/p/8653311.html

【Dubbo篇】--Dubbo框架的使用相关推荐

  1. dubbo分布式服务框架(高级特性篇)

    目录 1.序列化 2.地址缓存 3.超时 4.重试 5.多版本 6.负载均衡 7.集群容错 8.服务降级 本文参考b站黑马程序员dubbo入门课程 视频连接:黑马程序员Dubbo快速入门,Java分布 ...

  2. (Java每日一谈:第四日——幸福的四象限)主流框架:Dubbo基础实战篇--Dubbo快速入门

    在昨天的Dubbo基础篇中,小编对Dubbo的相关基础理论知识进行了一个详细的解释,如果大家对这一块的知识感到好奇,推荐大家可以去阅读一下小编昨天写的Dubbo相关知识点,今天小编会进行Dubbo实用 ...

  3. 【RPC框架、RPC框架必会的基本知识、手写一个RPC框架案例、优秀的RPC框架Dubbo、Dubbo和SpringCloud框架比较】

    一.RPC框架必会的基本知识 1.1 什么是RPC? RPC(Remote Procedure Call --远程过程调用),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术. ...

  4. Dubbo面试 - 如何自己设计一个类似 Dubbo 的 RPC 框架?

    Dubbo面试 - 如何自己设计一个类似 Dubbo 的 RPC 框架? 面试题 如何自己设计一个类似 Dubbo 的 RPC 框架? 面试官心理分析 说实话,就这问题,其实就跟问你如何自己设计一个 ...

  5. 160719、Spring + Dubbo + zookeeper (linux) 框架搭建

    转载一篇博客,写得不错(至少我参考一下搭建成功了) 转载地址:http://my.oschina.net/wangt10/blog/522799 dubbo简介 节点角色说明: Provider: 暴 ...

  6. Dubbo (二) ---------- Dubbo 框架

    目录 一.Dubbo 概述 二.基本架构 三.Dubbo 支持的协议 四.第一个 Dubbo 项目 直连方式 1) 创建服务提供者 :订单服务 2) 创建服务消费者 :商品网站 五.dubbo 服务化 ...

  7. 高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架

    优知学院 2019-01-22 18:43:51 之前持续分享的几十期阿里Java面试题中,几乎每次必问Dubbo,比如:"如何从0到1设计一个Dubbo的RPC框架",其实主要考 ...

  8. 分布式服务框架Dubbo集成Nacos框架实现注册中心

    在讨论Nacos之前,我们先讨论一下CAP理论 CAP理论是分布式场景绕不开的重要理论 一致性:所有节点在同一时间具有一样的数据: 可用性:保证每个请求不管成功还是失败都有响应: 分区容忍性:系统中任 ...

  9. Dubbo与SpringCloud框架详解

    一.互联网架构演进 1.互联网项目架构 1. 互联网项目与传统项目 互联网项目架构的特点: 用户多 流量大,并发高 海量数据 易受攻击 功能繁琐 变更快 传统项目和互联网项目的不同: 用户体验: 美观 ...

  10. 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解

    微服务架构 与 Dubbo 微服务框架.SpringCloud 微服务框架 详解 什么是微服务架构? 微服务架构就是将单体的应用程序分成多个应用程序,这一个应用程序就组成一个服务,这多个应用程序就组成 ...

最新文章

  1. 初始化栈、入栈、出栈、栈空、数制转换函数和主函数,实现1348转换成8进制的功能。
  2. Robots at Warehouse(搜索+vector的使用)
  3. python alpha beta_python – 使用alphabeta TicTacToe找到最佳移动
  4. C#实现渐变颜色的Windows窗体控件
  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...
  6. 前端学习(3292):function
  7. linux打开二进制文件后终端乱码处理
  8. ajax jsonp post php,※ajax的post方式注意点※及jsonp的封装
  9. 今天tiktok小社群更新 第5个项目行业案例
  10. element-ui 解决 table 里包含表单验证的问题!
  11. nodejs后台系列--第五篇-购买云服务器,安装宝塔面板
  12. 番外篇--1. 简历优化
  13. yii2 php7 mongodb,Yii2中MongoDB的使用方法-CURD
  14. CVPR 2020 | 旷视研究院提出优化领域自适应物体检测性能的类别正则化框架
  15. A Linux Kernel Miracle Tour - 启程
  16. 卷积法求解系统的零状态响应_因果系统的零状态响应的一种简易计算方法
  17. 关于“未使用GUID分区表”无法安装的解决方案
  18. android 远吗编译 刷机 小米,小米10/小米10 Pro系统源代码现已开源,能刷机才是为发烧而生...
  19. 【win】WINDOWS10系统自带桌面整理工具
  20. NXP bootloader

热门文章

  1. ApiDoc 一键生成注释
  2. 【Android】怎样烧写qcn文件
  3. 【杂谈】需要mark的一些东西
  4. 蓝桥杯.历届试题: 核桃数量
  5. Bootstrap 教程 之 Less 入门文档
  6. 关于C++ const成员的一些细节
  7. HZNU 2019 Summer training 7
  8. 深入理解C语言内存管理
  9. 第四回. 实数系的性质
  10. WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案...