首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Dubbo学习Netty中的FastThreadLocal

在之前的Netty的FastThreadLocal文章中介绍了FastThreadLocal在Netty中的实现和使用....今天在浏览Dubbo源码的时候,发现了一个com.alibaba.dubbo.common.threadlocal.InternalThreadLocal类,细看下它的实现,代码与io.netty.util.concurrent.FastThreadLocal...看下Dubbo源码中对它的解释 This design is learning from io.netty.util.concurrent.FastThreadLocal which is in Netty...原来Dubbo是学习了Netty的设计. Dubbo并没有使用JDK的ThreadLocal, 它也是使用和Netty一样的设计理念, 底层使用数组实现....个人见解: 有时候学习源码, 比如学习Netty,可能职业生涯中都不会使用Netty实现一个高性能的框架. 学习源码是让我学习里面的一些思想和解决问题的思路,能够运用到日常的开发工作中.

19310
您找到你想要的搜索结果了吗?
是的
没有找到

21-基于Netty 手写Dubbo RPC

实现Dubbo RPC 需求说明 Dubbo底层使用了Netty作为网络通讯框架, 要求用Netty实现一个简单的RPC框架 模仿Dubbo, 消费者和提供者约定接口和协议, 消费者远程调用提供者服务..., 并按照约定返回数据 创建一个消费者, 该类需要透明的调用自己不存在的方法, 内部使用Netty请求提供者返回数据 开发分析图 代码实现 定义接口 package com.dance.netty.netty.dubbo.common.api...; import com.dance.netty.netty.dubbo.provider.service.impl.HelloServiceImpl; import io.netty.bootstrap.ServerBootstrap...; import com.dance.netty.netty.dubbo.common.netty.NettyServer; /** * 服务启动类 */ public class ServerBootstrap...; import com.dance.netty.netty.dubbo.common.api.HelloService; import com.dance.netty.netty.dubbo.common.netty.NettyClient

48920

NettyDubbo中的线程名称

RocketMQ和Dubbo在它们的底层都使用Netty作为网络通信的框架.那么今天我们就来看一下,在Dubbo中,使用的Netty线程名称叫什么?...作为提供者,有两类线程.一类是Dubbo自己的线程,另一类就是底层通信的Netty线程....在Netty中也有线程池的概念,但是它的池是以Group组的形式存在的....1-2 K-1-3 比如我们有个名字叫Q的线程池,它是第4个线程池,它里面有3个线程,那么这三个线程的名字就是 Q-4-1 Q-4-2 Q-4-3 规则是 线程池名称-第几个线程池-池中第几个线程 在Netty...这么算下来,应该还少一个线程池才对.没错,在Netty中有一个GlobalEventExecutor类,在它里面有个静态常量的单例.它也会使用一个线程池.所以说轮到正在的为Dubbo提供者创建线程池的时候

1.3K10

Netty】04 - 利用netty搭建类似于dubbo的rpc框架

学自蚂蚁课堂项目 项目地址: dubbo原理图 搭建dubbo rpc远程调用框架的思想 搭建dubbo-server 自定义rpc注解,在需要注册到zk上的类加,标识此类需要注册到zk上 将本地服务注册到...zk上 zk上的节点要支持多个,以备之后的集群情况 创建netty的服务器端,并添加相应的handler 通过handler去解析相应,并利用反射执行相应的方法 获取反射调用的结果,再相应给客户端即可...搭建dubbo-client 添加服务发现模块 添加负载均衡器模块(采用策略模式) 消费端根据依赖的接口获取serviceName,去zk上获取服务列表 再根据负载均衡策略选出一个节点 封装rpcRequest...NettyServer,等待相应的结果 获取到结果以后,再将结果返回给调用处即可 项目难点: 客户端调用的时候只有接口,没有实例,是怎么进行调用的 采用jdk动态代理,或者cglib动态代理生成代理类 netty

58220

NettyDubbo服务暴露时何时被使用

Dubbo的底层通信使用的是Netty....关于Dubbo的服务暴露流程,网络上已经有很多优质的文章.此篇文章以Dubbo的服务暴露为主线(不会详细讲解),观察一下,Netty在服务暴露过程中何时被使用. // 服务暴露的起点 com.alibaba.dubbo.config.spring.ServiceBean...getBindAddress()); channelFuture.syncUninterruptibly(); channel = channelFuture.channel(); } 上面的代码就是很熟悉的Netty...也就是说,在暴露服务的过程中,在进行doLocalExport本地暴露的时候,会分别经过RegistryProtocol#export和DubboProtocol#export,最后通过Netty创建一个服务端...总结 Dubbo在暴露服务的过程中,首先会通过Netty创建并启动服务端,监听外部调用接口的请求.紧接着会将服务注册到注册中心(例如Zookeeper).

72310

NettyDubbo中的使用过程源码分析

最近项目中使用了netty服务,空余时间差了下dubbo中是如何使用netty做底层服务的,找了相关资料记录一下: 众所周知,国内知名框架 Dubbo 底层使用的是 Netty 作为网络通信,那么内部到底是如何使用的呢...1. dubbo 的 Consumer 消费者如何使用 Netty --demo使用的是dubbo源码中的dubbo-demo public static void main(String[] args...调用接口的时候并未进行别的操作 故dubbo的消费者初始化的重点应该为创建一个动态代理 而对netty的使用也应该在动态代理的初始化中 而后在createProxy方法中在调用代理工厂生成代理的时候使用的...至此netty客户端创建成功 一个消费者对应一个netty客户端 既然已经初始化结束了 初始化结束了 下面我们看看各种Netty事件 熟悉Netty的都知道 Netty的方法都在Handler中,而上述初始化时...总结 可以看到,dubbo 使用 Netty 还是挺简单的,消费者使用 NettyClient,提供者使用 NettyServer,Provider 启动的时候,会开启端口监听,使用我们平时启动 Netty

70140

微服务架构之服务冶理Dubbo-Netty流程

一、服务消费者 服务引用时流程会走到DubboProtocol#refer方法,之前篇章中没有提及Netty环节,本节补上 ?...主要业务逻辑是进行创建Netty客户端,客户端只需要创建一个 EventLoopGroup即可,然后将编解码、心跳、业务处理器注册到pipeline事件流中。...建议优化方式:通过启动项channelOption设置发送队列的长度,或者通过-D启动参数配置长度 2、nettyChannel#send方法中没有直接进行回推发送失败的消息,因为Dubbo提供了容错补偿机制...,负责IO读写;将EventLoopGroup注册到bootstrap并处理连接,可以看到使用的是一主多从线程模型,Netty根据group参数设置不多的reactor线程模型,默认支持单线程、多线程模型...通过wrapper包装类执行invokeMethod得到结果,然后通过netty的channel响应消息给服务引用者

1K20

NettyNetty初识篇

为什么要用Netty Netty是一个NIO客户端服务器框架,支持快速、简单地开发协议服务器和客户端等网络应用程序。它大大简化和流线网络编程,如TCP和UDP套接字服务器。...因此,Netty成功地找到了一种方法,在不妥协的情况下实现开发、性能、稳定性和灵活性。 Netty应用场景 暂时总结如下场景: 1.远程过程调用(RPC),比如dubbo 2.聊天服务器。...5.Netty与MQTT协议打造LOT服务器。 6.网络游戏服务器。 其实netty和Spring作用非常相似,只是各自的领域不同。如果你是想用Java的TCP层操作选netty准没错。...Netty架构设计 ?...In Action》 《Netty权威指南》 Netty官网 总结 本文并没有深入学习,仅仅是一些表面的介绍。

99730

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券