DUBBO介绍

article/2025/8/22 20:07:31

1.1  DUBBO简介

Dubbo是Alibaba开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。

调用关系说明:

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

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

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

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

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

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

2 DUBBO入门

2.1 环境搭建

2.1.1 搭建java开发环境(略)

2.1.2 搭建Zookeeper环境

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。

■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;

■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;

■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

这里主要介绍单机模式安装。

(1) 下载并解压zookeeper;

(2) 重命名zoo_sample.cfg文件,文件名为zoo.cfg;

(3) 修改zoo.cfg配置文件,主要修改zookeeper端口; 

(4) 通过bin目录下的zkServer.cmd启动zookeeper。

2.1.3 dubbo控制台安装

dubbo管理控制台开源部分主要包含: 提供者、路由规则、动态配置、访问控制、权重调节、负载均衡、负责人等管理功能。

(1) 下载dubbo-admin管理项目war包;

(2) 先删除tomcat/webapps下自带的ROOT文件夹内容(替换tomcat的启动主页),将下载的war包解压到webapps/ROOT;

(3) 修改dubbo.properties文件;

(4) 启动tomcat,登陆主页。

2.2 暴露接口开发

新建一个project,开发暴露服务的接口。

将接口文件打包为jar,方便服务提供者和服务消费者引用。

2.3 提供者开发

(1) 新建一个project,开发服务提供者

(2) 导入jar包

Dubbo可以和spring无缝对接。首先导入spring框架jar。

还需导入以下jar:

导入服务接口jar

(3) 实现服务接口

(4) 配置注册服务文件

spring-dubbo.xml

applicationContext.xml文件引入spring-dubbo.xml文件

(5) 写一个测试类启动容器,注册服务到注册中心

2.4 消费者开发

(1) 新建一个project,开发服务消费者

(2) 引入相关jar包,与上述提供者一致

(3) 服务引用配置

spring-dubbo文件

applicationContext.xml文件引入spring-dubbo.xml文件

(4)写一个测试类启动容器,引用服务

  启动之后,调用服务成功,provider控制台输出

2.5 DUBBO常用配置讲解

1、<dubbo:application/> 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。

一般配置一个name属性即可,相当于给该应用取名。

eg : <dubbo:application name=”my_provider”/>

2、<dubbo:registry/> 注册中心配置,用于配置连接注册中心相关信息。常用属性 address,指注册中心及ip。

eg :<dubbo:registry address="zookeeper://127.0.0.1:2181" />

属性中:zookeeper指使用的是Zookeeper注册中心,后面跟上注册中心ip地址。

3、<dubbo:protocol/> 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。Dubbo协议端口缺省值为20880。

eg、<dubbo:protocol name="dubbo" port="20880" />

4、<dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。

eg :<dubbo:service ref="providerBean" interface="com.zwen.provider.ProviderService"/>

其中:ref属性指服务处理实现类bean 的id,interface指服务接口

5、<dubbo:reference/> 引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。

eg、<dubbo:reference id="provider" interface=" com.zwen.provider.ProviderService " check=" false" />

其中:id属性指dubbo生成的服务代理bean的id,在可以当做本地bean使用;interface指服务接口;check属性指在启动时检查服务依赖是否可用,不可用则抛出异常,阻止spring初始化,如果先启动消费者或者不确定,需设置check="false";


http://www.hkcw.cn/article/eapJXumqlA.shtml

相关文章

这个西部城市登顶全国消费第一城 重庆连续超越上海

这个西部城市登顶全国消费第一城 重庆连续超越上海!重庆的消费数据再次超过了上海。根据重庆市统计局的数据,1-4月,重庆社会消费品零售总额达到5385.43亿元,同比增长4.4%。同期,上海的社会消费品零售总额为5355.46亿元,同比下降0.3%。这意味着重庆成为当前中国消费总额最…

solidworks报错-只有合并特征才能被阵列。如果恰当,请选择实体的阵列

当我想要阵列这个特征的时候出现了如下报错&#xff0c;报错提示我使用实体的阵列&#xff0c;但这明显不合适&#xff0c;因为我在创建特征的时候已经合并了特征所以只有一个实体&#xff0c;有一个不算聪明的解决方法 重新退回特征创建阶段&#xff0c;取消合并结果 这样设计…

【加密社】私钥碰撞工具 最新版

最近有很多朋友问我能不能做一款针对指定地址进行爆破的工具 【指定地址进行碰撞】 当然可以做。 这里要说明的是&#xff0c;私钥碰撞工具的概率是非常非常非常非常小的&#xff0c;几乎无限趋近于0的几率&#xff0c;除非你是天选之子。 &#xff08;但是这里我还是做了一…

基于React和TypeScript的金融市场模拟器开发与模式分析

基于React和TypeScript的金融市场模拟器开发与模式分析 项目概述 本项目开发了一个基于React和TypeScript的金融市场模拟器&#xff0c;通过模拟订单流和价格发现机制&#xff0c;重现了真实市场的动态特性。该模拟器不仅提供了实时价格图表、订单簿和交易功能&#xff0c;还…

进程控制与调度下

内核总控程序返回调度程序 这个点 可剥夺的调度 实现多个进程轮流运行 真正的变发运行 短进程优先问题:后面就是不断来短进程的 长进程就没法运行 优化来了:最高响应比优先法 例子:io等待太久 然后给他cpu 运行完一个时间片 然后降低优先级 给其他进程运行 Linux和window…

高精度厚金 PCB 技术白皮书:参数标准、应用案例及猎板 PCB 解决方案

一、厚金 PCB 线路板技术参数与工艺原理 厚金 PCB 通过脉冲电镀工艺在导体表面形成高纯度金层&#xff0c;核心参数需满足严苛工业标准。以猎板 PCB 的技术方案为例&#xff0c;金层厚度通常控制在 1.2-2.5μm&#xff08;典型值 1.8μm0.15μm&#xff09;&#xff0c;底层沉…

生成式人工智能重塑商业价值:从任务分解到战略跃迁的全景解析

引言 生成式人工智能&#xff08;GenAI&#xff09;正通过任务分解框架重塑商业价值&#xff0c;其核心在于精准定位“增强”与“自动化”的结合点&#xff0c;而非全盘替代人类工作。基于布林乔尔森的经济学模型&#xff0c;企业可拆解岗位任务&#xff0c;评估GenAI在效率提…

数据结构(7)树-二叉树-堆

一、树 1.树的概述 现实生活中可以说处处有树。 在计算机里&#xff0c;有一种数据结构就是像现实中的树一样&#xff0c;有根&#xff0c;有分支&#xff0c;有叶子&#xff1b;一大片树就叫做森林。 这些性质抽象到计算机里也叫树&#xff0c;大致长这个样子&#xff1a; …

MySQL入门笔记

MySQL的逻辑架构 第一层&#xff1a; 处理客户端连接、线程处理、身份验证、确保安全。每一个客户端都会在服务器进程中拥有一个线程&#xff0c;该连接的命令操作都只会在这个单独的线程执行。 第二层&#xff1a; MySQL服务器层。主要分为解析器、优化器。 查询解析、分析…

纤维组织效应偏斜如何影响您的高速设计

随着比特率继续飙升&#xff0c;光纤编织效应 &#xff08;FWE&#xff09; 偏移&#xff0c;也称为玻璃编织偏移 &#xff08;GWS&#xff09;&#xff0c;正变得越来越成为一个问题。今天的 56GB/s 是高速路由器中最先进的&#xff0c;而 112 GB/s 指日可待。而用于个人计算机…

wechat-003-学习笔记

1.路由跳转页面&#xff1a;携带的参数会出现在onlaod中的options中。 注意&#xff1a;原生小程序对路由传参的长度也有限制&#xff0c;过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…

瞬时高温 15 秒合成过渡金属磷化物,开启高效析氢新征程

在碳中和目标的驱动下&#xff0c;开发高效清洁能源技术已成为全球科学界与工业界的共同使命。过渡金属磷化物&#xff08;TMPs&#xff09;因其优异的导电性和催化活性&#xff0c;被视为电解水制氢、燃料电池等能源器件的理想电催化剂。然而&#xff0c;传统合成方法依赖数小…

外贸邮件营销推广怎么做才有效果?

一、精准定位 1.细分客户群体&#xff1a;按客户行业、采购规模、地理位置等划分群体&#xff0c;制定差异化策略。 2.动态内容适配&#xff1a;借助邮件营销工具变量插入功能&#xff0c;依客户信息生成个性化内容。 3.合规性保障&#xff1a;遵守GDPR、CAN-SPAM等国际法规…

c#跨平台桌面地图-mapsui

c#跨平台桌面系统 目前c#的跨平台有几种方式&#xff0c;这里还是以前介绍的Avalonia结合&#xff0c;使用地图&#xff0c;前面已经有一点介绍提供一个加载&#xff0c;但是现在都是发展阶段&#xff0c;版本修改比较大&#xff0c;可能在一段时间后新版的接口就变了&#xf…

使用python rembg模块移除图片背景

安装 rembg模块 pip install rembg 代码实现 #移除图片背景 from rembg import remove from PIL import Imageinput_pathimg/1.png output_pathimg/2.png inpImage.open(input_path) outputremove(inp) output.save(output_path) Image.open(output_path) 3.运行代码结构如…

捌拾陆- 海森堡不确定性原理

继续学习 Hello&#xff0c;我又来了&#xff0c;又来一个简单的&#xff08;看到后续的非常复杂&#xff0c;所以先不看先&#xff09; 又是一个物理理解的基础 海森堡不确定性原理 有时候真搞不懂&#xff0c;大学学完的东西为什么现在就是完全忘记了 另外还得有空复习一下…

胖东来红内裤当事人被判赔40万 名誉侵权案落锤

许昌市魏都区人民法院于2025年5月28日公开审理了原告许昌市胖东来商贸集团有限公司与被告段某的名誉权纠纷案,并当庭宣判。法院判决段某在其个人抖音账号“两个小段(小)”发布书面道歉信视频,内容需经法院审核,且30日内不得删除;段某还需赔偿许昌市胖东来商贸集团有限公司…

长安链智能合约命令解析(全集)

创建命令解析 ./cmc client contract user create \ --contract-namefact \ --runtime-typeWASMER \ --byte-code-path./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \ --version1.0 \ --sdk-conf-path./testdata/sdk_config.yml \ --admin-key-file-paths./testdata/cryp…

wails3学习-打包(wails3 package)

nsis不太会用&#xff0c;先记录基础&#xff0c;后面再补充吧~ 检查NSIS 在cmd/powershell中运行 wails3 doctor如果你已经安装nsis但运行wails3 doctor仍然提示未安装&#xff0c;需要配置环境变量&#xff0c;根据自己的实际情况配置&#xff0c;配置完成&#xff0c;重启…

Next.js 布局(Layout)与模板(Template)深度解析:从原理到实战

在 Next.js 应用开发中&#xff0c;页面结构的组织方式直接影响用户体验和开发效率。Layout 和 Template 作为 Next.js 提供的两种页面结构组织方案&#xff0c;它们的正确使用能够显著提升应用的性能表现和开发体验。本文将深入剖析两者的区别、工作原理以及最佳实践&#xff…