RPC
文章平均质量分 64
纸上得来终觉浅,绝知此事要躬行
这个作者很懒,什么都没留下…
展开
-
分布式事务--手写TCC
前言基于之前的RPC服务手写一个简易的分布式事务TCC实现思路创建全局唯一ID能够让RPC中各个服务感知是同一个TCC通过注册事务同步器在事务提交成功之后 先将confirm和cancel方法注册至zk服务当所有的try方法都提交成功之后 获取zk中所有的confirm方法名称等信息 通过PRC调用各自写好的confirm方法当有try方法执行失败的时候 获取zk中所有的cancel方法名称等信息 通过PRC调用各自写好的cancel方法如果有confirm和cancel方法失败则需要存储到原创 2021-05-20 17:47:25 · 885 阅读 · 1 评论 -
Spring boot--自定义类扫描器
Spring boot--自定义类扫描器前言ClassPathBeanDefinitionScanner简介ImportBeanDefinitionRegistrar简介自定义注册过程自定义注解实现ImportBeanDefinitionRegistrar自定义类扫使用总结前言之前一直在写RPC框架是基于Spring的框架。通过扫描接口并将其注入代理工厂的方式是采用了Spring 自定义标签的...原创 2019-09-11 10:12:51 · 5585 阅读 · 9 评论 -
Netty进阶之路-JDK业务线程池
Netty进阶之路-JDK业务线程池前言JDK业务线程池分析JDK业务线程池实现前言之前我们说了有2种思路解决服务端处理耗时的业务,第一种EventExecutorGroup,第二钟就是采用DK业务线程池JDK业务线程池分析和EventExecutorGroup不同,I/O线程会将业务放入到jdk线程中执行,writeAndFlush之后再放入I/O线程中。如果是一个长连接,业务非常耗时可...原创 2019-05-24 15:00:10 · 1895 阅读 · 2 评论 -
Netty进阶之路-I/O线程和业务线程分离
Netty进阶之路-I/O线程和业务线程分离前言Netty的线程模型I/O线程和业务线程解决思路前言之前我们对于Netty的客户端进行了优化,现在我们来看看服务端有哪些地方可以优化。Netty的线程模型目前服务端我们通常用的就是主从Reactor多线程模型一个线程组用于接收客户端的连接请求一个线程组用于处理I/O相关的读写或者执行系统Task和定时任务 //netty主从线程模型(...原创 2019-05-10 17:07:44 · 4445 阅读 · 2 评论 -
Netty进阶之路-LengthFieldBasedFrameDecoder和LengthFieldPrepender
Netty进阶之路-LengthFieldBasedFrameDecoder和LengthFieldPrepender前言解决思路LengthFieldPrependerLengthFieldBasedFrameDecoder前言之前我利用MessagePack编解码,作用其实就是为了提升性能(网络传输中的带宽和本身的存储)。但是之前的在末尾加换行符的解决粘包/半包问题已经不适用了,这篇来讲讲...原创 2019-05-07 09:45:33 · 956 阅读 · 0 评论 -
Netty进阶之路-客户端池化疑云
Netty进阶之路-客户端池化疑云前言FixedChannelPoolFixedChannelPool 构造参数FixedChannelPool 改造总结前言上一篇我们了解了EventExecutorGroup的工作机制,但是依然没有解决我们的1秒执行一次的问题。FixedChannelPool我们知道了EventExecutorGroup的工作机制。对于某个客户端连接Channel,只会...原创 2019-05-14 15:55:44 · 1695 阅读 · 1 评论 -
Netty进阶之路-EventExecutorGroup疑云
Netty进阶之路-EventExecutorGroup疑云前言EventExecutorGroup用法测试效果EventExecutorGroup工作机制前言上一篇我们讲了不能把耗时的业务放在I/O线程中执行,并说了有2中方式解决。这篇先将Netty的提供的EventExecutorGroup。EventExecutorGroup用法改动只有2行代码 创建一个EventExecutorG...原创 2019-05-14 15:22:53 · 6304 阅读 · 2 评论 -
Netty进阶之路--客户端池化
Netty进阶之路--客户端池化前言Netty线程池Netty客户端处理类前言目前的RPC框架中消费者端是调用一次服务就会进行一些netty的初始化,绑定端口等操作。那发起100次的话 就是进行100次这样的连接,消耗的资源太多了。所以希望客户端池化。Netty线程池之前自己是初步接触Netty,用的还是5.x版本。再查阅了资料发现Netty自带了线程池很开心,但是自己试了半天好像没有这个...原创 2019-04-30 15:16:15 · 1370 阅读 · 0 评论 -
Netty进阶之路--优雅的退出
Netty进阶之路--优雅的退出前言Netty优雅退出Netty优雅退出(同步方式)Netty优雅退出(异步方式)Netty退出做了一些事情前言之前的写的轻量级的RPC框架基础功能差不多搭建完了,还差一些全局配置中心和网关,这两个打算后期在慢慢写。目前一直在看关于Netty相关的书籍和资料,主要是希望自己能够在通信那块加强一些和把RPC框架(Netty方面的)优化一下,也为了以后找工作做准备。...原创 2019-04-30 14:52:16 · 1999 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--服务自动限流
自己设计一个的轻量级的RPC框架--服务自动限流前言服务自动限流服务自动限流思路初始化Map定时任务调用改造效果前言之前被各种事情耽搁了我的RPC框架,最近抽了一点时间继续写。上篇写了服务的手动降级,这篇主要写关于服务自动限流。服务自动限流通常情况下无论是客户端还是服务端都需要对于突发事件有相应的处理。服务端:服务的降级和限流(面对突发的大流量,服务端的自我保护措施,例如直接停止服务或者...原创 2019-04-25 09:24:21 · 484 阅读 · 0 评论 -
Netty进阶之路-MessagePack编解码
Netty进阶之路-MessagePack编解码前言MessagePack优点Netty客户端--MessagePack编解码Netty客户端--MessagePack编码Netty客户端--MessagePack解码Netty客户端--编解码使用Netty服务端--MessagePack编解码Netty服务端--MessagePack解码Netty服务端--MessagePack编码Netty服...原创 2019-05-05 10:24:19 · 648 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--服务手动降级
自己设计一个的轻量级的RPC框架--服务手动降级前言netty 客户端前言前面几篇博客将的是搭建了一个轻量级的RPC的基础功能。最近也在学习Spring cloud,发现除了一些基础的功能还包含例如服务的断融、配置中心、网关等功能。所以接下来自己的目标就是完成这些功能的简易版本。netty 客户端...原创 2019-03-19 08:41:32 · 552 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--客户端netty
自己设计一个的轻量级的RPC框架--客户端netty前言netty 客户端netty 发送请求netty 接收请求说明前言之前讲过netty的服务端,其实客户端和服务差不多。主要是建立连接,发送请求和接收请求做业务处理。netty 客户端private RPCRequestNet(String host,int port) { //netty线程组 Even...原创 2019-03-07 11:49:57 · 374 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--客户端Spring 自定义标签和自定义注入bean
自己设计一个的轻量级的RPC框架--客户端Spring 自定义标签和自定义注入bean前言Spring 自定义标签spring-rpcClient.xsdspring.schemasspring.handlersRPCClientNameHandler自定义注入bean解释一下前言尝试后端调用服务要和普通controller一样,所以普通的注入service接口以及不适用于当前场景。因为调用接...原创 2019-03-04 15:35:13 · 589 阅读 · 1 评论 -
自己设计一个的轻量级的RPC框架--服务端netty
自己设计一个的轻量级的RPC框架--服务端netty创建netty服务梳理一下流程netty解码器和TCP的粘包和拆包介绍TCP 拆包/粘包TCP 拆包/粘包 解决办法netty解决拆包/粘包问题 解码器创建netty服务类创建调用服务工具类#前言Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务...原创 2019-03-04 14:31:21 · 374 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--服务端zookeeper的发现和注册
自己设计一个的轻量级的RPC框架--服务端zookeeper的发现和注册ZooKeeper java使用方法建立连接创建临时节点创建临时获取子节点删除节点ZooKeeper的使用第一步标识将要被注册的服务第二步将建立连接 将服务createnode第三步配置信息ZooKeeper java 大致流程#前言ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。常用场景1.数据发...原创 2019-03-04 11:46:34 · 534 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架
自己设计一个的轻量级的RPC框架RPC简介RPC技术选择RPC流程图后期展望#前言本人是一个java小菜鸟 但是希望自己成为一个大牛。目前真正学习分布式和微服务的一些相关知识,由于公司没有相关的项目,所以学习起来比较困难。本身深入了解分布式的相关知识,所以开始自己设计一个轻量级的RPC框架(底下会有githup地址)RPC简介RPC(Remote Procedure Call)—远程过程调...原创 2019-03-04 11:14:33 · 852 阅读 · 2 评论 -
自己设计一个的轻量级的RPC框架--zookeeper服务上下线通知和watch机制
自己设计一个的轻量级的RPC框架--zookeeper服务上下线通知和watch机制前言watch机制watch注册watch触发watch事件类型服务的上下线通知效果前言这篇博客主要是因为自己如果服务端每次都去访问zookeeper获取一些服务的节点信息感觉zookeeper的压力比较大,所以打算把服务的信息缓存放在本地,这里就要设计到zookeeper的watch机制。(PS 自己也踩了坑...原创 2019-03-06 16:10:27 · 480 阅读 · 0 评论 -
自己设计一个的轻量级的RPC框架--客户端Spring工厂Bean
自己设计一个的轻量级的RPC框架--客户端Spring工厂Bean前言为什么要用FactoryBean接口使用FactoryBean接口简单介绍jdk动态代理Proxy类InvocationHandler 接口梳理一下前言上篇博客讲到实现自定义bean,其实那边注入的bean是一个工厂Bean。这篇主要就是来讲解如何定义一个bean,并且通过jdk的动态代理来实现对消费接口的代理。为什么要用...原创 2019-03-05 09:27:56 · 459 阅读 · 2 评论