初始化

Netty是负责监听、处理Broker和客户端发送的网络请求的,NameServer通过9876这个端口接收来自Broker、客户端的网络请求,如Broker注册自己、客户端拉取Broker路由数据等。

在构建好NamesrvController后,会通过start方法来启动这一核心组件。首先要初始化NamesrvController

//初始化NamesrvController
boolean initResult = controller.initialize();

在这个方法内,会构建Netty网络服务器:

//构造NettyRemotingServer,即Netty网络服务器
this.remotingServer = new NettyRemotingServer(this.nettyServerConfig, this.brokerHousekeepingService);

public NettyRemotingServer(final NettyServerConfig nettyServerConfig,final ChannelEventListener channelEventListener) {super(nettyServerConfig.getServerOnewaySemaphoreValue(), nettyServerConfig.getServerAsyncSemaphoreValue());this.serverBootstrap = new ServerBootstrap();
}

这个ServerBootstrap就代表一个Netty网络服务器,通过它,可以让Netty去监听一个端口号上的网络请求。

这个NettyRemotingServer,就是RocketMQ基于Netty API开发的网络服务器组件。

启动

执行NamesrvController的start方法,就是启动NamesrvController,也就是启动NettyRemotingServer,走NettyRemotingServer#start()方法。

在此会设置一堆的网络请求处理器:

             //设置一堆的网络请求处理器。// handshakeHandler:连接握手;NettyDecoder:编码解码;IdleStateHandler:连接空闲管理;// connectionManageHandler:网络连接管理;serverHandler:网络请求处理.childHandler(new ChannelInitializer<SocketChannel>() {@Overridepublic void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(defaultEventExecutorGroup, HANDSHAKE_HANDLER_NAME, handshakeHandler).addLast(defaultEventExecutorGroup,encoder,new NettyDecoder(),new IdleStateHandler(0, 0, nettyServerConfig.getServerChannelMaxIdleTimeSeconds()),connectionManageHandler,serverHandler);}});

最后通过ServerBootstrap的bind方法,绑定、监听了9876端口号。至此,Netty启动了,开始监听9876了

RocketMQ NameServer网络通信架构(基于Netty)相关推荐

  1. 基于netty的微服务架构

    基于netty的微服务架构 微服务一篇好文章 http://san-yun.iteye.com/blog/1693759 教程 http://udn.yyuap.com/doc/essential-n ...

  2. 基于Netty的RPC架构实战演练

    基于Netty的RPC架构实战演练 NIO netty服务端 netty客户端 netty线程模型源码分析(一) netty线程模型源码分析(二) netty5案例学习 netty学习之心跳 prot ...

  3. RocketMQ NameServer源码剖析

    概述 NameServer是一个简单的 Topic 路由注册中心,支持 Topic.Broker 的动态注册与发现. 主要包括两个功能: Broker管理 ,NameServer接受Broker集群的 ...

  4. RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读

    文章目录 Rocketmq整体架构 namesrv broker producer & consumer 通信方式 Rocketmq整体架构 RocketMQ-初体验RocketMQ(01)_ ...

  5. RocketMQ学习笔记(7)----RocketMQ的整体架构

    1. RocketMQ主要的9个模块,如图: 2. 模块介绍 1. rocketmq-common:通用的常量枚举,基类方法或者数据结构,按描述的目标来分包,通俗易懂.报名有admin,consume ...

  6. Java编写基于netty的RPC框架

    一 简单概念RPC: ( Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样.阻塞IO :当阻塞I/ ...

  7. RocketMQ初步应用架构理论

    RocketMQ初步应用架构理论 写给RocketMQ架构应用入门,内容涉及它的设计机理以及推到出来的应用注意事项,入门人员请看. 稍微涉及技术细节,留以我设计中间件时参考,将来整理深度文档时会抽取走 ...

  8. 基于 Netty 网络编程项目实战课程

    一 基于 Netty 网络编程项目实战课程 1项目介绍 2Netty 介绍与相关基础知识 2.1Netty 介绍 简介 Netty 是由 JBOSS 提供的一个 java 开源框架.Netty 提供异 ...

  9. 几十行代码基于Netty搭建一个 HTTP Server

    目前正在写的一个叫做 jsoncat 的轻量级 HTTP 框架内置的 HTTP 服务器是我自己基于 Netty 写的,所有的核心代码加起来不过就几十行.这得益于 Netty 提供的各种开箱即用的组件, ...

最新文章

  1. python基础-第九篇-9.3线程池
  2. Mysql服务器问题(2013.3.5日发现)
  3. cad绘制椭圆的方法有几种_你还在头疼CAD系统变量如何设置?这些你知道几个吗?...
  4. 深度学习-循环神经网络(RNN)
  5. LeetCode2:Add Two Numbers
  6. docker 配置selenium调用Firefox无界面浏览器
  7. IEWebBrowser
  8. Shell 工作原理
  9. 微软推出的在线代码查看神器github1s
  10. thinkphp6阿里云短信新版sdk对接(tp5对接新版阿里云短信sdk)
  11. 数学图形之双曲抛物面
  12. 耗时86小时的「百变小樱」最强数据可视化作品!
  13. 颜色代码表#FFFFFF #FF0000 #00FF00 #FF00FF (2015-07-21 10:39)转载
  14. Android 谷歌拼音输入法最新发布
  15. Linux alarm闹钟函数
  16. 【Java项目】好客租房——数据库集群部署
  17. 四川绵阳成立大中华区首个 IBM大数据分析竞争力中心
  18. 游戏界的“扛把子”,“3D 游戏之父”, 约翰•卡马克的传奇人生
  19. SQL的采集与查询教程
  20. 营销组合--4P理论vs4CS

热门文章

  1. 让Java程序只运行一个实例
  2. 173. Binary Search Tree Iterator
  3. SpringCloud系列十二:SpringCloudSleuth(SpringCloudSleuth 简介、SpringCloudSleuth 基本配置、数据采集)...
  4. 简单又实用的pandas技巧:如何将内存占用降低90%
  5. GARFIELD@09-28-2004
  6. python中collection.Counter and和的区别
  7. readv和writev函数
  8. Python 基于Python从mysql表读取千万数据实践
  9. c语言程序设计案例教程(第2版)笔记(三)—变量、结构体
  10. MapReduce——shuffle