DUBBO - Netty 交互 服务器端

Dubbo Remoting 层为Dubbo项目处理底层网络通信的层。类图如下:

ChannelHandler是抽象的通道事件处理器,源代码如下。

@SPI
public interface ChannelHandler {

    void connected(Channel channel) throws RemotingException;

    void disconnected(Channel channel) throws RemotingException;

    void sent(Channel channel, Object message) throws RemotingException;

    void received(Channel channel, Object message) throws RemotingException;

    void caught(Channel channel, Throwable exception) throws RemotingException;

}

NettyServer初始化时候,需要两个参数,一个是URL,一个是(ChannelHandler)通道处理器。

  1. URL

URL为Dubbo框架中用的比较多地方,综合说来,它是一个契约,或者参数集合,用于各个组件的配置。

在NettyServer构造期间,有如下参数:

  • 通信层的协议---TCP的上层协议
  • 最大连接数
  • 空闲超时
  • 网络IO处理线程数量,默认为处理器+1。(但是很多处理器现在是一个处理器处理两个线程,所以在Netty后续的版本里,默认为 处理器*2 + 1)
  • 最重要的,当然是还有host和port了,没有的,怎么知道绑定在哪个port呢。。。

2. 对于通道处理器来说,负责处理的,显然就是连接进来的通道所发生的事件咯。但是此处的通道处理器,并不是Netty的Pipeline,中间还需要一层转换,当然除此之外,还有一些其它的操作,比如业务线程委派。

对于NIO来说,采用了多路复用模型处理网络事件。多路复用的优点是节约了线程上下文切换带来的不必要的CPU的资源的浪费,但是在IO线程里处理业务,显然是不妥当的,因为业务方法,很可能是阻塞的。

其中Netty区域的类,都是扩展了了Netty自带类。

InternalDecoder:负责TCP层协议的解析,处理TCP粘包。(当然这个解析也包含序列化的处理)。

InternalEncoder: 协议封装。

NettyHandler:客户通道共享的处理器(请参阅Netty的通道处理器模型),转换Netty的通道事件到Dubbo事件。

NettyServer:处理连接数量。

MultiMessageHandler:多消息处理。

HeartbeatHandler:心跳消息。

AllChannelHandler:委派业务请求到线程池。

---------------------------------------------------------------------------------------------------

最后就是构造NettyServer的通道ChannelHandler,在线程池里面执行,并非Netty的IO线程组。

时间: 2024-10-10 09:12:19

DUBBO - Netty 交互 服务器端的相关文章

Netty学习之服务器端创建

一.服务器端开发时序图 图片来源:Netty权威指南(第2版) 二.Netty服务器端开发步骤 使用Netty进行服务器端开发主要有以下几个步骤: 1.创建ServerBootstrap实例 ServerBootstrap b=new ServerBootstrap(); ServerBootstrap是Netty服务器端的启动辅助类,提供了一系列的方法用于设置服务器端启动相关的参数. 2.设置并绑定Reactor线程池 EventLoopGroup bossGruop=new NioEvent

阿里 Dubbo架构设计攻略

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubb

Dubbo架构设计详解【转】

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo的总体架构,如图所示:Dubbo框架设计一共划分了10个层,而最上面的Servi

Dubbo架构设计详解

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo的总体架构,如图所示:Dubbo框架设计一共划分了10个层,而最上面的Servi

分布式架构现在很火吗?zookeeper dubbo可以?

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo的总体架构,如图所示:Dubbo框架设计一共划分了10个层,而最上面的Servi

【转】Dubbo是Alibaba开源的分布式服务框架

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,而最上面的Serv

Dubbo架构设计详解(转收藏)

转自:http://shiyanjun.cn/archives/325.html Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地 松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提 供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Du

dubbo开发者指南

开发者指南 参与 流程 任务 版本管理 源码构建 框架设计 整体设计 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本原则 扩展点加载 扩展点配置 扩展点自动包装 扩展点自动装配 扩展点自适应 扩展点自动激活 实现细节 初始化过程细节 远程调用细节 远程通讯细节 SPI参考手册 协议扩展 调用拦截扩展 引用监听扩展 暴露监听扩展 集群扩展 路由扩展 负载均衡扩展 合并结果扩展 注册中心扩展 监控中心扩展 扩展点加载扩展 动态代理扩展 编译器扩展 消息派发扩展 线程池扩展 序

dubbo初识(一)Dubbo架构设计详解

参见http://shiyanjun.cn/archives/325.html Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo