首页
学习
活动
专区
圈层
工具
发布

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实现一个高性能的框架. 学习源码是让我学习里面的一些思想和解决问题的思路,能够运用到日常的开发工作中.

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

    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

    62920

    【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

    67620

    Netty在Dubbo服务暴露时何时被使用

    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).

    1.2K10

    Netty在Dubbo中的使用过程源码分析

    最近项目中使用了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

    95540

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

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

    1.1K20

    Netty剖析 - Why Netty

    Why Netty I/O 模型、线程模型和事件处理机制优化: Netty 提供了多种 I/O 模型,包括 NIO、Epoll、Kqueue 等,可以根据具体需求选择最适合的模型。...弥补 Java NIO 的缺陷 Netty 相对于 JDK 的 NIO 框架有着几个显著的优势,这些优势使得 Netty 成为了许多开发者选择的首选框架: 易用性: Netty对 JDK NIO 进行了更高层次的封装...Netty 发展现状 Netty在过去几年里取得了显著的发展,并且得到了广泛的应用和认可。 社区活跃度高: Netty拥有一个活跃的社区,迭代周期短,文档齐全。...项目结构调整: Netty从3.x到4.x版本进行了项目结构的调整,模块化程度更高,包名也从org.jboss.netty更新为io.netty。...Netty 的使用 https://netty.io/wiki/related-projects.html 使用Netty的知名公司和项目: 服务治理: Apache Dubbo和gRPC等服务治理框架都采用了

    43300

    【Netty】Netty初识篇

    为什么要用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官网 总结 本文并没有深入学习,仅仅是一些表面的介绍。

    1.3K30
    领券