`

RPC框架使用

 
阅读更多

一、RPC服务开发

本节介绍如何开发一个RPC的服务
## 1.1 定义接口
package rpc.junit;

public interface HttpServiceDemo {

    public String helloword(String name);
}
## 1.2 根据接口实现服务
在这一步,需要注意两点:一、必须实现某一个接口, 二、必须添加注解@HttpService 或 @TcpService, 同时需要说明用户实现的是哪一个接口

例如:@HttpService(HttpServiceDemo.class)


以下为示例代码:

package rpc.junit;

import rpc.common.annotation.HttpService;

@HttpService(HttpServiceDemo.class)
public class HttpServiceDemoImpl implements HttpServiceDemo{

    @Override
    public String helloword(String name) {
        // TODO Auto-generated method stub
        String result = "hello "+ name;
        return result;
    }

}

## 1.3 配置Spring的xml文件,用于启动服务
        <!--服务注组件-->
        <bean id="serviceRegistry" class="rpc.server.registry.ZkServiceRegistryImpl">
        <constructor-arg name="registryAddress" value="127.0.0.1:2181"/>
    </bean>
     <!--服务启组件 -->
    <bean id="rpcServer" class="rpc.server.ExtRpcServer">
        <property name="serviceRegistry" ref="serviceRegistry" />
    </bean>

     <!--rpc服务-->
    <bean id="httpDemo" class="rpc.junit.HttpServiceDemoImpl"/>

根据以上三步即可发布一个RPC服务

 

 

二、RPC客户端开发

## 2.1 引入服务端的接口
引入服务端提供的jar文件,该文件中需要包含服务端所实现的接口

## 2.2 开发代码
客户端通过rpc-client中的RpcProxy类创建一个rpc的代理类,用于实现rpc服务调用功能,这样就能像调用本地代码一样调用远程的rpc服务

package rpc.demo.client;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import rpc.client.proxy.RpcProxy;
import rpc.junit.HttpServiceDemo;

public class HttpClientDemo {

    @Autowired
    private RpcProxy proxy;

   
   
    /**
     * @param proxy the proxy to set
     */
    public void setProxy(RpcProxy proxy) {
        this.proxy = proxy;
    }

    public void testHttp() {
        HttpServiceDemo httpDemo = this.proxy.create(HttpServiceDemo.class);
        String result = httpDemo.helloword("HTTP");
        System.out.println(result);
    }
   
}
## 2.3 配置Spring的xml
        <!--服务发现组件-->
        <bean id="serviceDiscovery" class="rpc.client.discover.ZKServiceDiscovery">
        <constructor-arg name="registryAddress" value="${com.techstar.zkservers}"/>
    </bean>
        <!--rpc服务代理-->
    <bean id="proxy" class="rpc.client.proxy.RpcProxy">
        <constructor-arg name="serviceDiscovery" ref="serviceDiscovery"/>
    </bean>

以上三步及可完成rpc服务调用

 

点击下载源码

分享到:
评论

相关推荐

    Hadoop自己的Rpc框架使用Demo

    要使用Hadoop的RPC框架,你需要完成以下步骤: 1. **定义协议**:创建一个接口,声明客户端和服务器端需要交互的方法。这些方法将在客户端调用,并在服务器端实现。接口通常定义在一个`.proto`文件中,例如`...

    Netty4.1实战-手写RPC框架.pdf

    RPC是一种远程调用的通信协议,例如dubbo、thrift等,我们在互联网高并发应用开发时候都会使用到类似的服务。本专题主要通过三个章节实现一个rpc通信的基础功能,来学习RPC服务...- 手写RPC框架第三章《RPC中间件》

    实现一个简单的RPC框架

    本篇将详细讲解如何使用socket、反射和序列化等技术来实现一个简单的RPC框架。 首先,让我们了解RPC的基本原理。在RPC模型中,客户端(Client)发起一个函数调用请求,这个请求包含了目标函数的名称和参数。RPC框架...

    基于java的高性能RPC框架 nfs-rpc.zip

    5. 通信协议:RPC框架使用的网络通信协议,如TCP/IP、HTTP等。 6. 负载均衡:在多服务器环境下,确保请求均匀分布,提高系统整体性能。 二、Java中的RPC实现 Java中实现RPC框架的关键在于如何高效地处理远程调用。...

    RPC框架的实现原理,及RPC架构组件详解.pdf

    详细讲解RPC

    基于 C++ 的 RPC 框架.zip

    基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++...

    自己写了一个RPC框架

    3. **服务接口定义**:RPC框架需要一种方式来定义服务接口,比如IDL(Interface Definition Language),例如gRPC使用ProtoBuf定义服务接口。 4. **服务注册与发现**:为了能够找到并调用远程服务,RPC框架需要一个...

    RPC框架底层模拟

    通常,RPC框架会封装这些底层细节,提供更高级别的API供开发者使用。 5. **调用模型**: RPC框架有多种调用模型,如同步阻塞、异步非阻塞、回调等。在同步阻塞模型中,调用方会等待直到返回结果;异步非阻塞模型中...

    基于netty的手写rpc框架

    在本项目中,我们将基于Netty实现一个手写的RPC框架。Netty是Java领域的一个高性能、异步事件驱动的网络应用程序框架,常用于构建高效的服务器和客户端。 首先,我们需要理解RPC框架的基本组成部分: 1. **服务...

    JAVA实现简单RPC框架

    在RPC框架中,服务端通过ServerSocket监听请求,客户端使用Socket连接服务端并发送请求,服务端接收请求后执行业务逻辑,然后将结果返回给客户端。 3. **反射**: 反射是Java的一种强大特性,它允许程序在运行时...

    高性能RPC框架 nfs-rpc.7z

    在本场景中,我们关注的是一个名为“nfs-rpc”的高性能RPC框架。NFS(Network File System)最初是UNIX系统间用于文件共享的协议,而这里的“nfs-rpc”可能是指将NFS协议与RPC概念相结合的一种实现,旨在提供高效的...

    jsonrpc是一个基于Java的高性能开源RPC框架

    在Java开发中,使用JSON-RPC框架如`xincao9-jsonrpc-686fade`,开发者可以快速构建分布式服务。该框架通常会提供以下功能: 1. **自动序列化和反序列化**:将Java对象转换为JSON,以及将接收到的JSON数据还原为Java...

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-...

    可参考的自定义实现rpc框架

    标题中的“可参考的自定义实现rpc框架”指的是一个关于如何设计和实现远程过程调用(RPC)框架的教程或示例项目。RPC允许不同计算机系统间的程序进行通信,仿佛它们是在同一台机器上直接调用函数一样。下面将详细...

    6种微服务RPC框架,你知道几个?

    跟语言平台绑定的开源RPC框架主要有下面几种。Dubbo:国内最早开源的...Motan:微博内部使用的RPC框架,于2016年对外开源,仅支持Java语言。 Tars:腾讯内部使用的RPC框架,于2017年对外开源,仅支持C++语言。 SpringC

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现...

    RPC框架原理介绍.docx

    RPC 框架的实现可以使用多种语言和技术栈,常见的实现包括 Java 的 RMI、RPC Framework 等。在实现 RPC 框架时,需要考虑多种因素,如性能、可扩展性、安全性等。 RPC 框架的应用 RPC 框架的应用非常广泛,常见的...

    JAVA实的RPC框架

    Spring框架的集成也是许多RPC实现的选择,它提供了强大的依赖注入和管理能力,可以方便地整合各种服务组件,简化RPC框架的开发和使用。 总结以上,Java实现的RPC框架综合运用了JDK动态代理、NIO Socket通信、反射、...

    自定义rpc框架

    通过这个自定义的RPC框架项目,你可以深入理解Netty的底层I/O原理,掌握Zookeeper的使用,以及如何设计和实现一个完整的RPC框架。同时,这也会帮助你更全面地理解Dubbo的工作方式,为你的分布式系统开发提供宝贵的...

Global site tag (gtag.js) - Google Analytics