RPC服务治理框架实战(一) - 手写RPC

热榜客
• 阅读 1556

1 从使用者考虑

用,户使用RPC框架开发过程时需要做什么?

  • 定义过程接口

RPC服务治理框架实战(一) - 手写RPC

  • 服务端实现过程
  • 客户端使用生成的stub代理对象

RPC服务治理框架实战(一) - 手写RPC

2 设计客户端

客户端生成过程接口的代理对象
设计客户端代理工厂,用JDK动态代理即可生成接口的代理对象。
RPC服务治理框架实战(一) - 手写RPC

思考

1、在ClientStubInvocationHandler中 需完成哪些事情?
RPC服务治理框架实战(一) - 手写RPC

2、将请求的内容编组为消息这件事由谁来做?
RPC服务治理框架实战(一) - 手写RPC

3、消息协议是固定不变的吗?它与什么有关?
看框架对协议的支持广度,如果支持多种协议,就是会灵活变化的,它与具体的服务相关,
A服务提供者可能选用的是协议1,B服务提供者可能选用协议2。

4、某服务是用的什么消息协议这个信息从哪来?
从获取的服务信息中来,因此需要一个服务信息发现者。

把发现者设计出来, 要求:可灵活支持多种发现机制

RPC服务治理框架实战(一) - 手写RPC
RPC服务治理框架实战(一) - 手写RPC
5、我们想要做到可以支持多种协议,我们的类该如何设计?
面向接口、策略模式、组合
RPC服务治理框架实战(一) - 手写RPC

  • 问题:

➢ marshalling和unmarshalling方法该定义怎样的参数与返回值?
➢ 编组、解组的操作对象是请求、响应,请求、响应的内容是不同的。编组、解组两个方法是否满足?

设计客户端协议层

  1. 定义框架标准的请求, 响应类

RPC服务治理框架实战(一) - 手写RPC

  1. 将协议层扩展为四个RPC服务治理框架实战(一) - 手写RPC

消息协议独立为一层(客户端、服务端均需要)

网络层
发送请求,获得响应
要发起网络请求,则须知道服务地址
RPC服务治理框架实战(一) - 手写RPC

  • 客户端完整类图

RPC服务治理框架实战(一) - 手写RPC
实现客户端
按照类图设计,填码!
看ClientStubProxyFactory核心类的代码示例!

在实现过程中,协议层涉及一个重要概念

  • 参数序列化、反序列

3 设计服务端

3.1 RPCServer

客户端请求过来了,服务端首先需要通过RPCServer接收请求。
RPC服务治理框架实战(一) - 手写RPC

RPC服务治理框架实战(一) - 手写RPC

  • RPCServer

RPC服务治理框架实战(一) - 手写RPC

3.2 思考

RPCServer接收到客户端请求后,还需要做哪些工作?
RPC服务治理框架实战(一) - 手写RPC

网络层在RPCServer中提供多线程来处理请求,消息协议层复用客户端设计的。
(设计一个请求处理类,来完成网络层以上的事情。)

3.3 RequestHandler

RPCServer接收到请求后,将请求交给RequestHandler来处理
RequestHandler调用协议层来解组请求消息为Request对象,然后调用过程!
RPC服务治理框架实战(一) - 手写RPC

人性的拷问

➢ RequestHandler如何得到过程对象?
➢ Request中有什么?
➢ 服务名、方法名、参数类型、参数值
➢ 是否需要一个过程注册模块?

看看之后的设计
RPC服务治理框架实战(一) - 手写RPC

过程注册模块:让用户将他们的过程注册到RPC框架
过程暴露模块:想对外发布(暴露)服务注册、暴露可以由同一个类实现

RPC服务治理框架实战(一) - 手写RPC

  1. RPCServer 中实现网络层: Netty, 使用RequestHandler
  2. ServiceRegister 模块实现服务注册、发布。
  3. RequestHandler 中实现消息协议处理、过程调用

代码实现

  • 首先,用户需要设置你的端口和协议哦

RPC服务治理框架实战(一) - 手写RPC

RPC服务治理框架实战(一) - 手写RPC

本文由博客一文多发平台 OpenWrite 发布!
点赞
收藏
评论区
推荐文章
Dubbo架构设计与源码解析(二) 服务注册
作者:黄金一、Dubbo简介Dubbo是一款典型的高扩展、高性能、高可用的RPC微服务框架,用于解决微服务架构下的服务治理与通信问题。其核心模块包含【RPC通信】和【服务治理】,其中服务治理又分为服务注册与发现、服务容错、负载均衡、流量调度等。今天将重点介
Stella981 Stella981
4年前
Apache Dubbo的爱奇艺之旅
ApacheDubbo 简单介绍ApacheDubbo是一款开源的RPC(RemoteProcedureCall,远程过程调用)框架,其提供了简单易用、高性能的RPC能力、灵活可控的扩展、强大的服务治理、完善的开源生态支持,目前已有Java、Go、JS、Python等多个语言支持。ApacheDubbo更
Wesley13 Wesley13
4年前
RPC 定义 和 原理
一、RPC  1.RPC是什么  RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了
Wesley13 Wesley13
4年前
Java系统和PHP系统相互调用
一、HTTPJSON方式的缺点1.JSON序列化效率低2.多语言服务治理功能低二、关于RPC框架RPC框架大致分为两类,一种是偏重服务治理,另一种侧重跨语言调用2.1服务治理型特点功能丰富,提供高性能的远程调用、服务发现及服务治理能力,适用于大型服
Wesley13 Wesley13
4年前
RPC原理及实现
1简介RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。2调用分类RPC调用分以下两种:同步调用客户方等待调用执行完成并返回结果。
Wesley13 Wesley13
4年前
RPC的简单实现
RPC(RemoteProcedureCall)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/
Stella981 Stella981
4年前
Rpc基础 原理 框架
一.RPC的原理1.RPC是什么RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC
Stella981 Stella981
4年前
Dubbo 如何成为连接异构微服务体系的最佳服务开发框架
从编程开发的角度来说,ApacheDubbo(以下简称Dubbo)首先是一款RPC服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时Dubbo也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。在这篇文章中,我们将以以上基础能力为背景,尝试突破Dubbo
Stella981 Stella981
4年前
RPC简介与hdfs读过程与写过程简介
1.RPC简介RemoteProcedureCall远程过程调用协议  RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络
API 小达人 API 小达人
2年前
Eolink Apikit「 零代码」快速发起 RPC 接口自动化测试
RPC(RemoteProcedureCall)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC的核心思想是将远程服务抽象成一个接口,客户端通过调用这个接口,就可以实现对远程服务的访问。EolinkApikit支持多协议,RPC、DUBBO、HTTP、REST、Websocket、gRPC、TCP、UDP、SOAP、HSF等。零代码快速发起RPC接口自动化测试,可以根据RPC接口文档自动生成测试用例,开发者只需简单修改即可使用。
如何手搓一个自定义的RPC(远程过程调用框架)
1、RPC(远程过程调用概述)远程过程调用(RPC,RemoteProcedureCall)是一种通过网络从远程计算机程序上请求服务,而无需了解网络细节的通信技术。在分布式系统中,RPC是一种常用的技术,能够简化客户端与服务器之间的交互。本文将介绍如何基于