手写 RPC 框架 笔记
大概花了十天左右,中间还过了两天清明节,总算是把RPC项目搞定
Github地址:https://github.com/JOHNCHEN27/RPC-Framework
作为24应届,可能是由于缺少好的、少见的项目经验(简历上只写了一个黑马的微服务项目)导致从春招到现在工作一直还没着落,期间投递了很多简历,只拿到一个上海Java实习生的线下面试机会,但是因为三月份在校暂时有点事就没去,此后一直投递简历无果,后来思考了下觉得还新增一个项目,再稍微修改一下简历可能会好很多,刚好看到鱼皮哥新完结的RPC项目,就决定上手写到简历中。
此前学习Java中没有接触过框架项目,甚至RPC是我第一次了解到,一开始可能觉得有点胆怯,毕竟没接触过,但看了一章项目后感觉还好,从这个示例中我也了解到了RPC框架,由于之前学过微服务的一些组件,如Nacos、消息队列,所以对这个RPC框架理解起来也快,大概写一下项目的收获吧
全局配置加载:学习到了自定义配置设计思路,第一次使用到了Hutool工具类中的Props,通过编写工具类来读取配置并返回配置对象,对于框架初始化用到了设计模式中的单例模式,也是第一次单例模式的应用,之前只学过理论,对于实现有着模糊的概念,这次更加清晰。
认识Mock:Mock也是第一次接触,代指模拟对象,用来测试代码,Mock服务代理也是通过代理工厂的形式来获取Mock代理对象,工厂模式的设计让创建对象更简易。
序列化器和SPI机制: 重新认识了一下序列化器的种类,之前写项目只用过JSON,Hessian、Kryo也只是听说,这一章实现了这三种序列化器,SPI机制也是第一次认识,SPI机制给我的感觉就是太秒了,支持用户扩展,自定义自己想要的配置,对反射也有了一个全新的认识。
注册中心:使用的是Etcd,这个也是第一次接触,不过很好理解,学过redis更容易上手这个,小白也能上手,简单易用,注册中心的思想跟nacos这种类似,基于键过期机制和定时任务来实现心跳机制和续期,用到了JVM的ShutdownHook来让服务节点正常下线,还添加了一个本地缓存来存储节点信息列表,提高性能
自定义协议:Vert.x的TCP服务器的使用TCP进行网络传输,科班学过计网,对TCP协议的结构了解,自定义消息栈这块也比较理解,接触到真正设计协议内容,有了一个更好的理解,设计非常巧妙。
负载均衡、重试、容错机制:这三张章的内容在之前学过的消息队列中见到了其影子,还是比较容易理解上手,针对系统出错或异常的几个机制,提高框架的可靠性。
启动机制和注解驱动:第一次写自定义的注解,写到后面对项目的执行流程更加畅通的理解,反射这块很久没用都有点忘了,这个项目直接拉回我的记忆。
学习到了Vert.x、全局配置加载、SPI机制、动态代理、注册中心Etcd实现、工厂模式和单例模式的实践、自定义协议实践、负载均衡、重试、容错机制,启动机制和注解驱动等。
Github中项目的REAMD.md中记录了实现项目的思路,以及大致的学习笔记,接下来继续巩固一下项目,回顾一下涉及到的知识点加深影响
今天重新调整了一下简历内容,把这个项目写上去了,之后就是继续投递简历,争取拿到一个相对不错的工作,一边看八股投简历一边再尝试着完成一个项目加强自己对开发的熟悉,希望收到一个好的结果。

