- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 代码习惯记录
代码习惯:1.红袖红包转账配置扩展开发关于转账配置的缓存,原有key为appId,扩展后为appId_areaId。在开发根据key只获取对应转账配置时采用的入参是String类型的appId_areaid,这种方式不好,应该用 appId,areaId这样的方式...
2021-01-19 17:30:25 80
原创 6-插件思维设计可扩展的RPC架构
传输模块:封装一个单独的数据传输模块用于手法二进制数据。协议封装:在对出入参进行序列化时不仅仅是将对象转化为二进制数据,同时还要加入用于断句的符号来分割不同的请求。这个过程叫做协议封装。这两个处理的过程都是为了保证数据可以在网络传输之后还能正确的还原出输出前的语义。这两个过程可以放在架构中的同一个模块,协议模块。协议模块中还可以加入压缩功能。保证在请求数据包比较大的时候会进行拆分,为了减少因...
2020-04-18 20:01:12 219
原创 5-动态代理和gRPC原理
RPC远程调用核心技术就是动态代理。RPC会自动给接口生成一个代理类,当我们在项目中注入接口的时候,运行过程中实际绑定的是接口生成的代理类。接口在调用方法的时候实际上被代理类拦截到了,然后在代理类里面加入远程调用逻辑。...
2020-04-12 16:15:43 679
原创 3-RPC框架中的序列化
什么是序列化反序列化网络传输的数据必须是二进制数据,但调用方的出入参都是对象,所以需要把对象转化成可传输的二进制,并且要求算法是可逆的,这个过程叫做序列化。服务提供方可以从二进制数据中分割出不同的请求,根据请求类型和序列化类型,把二进制的数据逆向还原成请求对象,这个过程叫反序列化。常用序列化JDK原生序列化序列化过程就是在读取对象数据的时候,不断加入一些特殊的分隔符,这些特殊的分隔符用于...
2020-04-12 00:11:07 210
原创 2-RPC协议
协议的作用RPC请求在发送到网络中之前,需要把方法调用的请求参数转成二进制,然后写入本地的Socket,然后被网卡发送到网络设备中。但是RPC请求不会把请求参数的所有二进制数据一下子筒体的发送到对端机器上,中间可能会拆分成好几个数据包,为了避免语义不一致的事情发生,所以在发送请求的时候设定一个边界,然后收到请求的时候按照这个设定的边界进行数据分割。这个边界语义的表达就是协议。为什么不使用HT...
2020-04-11 23:28:20 165
原创 1-RPC核心原理
1.什么是RPCRPC全称Remote Procedure Cll,远程过程调用。RPC的作用体现在这样两个方面:屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法隐藏底层网络通信的复杂性,让我们更专注业务逻辑RPC通信流程发起调用请求的的一方叫调用方,被调用的一方叫做服务提供方,RPC框架里就封装了整个通信细节。RPC一般默认采用TCP来传输,常用的HTTP也是建立在...
2020-04-11 13:50:24 217
原创 0-RPC学习开端
RPC的意义RPC是解决分布式系统通信问题的一大利器分布式系统中的网络通信一般会采用四层的TCP协议或者是七层的HTTP协议,这主要得益于TCP协议的稳定性和高效性。RPC对网络通信的整个过程做了完成的包装,在搭建分布式系统是,会使网络通信逻辑的开发更加简单,也会让网络通信变得更加可靠RPC的学习内容序列化;编解码;网络传输;连接管理;健康监测;复杂均衡;优雅启停机;异常重试;业务分组...
2020-04-11 13:16:55 115
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人