发表于: 2019-12-06 22:27:14

1 1296


今天完成的事情:

完成springboot+dubbo的整合

项目结构

创建空maven项目dubbo-interface

dubbo-interface层为公共模块,用于服务端和消费端的调用

用于存放一些共用的接口,实体类,工具类

使用maven-install命令打成jar包供其他模块使用


创建spring boot项目dubbo-provider

dubbo-provider层为实现服务提供者 

在 application.properties 配置文件中配置 dubbo 相关信息;

添加接口实现类

在pom文件引入 dubbo 、zookeeper以及接口的相关依赖 jar 包

启动类添加@EnableDubboConfiguration 注解开启Dubbo 的自动配置。


创建spring boot项目dubbo-consumer

dubbo-consumer层为实现服务消费者

application.properties 配置文件中的端口号不能相同

创建用于测试的controller

启动类跟服务层操作一样


配置完即可依次运行启动类

运行结果


明天计划的事情:开始准备复盘


遇到的问题:无


收获:

什么是 Duboo?

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

Dubbo 是由阿里开源,后来加入了 Apache 。正式由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。


Dubbo 架构

上述节点简单说明:

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

调用关系说明:

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

dubbo实际上是一款RPC框架

什么是RPC?

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A,B部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。


为什么要用 Dubbo?

如果你要开发分布式程序,你也可以直接基于 HTTP 接口进行通信,但是为什么要用 Dubbo呢?

我觉得主要可以从 Dubbo 提供的下面四点特性来说为什么要用 Dubbo:

负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务

服务调用链路生成——服务之间互相是如何调用的

服务访问压力以及时长统计——当前系统的压力主要在哪里,如何来扩容和优化

服务降级——某个服务挂掉之后调用备用服务





返回列表 返回列表
评论

    分享到