chenowl / YaRPC

A simple RPC Demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

YaRPC

A simple RPC Demo 此次项目,笔者选题为Ya-RPC的实现,原题如下:

  1. 编写一个简易RPC框架,YA-RPC
  2. 支持基本数据类型:int, float, string
  3. 支持 At-least-once 语义
  4. 使用YA-RPC编写一个demo程序,实现如下API: 1. 远程调用 float sum(float a, float b) 2. 远程调用 string uppercase(str) 3. 不少于2个客户端,1个服务端
  5. 开发语言不限

笔者使用了两种编程语言——C#和Python,分别实现了Ya-RPC的服务端和客户端。选择两种语言的目的在于实现一个扩展性更强的RPC框架,即不依赖于服务端本身的架构,而是只需要遵守协议规范,便可以正常使用RPC。 Ya-RPC的功能较为简单,暂时只支持int、float和str的数据类型。服务优化上有所欠缺,但是依然可以执行一些简单的RPC任务,并且在设计的时候,考虑了框架的扩展性,对于一个新的过程定义,只需要及少量代码便可以注册到框架上来。同时,对于每一个使用Ya-RPC的客户端,都将与服务器建立一个TCP长连接,且服务端将专门开启一个新的子线程处理特定客户端的请求,直到客户端结束使用RPC。这样设计可以防止客户端每次调用都需要新建一个连接,且开启新的线程可以让主线程继续监听是否有其他客户端发起连接,也就是可以同时处理多个客户端的请求,极大程度提高了服务端效率。

About

A simple RPC Demo


Languages

Language:C# 70.1%Language:Python 29.9%