springboot学习笔记-25-Dubbo


Dubbo.

什么是Dubbo.

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:

  • 面向接口的远程方法调用
  • 智能容错和负载均衡
  • 服务自动注册和发现

架构.

Dubbo架构图

节点角色说明.

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

调用关系说明.

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

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

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

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

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

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

特性.

  • 面向接口代理的高性能RPC调用
    • 提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
  • 智能负载均衡
    • 内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
  • 服务自动注册与发现
    • 支持多种注册中心服务,服务实例上下线实时感知。
  • 高度可扩展能力
    • 遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。
  • 运行期流量调度
    • 内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
  • 可视化的服务治理与运维
    • 提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。

Dubbo使用.

这里注册中心使用 Zookeeper,因此需要安装 zookeeper,详细看 zookeeper 那篇博客

  1. 提供者提供服务
    1. 导入依赖
    2. 配置注册中心的地址,以及服务发现名和要扫描的包
    3. 在想要被注册的服务上添加 @DubboService注解
  2. 消费者进行消费
    1. 导入依赖
    2. 配置注册中心的地址,配置自己的服务名
    3. 从远程注入服务 @DubboReference

Dubbo-admin.

  • 一个监控管理后台
    • 查看注册的服务 …

链接:https://github.com/apache/dubbo-admin/tree/master

下载.

解压.

源码

查看.

查看 pom.xml 中项目编译版本 是否 与 本地JDK版本一致

打包.

由于是 源码 所以我们需要编译打包,才能使用

打包可以在 IDEA中 ,也可以使用mvn的命令打包,以下是打包命令

mvn clean package -Dmaven.test.skip=true

构建成功

启动zookeeper(port:2181).

在开启 target服务之前,我们需要开启 zookeeper 服务,如果没有安装,需要安装后,启动

启动zookeeper服务

启动dubbo-admin(port:7001).

命令

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

开启成功

访问localhost:7001.

dubbo-admin管理页面

错误.

如果dubbo-admin打包构建失败,如下

我们需要 去更改 项目pom.xml 的 JDK 版本 与 本地 JDK版本一致

默认1.6

如果dubbo-admin启动时,端口已经被绑定

我们需要,查看 7001 端口 被 什么应用 占用,然后结束 占用进程

查看占用进程

netstat -ano | findstr 7001

结束pid为19352的进程

taskkill -pid 19352 -f


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
springBoot学习笔记-26-Zookeeper springBoot学习笔记-26-Zookeeper
Zookeeper.什么是Zookeeper.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提
2020-10-05
下一篇 
springBoot学习笔记-24-RPC springBoot学习笔记-24-RPC
如何给老婆解释什么是RPC https://zhuanlan.zhihu.com/p/36427583 什么是RPC.RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范
2020-10-05
  目录