Dubbo框架基本使用
创始人
2024-01-31 04:55:46

一:软件架构的演练过程【了解】

单体应用架构--->垂直应用架构--->分布式架构(SOA架构/微服务架构)`

 1.单体应用架构

单体应用架构,就是将一个系统的多个模块做成一个项目,然后部署到tomcat服务器上

优点:

        项目架构简单,开发,测试,部署成本低;

        项目部署在一个节点上,后期维护方便

缺点:

        项目模块之间紧密耦合,容错率低

        无法针对不同模块进行针对的扩容

2.垂直应用架构 

垂直应用架构,就是将原来的一个系统拆成成多个工程,然后每个工程部署在tomcat服务器上

* 优点:
    - 可以针对不同模块进行针对性的扩容
    - 一个系统的问题不会影响到其他系统,提高容错率
    
* 缺点:
    - 系统之间相互独立,会有重复的开发任务(造成了代码冗余)

 3.分布式架构(思想)

分布式架构就是指将服务层(service)单独启动,并部署在tomcat上对外提供服务,在controller中可以通过远程调用访问服务层中的方法

* 优点:
    - 抽取公共的功能为服务层,提高代码复用性

* 缺点:    
    - 调用关系错综复杂,难以维护,宕机以后不能及时更换

1.SOA架构

SOA结构,在分布式架构的基础上,增加一个调度中心对系统进行实时管理。

* 集群:
    多台服务器重复完成同一个任务,即同一个任务部署在多台服务器上

* 分布式:
    多台服务器协同完成同一个任务,即同一个任务拆分为多个子任务,多个子任务部署在多台服务器上协同完成同一个任务

 2.微服务架构(SpringCloud)

在这里SpringCloud先有一个概念,后边有挺多东西要学

架构体系先了解到这里

二:dubbo使用 

 首先我们看soa架构,里边要有调用中心,(不用担心,就相当于一个软件),最重要的就是rpc远程调用,dubbo就是rpc远程调用的一种框架

注意rpc 并不是一个新的技术,而是指整个网络远程调用过程

 1.Dubbo简介

Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。

官网地址:Apache Dubbo

发展历程

  • Dubbo是阿里巴巴内部使用的分布式业务框架,2012年由阿里巴巴开源

  • 在很短时间内,Dubbo就被许多互联网公司所采用,并产生了许多衍生版本,如网易,京东,新浪,当当等等

  • 由于阿里策略变化,2014年10月Dubbo停止维护。随后部分互联网公司公开了自行维护的Dubbo版本,比较著名的如当当DubboX

  • 经过三年的沉寂,在2017年9月,阿里宣布重启Dubbo项目,并决策在未来对开源进行长期持续的投入

  • 随后Dubbo开始了密集的更新,并将停摆三年以来大量分支上的特性及缺陷修正快速整合

  • 2018.2月,阿里将Dubbo捐献给Apache基金会,Dubbo成为Apache孵化器项目

RPC介绍

  • RPC全称为remote procedure call,即远程过程调用

  • 简单的讲,RPC可以让我们像调用本地方法一样来调用远程方法

  • 需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程

  • Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo等

RMI、Hessian等一些远程调用 可以去了解

 2.Dubbo实现RPC调用的原理【面试】

节点角色名称
Provider暴露服务的服务提供方
Consumer调用远程服务的服务消费方
Registry服务注册与发现的注册中心
Monitor统计服务的调用次数和调用时间的监控中心(查看服务状态)
Container服务运行容器

 

     0. 服务容器负责启动,加载,运行服务提供者

  1. 服务提供者在启动时,向注册中心注册自己提供的服务

  2. 服务消费者在启动时,向注册中心订阅自己所需的服务

  3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推 送变更数据给消费者。

  4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用, 如果调用失败,再选另一台调用。

  5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计 数据到监控中心。

特别重要

 3.SpringBoot整合Dubbo【重要】

这里应该还有Spring整合Dubbo 不过SpringBoot整合更简单写,企业开发用的更多一些

1.首先,先要有注册中心,这里用的是zookeeper

 

 

 然后启动,就ok了,这里只是当一个注册中心

 整体项目结构

 2.父项目导入依赖

org.springframework.bootspring-boot-starter-parent2.2.2.RELEASE
1.8
org.springframework.bootspring-boot-starterorg.apache.dubbodubbo-spring-boot-starter2.7.5org.apache.curatorcurator-recipes4.2.0org.apache.zookeeperzookeeper3.4.12

接口:

public interface HelloService {String hello(String name);
}

Impl:


@Service//  dubbo的Service
public class HelloServiceImpl implements HelloService {@Overridepublic String hello(String name) {System.out.println(222);return "hello:" + name;}
}

提供者的启动类

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

配置文件:(application.yml)

dubbo:application:name: springboot-provider1registry:address: zookeeper://127.0.0.1:2181protocol:name: dubboport: 20080scan:base-packages: com.itheima.service

消费者:

@RestController
public class HelloController {@Referenceprivate HelloService helloService;@GetMapping(value = "/name")public ResponseEntity hello(@RequestParam String name){String hello = helloService.hello(name);return ResponseEntity.ok(hello);}}

消费者的启动类:


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

 配置文件:(application.yml)

dubbo:application: # 应用名称name: springboot-consumer1registry: # 连接注册中心address: zookeeper://127.0.0.1:2181scan:base-packages: com.itheima.serviceconsumer: timeout: 5000retries: 0

4.dubbo使用的一些小细节【重点】

1.扫描包:


scan:base-packages: com.itheima.service

2.协议:

 

yml配置文件:

dubbo:

protocol:name: dubboport: 20080

3.启动时检查:

Dubbo在启动时会检查服务提供者所提供的服务是否可用,默认为true

通过配置服务消费者的统一规则来关闭服务检查

   开发屏蔽(false)  上线开启(true)

consumer:check: false

 4.dubbo的超时和重试【面试】

Dubbo在通信时,由于网络或服务端不可靠,会导致调用过程中出现不确定的阻塞状态(超时)

为了避免超时导致客户端线程挂起处于一致等待状态,必须设置超时时间和请求重试,默认为1S超时和重试2次数

 

相关内容

热门资讯

excel表格怎么求积 exc... Hello大家好,我是帮帮。今天跟大家分享一下Excel合并单元格求和乘积计算技巧,特殊表格公式计算...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
死人为什么要盖上脸 家里死人三... 众所周知,人的一生是非常短暂的,所以人们会在有限的时间里,将自己想做的事情都做完,为的就是不留遗憾。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...