当前位置:

首页 > 编程开发 > SpringBoot2.0如何实现RPC服务远程调用

SpringBoot2.0如何实现RPC服务远程调用

一、Dubbo框架简介1、框架依赖图例说明:1)图中小方块Protocol,Cluster,Proxy,Service,Container,Registry,Monitor代表层或模块,蓝色的表示与业务有交互,绿色的表示只对Dubbo内部交互。2)图中背景方块Consumer,Provider,Registry,Monitor代表部署逻辑拓扑节点。3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。4)图中只包含RPC的层,不包含Remoting的层,Remoting整体都

本文目录

    一、Dubbo框架简介

    1、框架依赖

    SpringBoot2.0如何实现RPC服务远程调用

    图例说明:

    1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互。

    2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点。

    3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。

    4)图中只包含 RPC 的层,不包含 Remoting 的层,Remoting 整体都隐含在 Protocol 中。

    2、核心角色说明

    1)Provider 暴露服务的服务提供方

    2)Consumer 调用远程服务的服务消费方(负载均衡)

    3)Registry 服务注册与发现的注册中心(监控、心跳、踢出、重入)

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

    5)Container 服务运行容器:远程调用、序列化

    二、与SpringBoot2.0整合

    1、核心依赖

    
    
     com.alibaba.boot
     dubbo-spring-boot-starter
     0.2.0
    

    2、项目结构说明

    SpringBoot2.0如何实现RPC服务远程调用

    结构说明

    dubbo-consume:服务消费方
    dubbo-provider:服务提供方
    dubbo-common:公共代码块,Dubbo接口,实体类

    3、核心配置

    1)提供方配置

    server:
     tomcat:
     uri-encoding: UTF-8
     max-threads: 1000
     min-spare-threads: 30
     port: 7007
     connection-timeout: 5000ms
    spring:
     application:
     name: block-dubbo-provider
    # Dubbo 配置文件
    dubbo:
     application:
     name: block-dubbo-provider
     registry:
     address: 127.0.0.1:2181
     protocol: zookeeper
     protocol:
     name: dubbo
     port: 20880
     scan:
     base-packages: com.boot.consume

    2)消费方配置

    server:
     tomcat:
     uri-encoding: UTF-8
     max-threads: 1000
     min-spare-threads: 30
     port: 7008
     connection-timeout: 5000ms
    
    spring:
     application:
     name: block-dubbo-consume
    # Dubbo 配置文件
    dubbo:
     application:
     name: block-dubbo-consume
     registry:
     address: 127.0.0.1:2181
     protocol: zookeeper

    三、演示案例

    1、服务远程调用

    1)提供方服务接口

    注意这里的注解com.alibaba.dubbo.config.annotation.Service

    @Service
    @Component
    public class DubboServiceImpl implements DubboService {
      private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;
      @Override
      public String getInfo(String param) {
        LOGGER.info("字符参数:{}",param);
        return "[Hello,Cicada]";
      }
      @Override
      public UserEntity getUserInfo(UserEntity userEntity) {
        LOGGER.info("实体类参数:{}",userEntity);
        return userEntity;
      }
    }

    2)消费方接口

    • 注意这里注解

    • com.alibaba.dubbo.config.annotation.Referenceorg.springframework.stereotype.Service

    @Service
    public class ConsumeService implements DubboService {
      @Reference
      private DubboService dubboService ;
      @Override
      public String getInfo(String param) {
        return dubboService.getInfo(param);
      }
      @Override
      public UserEntity getUserInfo(UserEntity userEntity) {
        return dubboService.getUserInfo(userEntity);
      }
    }

    2、接口超时配置

    该配置可以在服务提供方配置,也可以在服务消费方配置,这里演示在提供方的配置。注解:timeout 1)服务接口注解

    @Service(timeout = 2000)
    @Component
    public class DubboServiceImpl implements DubboService {
    }

    2)消费方调用

     @Override
     public String timeOut(Integer time) {
       return dubboService.timeOut(time);
     }

    3)测试接口

    服务超时抛出异常

    com.alibaba.dubbo.remoting.TimeoutException

    3、接口多版本配置

    1)服务提供方

    相同接口提供两个版本实现。注解:version。

    版本一:

    @Service(version = "1.0.0")
    @Component
    public class VersionOneImpl implements VersionService {
      @Override
      public String getVersion() {
        return "{当前版本:1.0.0}";
      }
    }

    版本二:

    @Service(version = "2.0.0")
    @Component
    public class VersionTwoImpl implements VersionService {
      @Override
      public String getVersion() {
        return "{当前版本:2.0.0}";
      }
    }

    2)消费方调用

    通过@Reference(version)注解,将指向不同版本的接口实现。

    @Service
    public class VersionServiceImpl implements VersionService {
      @Reference(version = "1.0.0")
      private VersionService versionService1 ;
      @Reference(version = "2.0.0")
      private VersionService versionService2 ;
      @Override
      public String getVersion() {
        return versionService1.getVersion();
      }
      public String version2 (){
        return versionService2.getVersion() ;
      }
    }
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 rpc
    相关文章 更多
    Golang RPC拦截器日志监控实现示例
    Golang RPC拦截器日志监控实现示例

    答案:Go语言gRPC拦截器可实现日志与监控,通过UnaryServerInterceptor在请求前后记录方法名、耗时、状态码并上报Prometheus,结合server选项注册,输出结构化日志,便于观测与排错。

    Golang RPC服务拆分与接口设计实践
    Golang RPC服务拆分与接口设计实践

    先从业务领域模型中的聚合根划分服务边界,结合负载、团队结构确定拆分粒度;使用Protobuf定义语义清晰、版本可控、兼容性强的接口;通过最终一致性、Saga或分布式事务保障数据一致性;利用Prometheus、Grafana、ELK和容器编排工具实现监控与管理;结合JWT、RBAC、TLS等机制确保服务安全。

    Golang RPC反射与动态调用方法
    Golang RPC反射与动态调用方法

    GolanggRPC服务的反射与动态调用通过protoreflect解析.proto文件获取服务信息,利用reflect包动态创建请求参数(支持嵌套message),结合context实现超时控制和错误处理,并通过Interceptor机制实现Token或TLS认证授权,从而在无需预生成代码的情况下实现灵活、安全的通用gRPC客户端调用。

    Golang实现RPC调用方法详解
    Golang实现RPC调用方法详解

    Golang通过net/rpc实现RPC调用的核心步骤包括:1.定义服务接口,方法需满足特定签名;2.注册服务实例到RPC服务器;3.启动TCP监听并处理连接;4.客户端通过Dial连接并Call远程方法。例如,定义Arith服务实现Multiply和Divide方法,服务器注册后监听端口,客户端调用时检查错误。错误处理方面,服务端返回error通知客户端,客户端应检查Call返回值并处理异常。使用JSON-RPC需替换为jsonrpc包,服务器端用jsonrpc.ServeConn,客户端用jsonrp

    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    Go语言RPC框架概览:探究五大热门选择
    Go语言RPC框架概览:探究五大热门选择

    随着互联网技术的发展,分布式系统的应用越来越广泛,而远程过程调用(RPC)作为分布式系统中的重要通信方式,也受到了越来越多的关注和应用。在众多的RPC框架中,Go语言作为一种快速高效的编程语言,也拥有着丰富的RPC框架选择。本文将针对Go语言RPC框架进行盘点,介绍五大热门选择,并给出具体的代码示例,帮助读者更好地了解和选择适合自己项目的RPC框架。1.g

    PHP gPRC 整合实践:与外部框架和服务无缝衔接
    PHP gPRC 整合实践:与外部框架和服务无缝衔接

    grpc(grpcRemoteProcedureCall)是一种高性能、平台无关的远程过程调用(RPC)框架,它由Google开发,并广泛用于微服务架构中。gRPC允许客户端应用程序通过网络向服务器端发送请求并接收响应,就像调用本地函数一样。PHPgRPC扩展使php开发人员能够轻松地将gRPC集成到他们的应用程序中,从而实现与第三方框架和服务的无缝对接。通过使用gRPC,PHP应用程序可以与基于gRPC的服务进行通信,无论这些服务是由其他编程语言编写的还是部署在不同的平台上。安装PHPgRPC扩展要在P

    解析SpringBoot和SpringMVC之间的异同
    解析SpringBoot和SpringMVC之间的异同

    解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

    探索SpringCloud和SpringBoot在微服务领域的不同应用方式
    探索SpringCloud和SpringBoot在微服务领域的不同应用方式

    近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

    SpringBoot和SpringMVC有何区别?
    SpringBoot和SpringMVC有何区别?

    SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。