手写RPC框架
文章平均质量分 92
壹氿
做一个有准备的人吧~
展开
-
手写RPC框架07-框架容错性设计
服务端异常日志的返回客户端调用超时重试服务端连接数限制服务端Service请求数限流其实在容错性方面还有很多待优化的空间,比如方法级别的限流、超时或者异常之后指定参数回调、服务降级、注册中心异常后的自动重连、Server支持动态调整限流参数等。原创 2023-01-10 22:48:46 · 429 阅读 · 0 评论 -
手写RPC框架08-自定义SpringBoot-Starter
本次我们主要通过自定义的Springboot-starter来完成了我们RPC框架对Springboot的集成,方便了框架的接入和使用成本,大家还有什么需要直接在基础上扩展即可,新年即将来临,别的也不祝福了,就祝大家身体健康吧,目前虽然很难,让我们一起前行,共渡难关!原创 2023-01-10 22:42:16 · 513 阅读 · 0 评论 -
手写RPC框架06-基于线程和队列提升框架并发处理能力
本次版本主要是针对于Server和Client端的并发处理能力进行了优化,Server端主要是通过对请求通过队列和业务线程异步化,使得Netty的NIO线程和业务逻辑解耦,以免阻塞时间过长的逻辑影响整个RPC框架的请求接入;Client端主要是增加了对异步请求的支持,变相的提升了整个框架的处理能力。原创 2023-01-09 15:46:58 · 524 阅读 · 0 评论 -
手写RPC框架05-通过SPI机制增加框架的扩展性的设计与实现
SPI全称,是Jdk提供的一种用来扩展框架的服务能力的机制,它能够在运行时将我们定义的类加载到JVM中并实例化。通常面向对象编程推荐的是面向接口编程,而SPI机制就需要先定义好接口,后续对接口进行实现,而如果我们想要替换实现或者增加接口实现的的话,一般都需要修改源代码,SPI机制就是来解决这个问题的,在运行时可以动态的去加载我们配置的Class,将其装配到框架中去。SPI的主要实现思路其实就是通知设置某种规则,将需要扩展的类配置到指定目录下,通过程序读取到指定的配置后,将类进行实例化,供框架使用。原创 2023-01-06 10:18:42 · 471 阅读 · 0 评论 -
手写RPC框架04-过滤器模块实现
本版本我们基于责任链模式完成了对RPC框架中流程化功能的整合,这些零零散散的功能我们通过过滤器的方式进行了实现,比如服务的分组选择、IP直连、Token统一校验等,减少了各个模块间的耦合性,如果需要扩展新的过滤器,只需要实现Client或者Server对应的接口即可。原创 2023-01-06 10:17:29 · 616 阅读 · 0 评论 -
手写RPC框架03-序列化模块设计与实现
计算机底层的传输都是通过字节流的方式进行传输的(byte[]),如果我们的内容(字符串、自定义实体、文件等等)需要传输,则需要把这些内容转换成byte[],这一过程就是序列化;常见的序列化框架有:JDK、FastJSON、Hessian、Kryo、Protocol Buf,为了兼容各种不同的序列化框架,因此我们在RPC框架中抽离了一层序列化层,专门用于对接市面上常见的序列化技术框架。每种序列化框架的性能各有不同,在使用时还需要根据实际情况自行选择,后续我们会对常见的序列化框架进行性能对比测试。原创 2023-01-04 23:02:08 · 745 阅读 · 0 评论 -
手写RPC框架02-路由模块设计与实现
本次我们完成了RPC框架中路由层的设计与实现,并实现了随机路由算法、根据权重进行访问和轮询算法。原创 2023-01-04 16:54:52 · 586 阅读 · 0 评论 -
手写RPC框架01-整合注册中心模块设计与实现
- 如果同一个服务有10台不同的机器进行提供,那么客户端该从哪获取这10台目标机器的ip地址信息呢?- 随着调用方的增加,如何对服务调用者的数据进行监控呢?- 服务提供者下线了,该如何通知到服务调用方?原创 2023-01-03 20:56:57 · 620 阅读 · 0 评论