当前位置: 首页 > news >正文

新站网站收录减少wordpress 仿小米

新站网站收录减少,wordpress 仿小米,企业网站的基本功能有哪些,微信营销推广的方式有哪些1、RocketMQ组件概述 NameServer NameServer相当于配置中心,维护Broker集群、Broker信息、Broker存活信息、主题与队列信息等。NameServer彼此之间不通信,每个Broker与集群内所有的Nameserver保持长连接。 2、源码分析NameServer 本文不对 NameServer 与…

1、RocketMQ组件概述

  • NameServer
    NameServer相当于配置中心,维护Broker集群、Broker信息、Broker存活信息、主题与队列信息等。NameServer彼此之间不通信,每个Broker与集群内所有的Nameserver保持长连接。

2、源码分析NameServer

本文不对 NameServer 与 Broker、Producer 集群、Consumer 集群的网络通信做详细解读(该系列后续专门进行讲解)

本文重点关注 NameServer 作为 MQ 集群的配置中心存储什么信息。

2.1 源码分析NamesrvController

NameserController 是 NameServer 模块的核心控制类。

2.1.1 NamesrvConfig

NamesrvConfig,主要指定 nameserver 的相关配置属性:

  • kvConfigPath(kvConfig.json)。
  • mqhome/namesrv/namesrv.properties。
  • orderMessageEnable,是否开启顺序消息功能,默认为false。

2.1.2 ScheduledExecutorService

private final ScheduledExecutorService scheduledExecutorService = Executors.

NameServer 定时任务执行线程池,默认定时执行两个任务:

  • 任务1、每隔 10s 扫描 broker ,维护当前存活的Broker信息。
  • 任务2、每隔 10s 打印KVConfig 信息。

2.1.3 KVConfigManager

读取或变更NameServer的配置属性,加载 NamesrvConfig 中配置的配置文件到内存,此类一个亮点就是使用轻量级的非线程安全容器,再结合读写锁对资源读写进行保护。尽最大程度提高线程的并发度。

2.1.4 RouteInfoManager

NameServer 数据的载体,记录 Broker、Topic 等信息。

    private final static long BROKER_CHANNEL_EXPIRED_TIME = 1000 * 60 * 2;                                         //@1private final ReadWriteLock lock = new ReentrantReadWriteLock();                                                      //@2private final HashMap<String/* topic */, List<QueueData>> topicQueueTable;                                   //@3private final HashMap<String/* brokerName */, BrokerData> brokerAddrTable;                                  //@4private final HashMap<String/* clusterName */, Set<String/* brokerName */>> clusterAddrTable;    //@5private final HashMap<String/* brokerAddr */, BrokerLiveInfo> brokerLiveTable;                                //@6

代码@1,NameServer 与 Broker 空闲时长,默认2分钟,在2分钟内 Nameserver 没有收到 Broker 的心跳包,则关闭该连接。

代码@2,读写锁,用来保护非线程安全容器 HashMap。

代码@3,topicQueueTable,主题与队列关系,记录一个主题的队列分布在哪些Broker上,每个Broker上存在该主题的队列个数。QueueData队列描述信息,对应如下属性:

private String brokerName;           // broker的名称private int readQueueNums;           // 读队列个数private int writeQueueNums;          // 写队列个数private int perm;                    // 权限操作

代码@4,brokerAddrTable,所有 Broker 信息,使用 brokerName 当key, BrokerData 信息描述每一个 broker 信息。

// broker所属集群
private String cluster;                           // broker name
private String brokerName;broker 对应的IP:Port,brokerId=0表示Master,大于0表示Slave。             

代码@5,clusterAddrTable,broker 集群信息,每个集群包含哪些 Broker。

代码@6,brokerLiveTable,当前存活的 Broker,该信息不是实时的,NameServer 每10S扫描一次所有的 broker,根据心跳包的时间得知 broker的状态,该机制也是导致当一个 Broker 进程假死后,消息生产者无法立即感知,可能继续向其发送消息,导致失败(非高可用),如何保证消息发送高可用,请关关注该系列后续文章。

2.1.5 BrokerHousekeepingService

BrokerHouseKeepingService 实现 ChannelEventListener接口,可以说是通道在发送异常时的回调方法(Nameserver与 Broker的连接通道在关闭、通道发送异常、通道空闲时),在上述数据结构中移除已宕机的 Broker。

public interface ChannelEventListener {void onChannelConnect(final String remoteAddr, final Channel channel);void onChannelClose(final String remoteAddr, final Channel channel);void onChannelException(final String remoteAddr, final Channel channel);void onChannelIdle(final String remoteAddr, final Channel channel);

2.1.6 NettyServerConfig、RemotingServer 、ExecutorService

这三个属性与网络通信有关,NameServer 与 Broker、Producer、Consume 之间的网络通信,基于 Netty实现。本文借这个机会再次探究 Netty 线程模型与 Netty实战技巧。

源码分析网络通讯之前,我们关注如下问题:

  • NettyServerConfig 的配置含义
  • Netty 线程模型中 EventLoopGroup、EventExecutorGroup 之间的区别与作用
  • 在 Channel 的整个生命周期中,如何保证 Channel 的读写事件至始至终使用同一个线程处理

首先我们先过一下NettyServerConfig中的配置属性:

    private int listenPort = 8888;private int serverWorkerThreads = 8;private int serverCallbackExecutorThreads = 0;private int serverSelectorThreads = 3;private int serverOnewaySemaphoreValue = 256;private int serverAsyncSemaphoreValue = 64;private int serverChannelMaxIdleTimeSeconds = 120;private int serverSocketSndBufSize = NettySystemConfig.socketSndbufSize;private int serverSocketRcvBufSize = NettySystemConfig.socketRcvbufSize;

我们带着上面的疑问开始源码分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer。

http://www.yayakq.cn/news/165685/

相关文章:

  • 手机商城网站制作wordpress存储
  • dede网站模版扶风做企业网站
  • 外资企业可以在中国境内做网站吗做博客网站用什么模板
  • 白云做网站长沙网络建设的网站
  • 网站建设推广信息西安网站托管维护
  • 定州网站建设怎么做一个简单的网站
  • asp网站如何搭建长春火车站地址
  • 中山网站建设包括哪些合肥专业网站制
  • asp.net网站家装网站
  • 建设厅官方网站下载专区交换友情链接的意义是什么
  • 站群系统哪个好用海宁市规划建设局网站
  • 公司网站怎么建立优化体系个人如何开投资公司
  • 备案信息 网站名seo优化工具使用教程
  • 微网站建设正规公司wordpress主题aware
  • 个人网站怎么申请网站的重要目录对百度进行了封禁
  • 自己做网站给自己淘宝引流学校网站建设价格
  • 个人网站 内容建设长春平原网站建设
  • 网站建设的技术wordpress多个博客
  • 告诉搜索引擎网站建设中wordpress弹窗视频播放插件
  • 自己做网站开发如何找客户烟台 做网站的公司
  • 字体设计学习网站一站式互联网营销平台
  • 网站显示速度的代码是什么意思中阔浩潮建设工程有限公司网站
  • 做搜狗手机网站快wordpress wp
  • 做设备租赁的网站国家关于网站信息建设管理文件
  • 百度上怎么制作自己的网站网站建设最新资讯
  • 做网站谁家好海外网络怎么搭建
  • 泉州四方网站开发网站更改备案信息在哪
  • 律师网站建设怎么样东阿县建设招标网站
  • 怎么做百度网盘链接网站二手房网
  • asp怎么做网站设计深圳网站制作