broker在启动时向所有namesrv注册broker的信息,producer在发送消息之前先从namesrv获取broker的路由信息,包括broker的地址,namesrv于broker保存长连接,每隔10秒去检测broker是否存活,如果检测到broker宕机,会把宕机的broker从路由表中剔除,但是路由变化不会马上通知producer,这样设计是为了架构简单高效。
namesrv启动流程:NamesrvStartup类是namesrv的启动类,启动的时候,先createNamesrvController,在创建controler中,先创建namesrvConfig和nettyServerConfig,配置namesrv服务端口,然后填充namesrvConfig和nettyServerConfig参数值,初始化controler,在初始化中,加载kv配置,创建线程池,注册线程池,处理客户端请求,创建定时任务,每隔十秒去扫描broker是否存活,注册钩子方法,在JVM退出时关闭controller,释放资源,启动controler。