发表于: 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 服务运行容器
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
dubbo实际上是一款RPC框架
什么是RPC?
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A,B部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。
为什么要用 Dubbo?
如果你要开发分布式程序,你也可以直接基于 HTTP 接口进行通信,但是为什么要用 Dubbo呢?
我觉得主要可以从 Dubbo 提供的下面四点特性来说为什么要用 Dubbo:
负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务
服务调用链路生成——服务之间互相是如何调用的
服务访问压力以及时长统计——当前系统的压力主要在哪里,如何来扩容和优化
服务降级——某个服务挂掉之后调用备用服务
评论