美文网首页
prpc开发日志-2021年3月20日

prpc开发日志-2021年3月20日

作者: 扫地专业高级研究生 | 来源:发表于2021-03-20 22:38 被阅读0次

清晨7时40分左右,继续上次构思的总体设计,准备着手代码实现。在此基础和目的上,以先后顺序记录整个思考和实现过程。

1,开始构思整体的目录结构,初步构思为总目录prpc,下分别创建proxy,stub,connetion目录,加prpc.py文件,思路为各个目录代表了各个组件,各个组件之内可能有各自的配置和其他工具py之类的,彼此相互独立,所以将目录分开

2,删除了proxy,stub,connection目录,新增proxy,stub,connection后缀为py的文件,初步考虑,代码量和项目目的需求量的原因,觉得拓展过多的不必要的功能实际上是没有必要的,时间和精力都不允许

3,编写prpc.py,通过在方法上加标签,起到拦截方法执行,从而将方法加入代理类,期间查询了@标签的用法,以及其拦截实现中参数传递和方法返回的机制

4,在prpc.py中引入proxy模组,在proxy模组中新增proxy方法(后改为invoke方法,想法的来源是java,虽然并不知道有什么特殊含义),proxy名为代理,但在代码实现过程中,他并未起到代理的作用,invoke方法,实际上只是在获取方法参数和封装请求的context,然后直接返回(可能是对代理的理解不透彻,也可能是因为并没有那个需求,实际上python的语法跟java还是差距很大)

5,proxy模组invoke方法返回是封装的请求context,直接返回到了prpc模组,prpc引入stub模组,执行invoke方法,这里开始有另外一种想法,就是整个调用过程不是这样分步骤的,而是链路方式的,想法是,怎么去的就原路返回,这样的好处就是不必要把请求和响应分离,原路返回的好处就在于请求信息的封装可以展示在同一个方法下面,甚至可以使用同一个方法,减少代码量,并且增加代码的连贯性,但后来还是采用了,直接返回处理结果后,供下一个过程调用,这样做的目的是,为了在prpc模组下实现整个过程的总控。

6,stub组件invoke的方法,功能相对来说,比proxy明确的多,发现远程服务,对比,配置远程服务信息,返回

7,stub返回远程调用信息后,prpc引入connction模组,这个模组的设计主要是为了建立连接,并发送消息,同时外加了组装报文的作用,刚开始是如何组包的问题,加入了不同的报文转换方式,json,bytes,base64,str这几种方式,同时在思考发送信息过后响应超时或者报文失败的因素影响,增加了一个些控制字段,标示表文类型的字段(message_type,request,response,ack,error,repeat),这些报文类型,主要是让服务端识别请求端想要的响应内容,比如repeat指的是,在响应接收失败,或者超时或者丢包的情况,可以要求服务器重发响应信息,这个功能看起来还是挺不错,但也增加了工作量

8,同时也开始思考,这些控制信息应该放在什么地方配置,思考的结果是,放在connection下,作为一种可变配置,通过stub的invoke_type字段来控制是否支持重传。

9,然后就是接收到的报文验证和解包问题,设计了报文头,在不用转换的情况,获取主要信息来验证报文和确认请求类型。

10,响应回来的处理逻辑,相对来说比较简单(主要是太累了,难得想),一个大问题就是变量命名出现了脑洞不够的情况,有些东西很明显重复或者词不达意,哎。

11,动次打次,动次打次,动次打次,打击乐打击中。。。哈哈哈哈哈

相关文章

  • prpc开发日志-20210405

    PRPC2.0.0设计文档 1,相关概念 整体理解视角:模拟快递运输,将整个过程比喻成包裹运输,包括,包裹的登记,...

  • prpc开发日志-20210327

    上周的工作,把客户端的主要的设计实现,并增添了一些新的东西,来满足一些特殊场景,主要原因是为了能够增加整个软件的可...

  • prpc开发日志-20210404

    晚上好,我们的今天离不开祖辈的辛辛付出,心中悼念,以今日之拼搏,承他们的愿望,愿生活一切安好,快乐幸福,和睦互助。...

  • prpc开发日志-2021年3月20日

    清晨7时40分左右,继续上次构思的总体设计,准备着手代码实现。在此基础和目的上,以先后顺序记录整个思考和实现过程。...

  • ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔《ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理》和《ABP开发框架前后端开发...

  • 日志打印规范及技巧学习总结

    一、日志打印级别 DEBUG(调试)开发调试日志。一般来说,在系统实际运行过程中,不会输出该级别的日志。因此,开发...

  • 【Dungeon Story】开发日志 2014-五月

    【开发日志 2014.0508】 ● 觉得还是写个开发日志吧…… 要不然做了后面忘了前面各种忘光光的…… ● 今天...

  • Swift的延迟求值特性

    考虑这样的开发需求场景:我们希望开发一个日志的组件, 日志通过一个LogLevel来控制是否输出相关的日志内容.一...

  • springmvc下的日志配置

    前言 日志是开发一个系统必不可少的工具,所有问题的解决,最终依赖记录的日志去查询。 开发多年,spring的日志配...

  • HarmonyOS开发 C++中打印日志

    在HarmonyOS应用开发中打印日志很简单,HarmonyOS提供了HiLog日志系统,帮助开发者了解应用/服务...

网友评论

      本文标题:prpc开发日志-2021年3月20日

      本文链接:https://www.haomeiwen.com/subject/ordgcltx.html