RPC框架之Dubbo + springboot

RPC 学习笔记

Remote procedure call 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。

RPC是一种技术思想而非一种规范或协议,常见RPC技术和框架:

  • 应用级服务框架:阿里的Dubbo/Dubbox,Google gRPC,Sping Boot/Sping Cloud
  • 远程通信协议:RMI,Socket,SOAP(Http XML)REST(HTTP JSON)
  • 通信框架:MINA和Netty

Dubbo

Dubbo是一个高性能的,轻量级的 开源java的RPC框架,底层基于Netty,通常与Zookeeper配合使用。它提供了三大核心能力:

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

主要核心部件:

  1. Remoting:网络通信框架,实现了sync-over-async和request-response消息机制
  2. RPC 一个远程调用的抽象,支持负载均衡,容灾和集群功能。
  3. Registry 服务目录框架,用于服务的注册和服务事件发布和订阅。

工作原理:

  • Provider 暴露服务提供方称之为“服务提供者”
  • Consumer 调用远程服务方称之为“服务消费者”
  • Registry 服务注册与发现中心,目录服务称之为“服务注册中心”
  • Monitor 统计乙的调用次数和调用时间的日志服务,称之为“服务监控中心”
  • Container 服务运行容器

Dubbo技术架构

发布订阅过程

  1. 启动容器,加载,运行服务提供者
  2. 服务提供者在启动时,在注册中心发布注册自己提供的服务
  3. 服务消费者在启动时,在注册中心订阅自己所需的服务

如果需要考虑失败或变更的情况,就需要考虑下面的过程

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

除了dubbo依赖还需要Netty和Curator依赖。

Dubbo SpringBoot

引用pom依赖

dubbo-sprong-boot-starter

引入zookeeper依赖 com.101tec    zkclient

@Service 是dubbo里的注解,作用是暴露服务,不要选择spring的service

@component

在spring的启动类上加一个开启dubbo注解

@EnableDubboconfigration

@SpringbootApplication

消费时用@Reference注解

需要引用

<group>io.dubbo.spring.boot</group> 

<artifactid>spring-boot-starter-dubbo</artifactid>

Spring Boot

springboot 是用来简化新spring的初始搭建和开发过程。

 SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

 

猜你喜欢

转载自www.cnblogs.com/minzhao/p/12501210.html