当一个人先从自己的内心开始奋斗,他就是个有价值的人

【Dubbo】

主要内容

  1. Dubbo简介
  2. Dubbo架构讲解
  3. Dubbo支持的协议
  4. Dubbo支持的注册中心
  5. 第一个Dubbo的Provider
  6. Admin管理界面搭建
  7. 完成Dubbo的Consumer
  8. 完整Dubbo项目演示

一、 Dubbo简介

1. 官方说明

Apache Dubbo 是一个高可用的,基于Java的开源RPC框架。

Dubbo框架不仅仅是具备RPC访问功能,还包含服务治理功能。

2. 发展历史

  • Dubbo是最开始是阿里巴巴内部使用的RPC框架。
  • 2011年对外提供。
  • 2012年停止更新。
  • 2017年开始继续更新。
  • 2019年捐献给Apache,由Apache维护2.7以上版本。

二、 Dubbo架构讲解

1. 架构图

2. 架构说明

2.1 虚线

虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。

2.2 Provider

提供者。编写持久层、业务层和事务代码。

2.3 Container

容器(Spring容器),Dubbo完全基于Spring实现的。

2.4 Registry

注册中心。放置所有Provider对外提供的信息。包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息。

2.5 Consumer

消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以包括页面等)。调用远程服务实现(XXXXServiceImpl)中的方法。

2.6 Monitor

监控中心。监控Provider的压力情况等。每隔2分钟Consumer和Provider会把调用次数发送给Monitor,由Monitor进行统计。

3. 执行流程

  1. start:启动Spring容器时会把Provider启动。
  2. register:把Provider相关信息注册到Registry里
  3. subscribe:Consumer从Registry中订阅Provider的信息
  4. notify:通知给Consumer
  5. invoke:Consumer根据Registry通知的信息进行调用Provider中方法。
  6. count:Consumer和Provider把调用次数信息异步发送给Monitor进行统计。

三、 Dubbo支持的协议

1. Dubbo协议(官方推荐协议)

  • 优点:

采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)

  • 缺点:

大文件上传时,可能出现问题(不使用Dubbo实现文件传输)

2. RMI(Remote Method Invocation)协议

  • 优点:

JDK自带的能力。

  • 缺点:

偶尔连接失败.

3. Hessian协议

  • 优点:

可与原生Hessian互操作,基于HTTP协议

  • 缺点:

需hessian.jar支持,http短连接的开销大

四、 Dubbo支持的注册中心

1. Zookeeper(官方推荐)

  • 优点:

支持分布式.很多周边产品.

  • 缺点:

受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优

2. Multicast

  • 优点:

去中心化,不需要单独安装软件.

  • 缺点:

2.2.1 Provider、Consumer和Registry不能跨机房(路由)

3. Redis

  • 优点:

支持集群,性能高

  • 缺点:

要求服务器时间同步.否则可能出现集群失败问题.

4. Simple

  • 优点:

标准RPC服务.没有兼容问题

  • 缺点:

不支持集群.

五、 第一个Dubbo的Provider

新建父项目Parent1。最终结构如下:

编写pom.xml继承SpringBoot父项目。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version>
</parent>

1. 新建api项目

1.1 创建接口

创建com.bjsxt.dubbo.service.DemoDubboService接口

public interface DemoDubboService {String demo();
}

2 新建provider项目

2.1 编写pom.xml

注意:不需要依赖web,如果依赖spring-boot-start-web还需要考虑端口问题。

<dependencies><dependency><artifactId>api</artifactId><groupId>com.bjsxt</groupId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency>
</dependencies>

2.2 编写配置文件

新建application.yml

dubbo:application:name: dubbo-providerregistry:address: zookeeper://192.168.32.128:2181

2.3 新建实现类

新建com.bjsxt.dubbo.service.impl.DemoDubboServiceImpl

注意:注解是apache的注解。

import com.bjsxt.dubbo.service.DemoDubboService;
import org.apache.dubbo.config.annotation.Service;@Service
public class DemoDubboServiceImpl implements DemoDubboService {@Overridepublic String demo() {System.out.println("demo方法");return "123";}
}

2.4 新建启动类

新建com.bjsxt.ProviderApplication。

必须要有@EnableDubbo注解,否则Dubbo不生效。

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class,args);}
}

六、admin管理界面搭建

1. dubbo-admin-server-0.2.0.jarBOOT-INFclasses 中application.properties里面注册中心的ip设置正确

2. 使用java -jar dubbo-admin-server-0.2.0.jar运行即可。访问http://localhost:8080可以进入Dubbo Admin管理控制台。

注意:占用8080端口,不要冲突了。

七、 完成Dubbo的Consumer

创建consumer项目

1. 编写pom.xml

<dependencies><dependency><artifactId>api</artifactId><groupId>com.bjsxt</groupId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency>
</dependencies>

2. 新建配置文件

新建application.yml

dubbo:application:name: dubbo-consumerregistry:address: zookeeper://192.168.32.128:2181

3. 新建service及实现类

新建com.bjsxt.service.DemoService

public interface DemoService {String consumerDemo();
}

新建com.bjsxt.service.impl.DemoServiceImpl

调用服务使用@Reference注解,不要导错包了,有两个。

import com.bjsxt.dubbo.service.DemoDubboService;
import com.bjsxt.service.DemoService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;@Service
public class DemoServiceImpl implements DemoService {@Referenceprivate DemoDubboService demoDubboService;@Overridepublic String consumerDemo() {return demoDubboService.demo();}
}

4. 新建控制器

新建控制器com.bjsxt.controller.DemoController

@Controller
public class DemoController {@Autowiredprivate DemoService demoService;@RequestMapping("/demo")@ResponseBodypublic String demo(){return demoService.consumerDemo();}
}

5. 新建启动器

新建com.bjsxt.ConsumerApplication

@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);}
}

需要更多Java学习资料的可以到评论区留言或者私信哦,视频、源码、项目,通通都给你

dubbo service注解用法_Dubbo---开源分布式服务框架(一)相关推荐

  1. Dubbo详解(一)分布式服务框架的概念理解

    Dubbo分布式服务框架的概念理解 Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源.一个分布式的服务框架.可以实现SOA(面向服务的架构)架构. Dubbo使用的公司:京东.当当. ...

  2. dubbo(开源分布式服务框架)1---------Dubbo需要四大基本组件

    Dubbo需要四大基本组件:Registry.Monitor.Provider.Consumer.  Provider:提供者 Consumer:消费者 registry:注册中心(相当于中介) mo ...

  3. Dubbo分布式服务框架基础入门

    文章目录 一.架构演变 1.单一应用框架(ORM) 2.垂直应用框架(MVC) 3.分布式应用架构(RPC) 4.流动计算架构(SOA) 二.Dubbo介绍 1.基本介绍 2.调用关系 3.dubbo ...

  4. 分布式服务框架Dubbo使用小结

    介绍: Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA 服务治理方案,每天为2,000+个服务提供3,000,000,0 ...

  5. 荐书:《架构探险:从零开始写分布式服务框架》

    荐书:<架构探险:从零开始写分布式服务框架> 一线技术专家 全方位解析 分布式服务框架底层技术细节 手把手教你 搭建一个完整的符合自身需求的 分布式服务框架 随着互联网浪潮风起云涌,互联网 ...

  6. 11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?

    最近,开源社区发生了一件大事--使用最广的开源服务框架之一Dubbo低调重启维护,并且3个月连续发布了3个维护版本.这3个维护版本不仅解决了社区关心的一系列问题和需求,还让整个社区的活跃度得到了大幅提 ...

  7. 分布式服务框架——Dubbo

    1. Dubbo 概述 1.1 什么是分布式系统 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系 ...

  8. 阿里分布式服务框架Dubbo的架构总结

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  9. Dubbo分布式服务框架简介

    概览 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点:        自开源后,已有不 ...

最新文章

  1. 【问题收录】Ubuntu(14.04)那些我遇到的各种事
  2. mysql 写 性能,MySQL在大型,只写表上的性能
  3. c 在realse下为什么生成不了exe_exe文件?你也可以编写!
  4. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系
  5. 彻底理解Python中的yield
  6. pythonturtle画点的指令_简述python的turtle绘画命令及解释
  7. C/C++ OpenCV滑动条的创建与使用
  8. 再见,金庸;再见,江湖
  9. VS Code 插件
  10. 【Java】Java中的在Linux和Mac以及Windows上使用File.separator的坑
  11. 「代码随想录」279.完全平方数 【动态规划】力扣详解!
  12. Asp.net core WebApi 使用Swagger生成帮助页实例
  13. django-salmonella的使用
  14. CH32F103与STM32F103在USB接口上的差异与使用
  15. .pptx 文件密码破解
  16. 用python写个脚本把QQ空间多年动态删了
  17. Android基础整合项目之节日群发助手(三)
  18. 19美亚团队赛刷题,1-61,91-105windows部分+RAID重组,细致学习,积极备战,希望与各位一起进步
  19. 巨型计算机语言主要应用于,计算机应用基础知识复习题
  20. Whitelabel Error Page 的原因分析

热门文章

  1. 计算Gaunt积分m1m2≥0
  2. 二分类排斥子和鞍点的准确率的表达式pa
  3. 【STM32】按键检测实验主要程序代码分析
  4. 【数理知识】辛矩阵 symplectic
  5. 第十二章 支持向量机-机器学习老师板书-斯坦福吴恩达教授
  6. 一起学nRF51xx 0 - 环境搭建
  7. 【arduino】ESP32 SPIFFS插件使用报错及解决方法:SPIFFS Error:esptool not found!
  8. Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory
  9. 人工智能最佳学习实践
  10. 程序员常犯的五个非技术性错误