当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

RabbitRpc

基于 spring cloud 的微服务 rpc 调用
授权协议 Apache
开发语言 Java
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 贾骏
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Spring Cloud RabbitRpc 是基于 spring cloud 的微服务 rpc 调用。

组件介绍

目前微服务应用和开发已经成为主流,远程调用,服务治理方面我们通常有两个选择,spring cloud 和 ali 的dubbo,spring cloud 提供了非常容易上手的全家桶模式,也是目前很多公司的选择,在远程调用方面基于openfeign实现,底层逻辑是 http 协议,所以被一些人称为伪 rpc,而选用 dubbo吧,生态不是很完整,ali 内部更多却在使用HSF 和 dubbo从远程调用方面和服务治理方面 HSF的用户多一些,但是HSF没有开源,ali 也出了 spring cloud alibaba 版本。但是在一些需求上面趋向于商业化,很多公司不想上船,在并发要求不是很高的环境下,基于 http 协议的远程调用无可厚非,但是如果要构建高并发应用,http 协议的解析效率低,同步等待问题就成了远程调用的性能瓶颈。很多公司为了满足需求,也有spring cloud 和 dubbo并存的奇葩方案。

rabbitrpc 为解决这一需求而设计,既有dubbo的性能又能满足在 spring cloud生态里轻松集成使用。

v1.0.0 版本 的 features

1 支持与spring cloud 集成。

2 支持异步请求。

3 支持 eureka 注册中心。

4 自定义 rabbit 协议,请求头只有15个字节。

5 序列化 支持 hessian,后续会加入protolbuf实现

6 支持SPI 动态加载机制。

7 支持一个应用双端口,支持rabbit,http双协议,根据需要来选择。

quick start

maven 引入 rabbitrpc-spring-boot-starte

        <dependency>
            <groupId>com.yixiu.rabbitrpc</groupId>
            <artifactId>rabbitrpc-spring-boot-starter</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

如果是服务端 1 需要提供api,需要定义如下,在提供的接口上添加注解配置。

@RabbitRpcClient(facadeId = "userService",facadeType = "com.yixiu.server.api.facade.UserFacade",name = "rabbitrpc-user-server",group = "rabbit")
public interface UserFacade {
    /**
     * 根据id 获取一个用户
     * @param id
     * @return
     */
    User getUser(Long id);
}

一般常用配置解释 facadeId:接口id facadeType:接口类型 name:服务名称 group:分组名称

2 在properties 文件添加如下配置

protocol.name=rabbit
protocol.port=20918

protocol.name 定义 rabbitrpc 要使用的协议,protocol.por 服务端开放监听的端口号。

3 在spring boot 启动入口,添加如下注解配置 @EnableRabbitRpcServices

@EnableEurekaClient
@EnableDiscoveryClient
@SpringBootApplication
@EnableRabbitRpcServices(basePackages = "com.yixiu.server.api")
public class RabbitRpcServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(RabbitRpcServerApplication.class);
    }
}

basePackages:接口定义包路径

如果是客户端

1 只需要将服务端提供的 api 引入,例如。

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>rabbitrpc-server-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

2 在spring boot 启动入口添加如下注解配置 @EnableRabbitRpcClients

@EnableEurekaClient
@EnableDiscoveryClient
@SpringBootApplication
@EnableRabbitRpcClients(basePackages = "com.yixiu.server")
public class RabbitClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(RabbitClientApplication.class);
    }
}

basePackages: 即api jar包的根路径。

如上配置完成就可以像本地方法一样使用远程服务了。

 相关资料
  • Flex提供RPC服务以向客户端提供服务器端数据。 Flex为服务器端数据提供了相当大的控制。 使用Flex RPC服务,我们可以定义要在服务器端执行的用户操作。 Flex RPC Sservices可以与任何服务器端技术集成。 其中一个Flex RPC服务提供内置支持,可以通过线路传输压缩二进制数据,速度非常快。 Flex提供以下三种类型的RPC服务 S.No RPC服务和描述 1 HttpSe

  • 我正在考虑使用spring-cloud-stream使用RabbitMQ作为代理来构建消息驱动的微服务应用程序。 我看到Spring-Cloud-Stream构建在spring集成(SI)之上,SI提供spring集成脚本来执行python脚本。但我不知道如何把它连接到Spring的云流中。 所以我想知道的是,当消息到达队列时,如何依次执行python脚本并获得脚本的输出? 任何代码和配置示例都会

  • 本文向大家介绍SpringCloud使用Feign实现服务调用,包括了SpringCloud使用Feign实现服务调用的使用技巧和注意事项,需要的朋友参考一下 Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的

  • 问题内容: 是否有直接从Java代码直接调用GWT RPC服务端点的简便方法?我的意思是真正的Java代码,而不是编译成JavaScript的Java代码。 我问是因为我们想针对GWT RPC接口运行性能基准测试/压力测试。我想用Java编写测试工具,并在JVM中运行它(与在浏览器中运行的javascript相反)。 我认为必须有一种方法可以执行此操作,因为我认为GWT托管模式需要这种功能。但是,

  • JSON RPC 是一种基于 JSON 格式的轻量级的 RPC 协议标准,易于使用和阅读。在 Hyperf 里由 hyperf/json-rpc 组件来实现,可自定义基于 HTTP 协议来传输,或直接基于 TCP 协议来传输。 安装 composer require hyperf/json-rpc 该组件只是 JSON RPC 的协议处理的组件,通常来说,您仍需配合 hyperf/rpc-ser

  • 我一直在读关于微服务和事件来源的文章,以及它是如何将服务从另一个服务中分离出来的。有两个概念我不清楚。首先,如果在微服务体系结构中,每个服务都可以独立开发,我们如何解释服务间的通信依赖? 例如,如果服务A和服务B需要通信,那么A需要将一个事件发送到一个中央总线,而B需要监听该事件并根据该事件采取行动,但这似乎会产生很多依赖关系。现在,如果我正在开发服务B,我需要知道服务A可以生成的所有事件。此外,

  • 主要内容:1.RPC 架构,2.同步调用与异步调用,3.流行的 RPC 框架,4.HTTP 服务,5.总结1.RPC 架构 2.同步异步调用 3.流行的 RPC 框架 1.RPC 架构 先说说 RPC 服务的基本架构吧。我们可以很清楚地看到,一个完整的 RPC 架构里面包含了四个核心的组件。 Client Server Client Stub Server Stub(这个Stub大家可以理解为存根) 客户端(Client),服务的调用方。 服务端(Server),真正的服务提供者。 客户端存根,

  • 主要内容:1.RPC 架构,2.同步调用与异步调用,3.流行的 RPC 框架,4.HTTP 服务,5.总结1.RPC 架构 先说说 RPC 服务的基本架构吧。我们可以很清楚地看到,一个完整的 RPC 架构里面包含了四个核心的组件。 Client Server Client Stub Server Stub(这个Stub大家可以理解为存根) 客户端(Client),服务的调用方。 服务端(Server),真正的服务提供者。 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后