Dubbo了解一下

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: Apache Dubbo是阿里巴巴开源的一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

前言


Apache Dubbo是阿里巴巴开源的一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。


它有如下特性:

  • 面向接口代理的高性能RPC调用

提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。

  • 智能负载均衡

内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

  • 服务自动注册与发现

支持多种注册中心服务,服务实例上下线实时感知。

  • 高度可扩展能力

遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。

  • 运行期流量调度

内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。

  • 可视化的服务治理与运维

提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。


一、dubbo的结构


下图示dubbo官网介绍的结构图:

2fc5b280f1f9dc8b4f359f1bf13950ec_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


节点角色说明:

  • Container:服务运行容器
  • Provideer:服务提供方
  • Consumer:服务消费方
  • Registry:注册中心
  • Monitor:统计服务调用次数和时间的监控中心


调用关系说明:

  1. 服务容器负责加载、启动、运行服务提供者。
  2. 服务提供者启动时,向注册中心注册自己提供的服务 。
  3. 服务消费者启动时,向注册中心订阅自己需要的服务 。
  4. 注册返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,通过软负载均衡方法,选择一个服务提供方调用服务,调用失败在选择另一台(集群容错) 。
  6. 服务消费方和服务方,将调用次数和时间存储到内存中,定时一分钟发送给监控中心。


二、dubbo服务治理系统架构


dubbo架构图

8bdac45b503fc67fd1d521717316e43d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

三、dubbo基本注解配置


服务提供者:


<!-- 服务应用名 --><dubbo:application name="gmall-user"></dubbo:application> <!-- 使用zookeeper作为注册中心及地址和端口 --> <dubbo:registry address="zookeeper://118.24.44.169:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:annotation package="com.atguigu.gmall.user.impl"/> <!-- 具体的实现bean --> <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />   <!-- 声明需要暴露的服务接口  --> <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />


服务消费者:


<!-- 服务应用名 --><dubbo:application name="gmall-user"></dubbo:application> <!-- 使用zookeeper作为注册中心及地址和端口 --> <dubbo:registry address="zookeeper://118.24.44.169:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:annotation package="com.atguigu.gmall.user.impl"/> <!-- 具体的实现bean --> <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />   <!-- 声明需要暴露的服务接口  --> <dubbo:reference interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />

 

相关文章
|
传感器 人工智能 监控
无人驾驶拖拉机
无人驾驶拖拉机
720 1
|
数据采集 SQL 存储
DataWorks数据质量介绍及实践 | 《一站式大数据开发治理DataWorks使用宝典》
数据质量问题虽然从数据工程师的角度来看是个简单问题,但是从业务的角度来看是个很严重的问题。所以数据质量是数据开发和治理全生命周期中,非常重要的一个环节。在DataWorks产品版图里,数据质量也是非常重要的模块之一。
4746 0
DataWorks数据质量介绍及实践 | 《一站式大数据开发治理DataWorks使用宝典》
|
7月前
|
人工智能 安全 物联网
浏览器智能体崛起:Convergence Proxy为何会碾压OpenAI Operator?
浏览器智能体崛起:Convergence Proxy为何会碾压OpenAI Operator?
|
7月前
|
存储 安全 网络安全
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
|
9月前
|
消息中间件 运维 安全
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
游戏行业蓬勃发展,作为国内领先的 STEAM 游戏饰品交易的服务平台,看 C5GAME 如何利用 RocketMQ Serverless 技术,为千万级玩家提供流畅的游戏体验,同时降低成本并提升运维效率。
543 140
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
|
中间件 测试技术 持续交付
FastAPI测试秘籍:如何通过细致的测试策略确保你的代码在真实世界的挑战面前保持正确和稳定?
【8月更文挑战第31天】在软件开发中,测试至关重要,尤其在动态语言如Python中。FastAPI不仅简化了Web应用开发,还提供了强大的测试工具。通过`unittest`框架和Starlette测试客户端,开发者可以轻松编写和执行测试用例,确保每个功能按预期工作。本文将详细介绍如何设置测试环境、编写基础和高级测试用例,并探讨中间件和依赖项测试。此外,还将介绍如何在持续集成环境中自动化测试,确保代码质量和稳定性。利用FastAPI的测试工具,你可以构建出高效可靠的Web应用。
211 0
|
算法 安全 关系型数据库
深度|庖丁解InnoDB之Buffer Pool
聚焦在Buffer Pool的本职功能上,从其提供的接口、内存组织方式、Page获取、刷脏等方面进行介绍
105304 90
|
XML Java 数据库连接
MybatisX快速生成代码(mybatis plus模板)
MybatisX快速生成代码(mybatis plus模板)
|
前端开发 druid Java
基于SpringBoot+Layui的社区物业管理系统
社区物业管理系统是基于java程序开发,本系统分为业主和管理员两个角色 业主可以登陆系统,查看车位费用信息,查看物业费用信息,在线投诉,查看投诉,在线报修; 管理员可以车位收费信息,物业收费信息,投诉信息,楼宇信息,房屋信息,业主信息,车位信息,抄表信息等进行管理。
160 0
基于SpringBoot+Layui的社区物业管理系统
|
安全 网络安全 开发工具
更安全的ssh协议与Gui图形化界面使用
更安全的ssh协议与Gui图形化界面使用
226 0

热门文章

最新文章