S4Node源码分析
上一篇我们谈到Tools包含了S4中的所有命令,而启动一个Node就是调用S4Node这个类。S4Node 的任务是将收到的参数进行解析,得到S4NodeArgs中参数相应的值。
public static class S4NodeArgs { @Parameter(names = { "-c", "-cluster" }, description = "Cluster name", required = true) String clusterName = null; @Parameter(names = "-baseConfig", description = "S4 base configuration file", required = false) String baseConfigFilePath = null; @Parameter(names = "-zk", description = "Zookeeper connection string", required = false) String zkConnectionString = "localhost:2181"; @Parameter(names = { "-namedStringParameters", "-p" }, description = "Comma-separated list of " + "inline configuration parameters, taking precedence over homonymous configuration parameters from " + "configuration files. Syntax: '-p=name1=value1,name2=value2 '. " + "NOTE: application parameters should be injected in the application configuration/deployment step." + "Only parameters relevant to the node should be injected here, e.g. metrics logging configuration", hidden = false, converter = ParsingUtils.InlineConfigParameterConverter.class) List<String> extraNamedParameters = new ArrayList<String>(); }
以得到的值为参数,调用startNode(S4NodeArgs nodeArgs)方法,该方法构造一个Guice的ingector,主要是将命令行的参数以及incubator-s4-master\incubator-s4-master\subprojects\s4-base\src\main\resources中的default.s4.base.properties中的变量注入到S4Bootstrap类中,然后调用S4Bootstrap的start()方法。S4Bootstrap类是S4Node的真正启动程序。
private static void startNode(S4NodeArgs nodeArgs) throws InterruptedException, IOException { Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { logger.error("Uncaught exception in thread {}", t.getName(), e); } }); // inject parameter from the command line, including zk string Map<String, String> inlineParameters = Maps.newHashMap(ParsingUtils .convertListArgsToMap(nodeArgs.extraNamedParameters)); inlineParameters.put("s4.cluster.zk_address", nodeArgs.zkConnectionString); Injector injector = Guice.createInjector(Modules.override( new BaseModule(Resources.getResource("default.s4.base.properties").openStream(), nodeArgs.clusterName)) .with(new ParametersInjectionModule(inlineParameters))); S4Bootstrap bootstrap = injector.getInstance(S4Bootstrap.class); try { bootstrap.start(injector); } catch (ArchiveFetchException e1) { logger.error("Cannot fetch module dependencies.", e1); } }
如果想了解Guice中Injector的构造及其注入原理,可以参考http://www.kurttlin.com/post/s4-def-guide/3。
相关推荐
主要包含了iap15w4k58s4系列单片机的原理图,各个引脚说明。
STC STC8F2K64S4 单片机最小系统原理图及PCB图,单片机外围电路设计参考资料,方便初学单片机设计同学学习
基于STC15W4K61S4的微型四轴原理图PCB源码,是基于STC15W4K61S4的
该文件是:51单片机(STC15W4K56S4)智能小车驱动板原理图和PCB图。 1、用Altium Designer软件绘制。 2、包括原理图、PCB图、原理图相关器件库、PCB图相关器件库。 3、依据“51单片机(STC15W4K56S4)智能小车驱动板...
该文件是:51单片机(STC15W4K56S4)智能小车核心板原理图和PCB图。 1、用Altium Designer软件绘制。 2、包括原理图、PCB图、原理图相关器件库、PCB图相关器件库。 3、该核心板也可用于其他场合。 该51单片机(STC15...
IAP15W4K61S4 单片机声控红外温度步进电机光敏等传感器实验例程源码(15例) IAP15W4K61S4 单片机 - 4位数码管实验例程KEIL源码 IAP15W4K61S4 单片机 - 光敏传感器实验例程KEIL源码 IAP15W4K61S4 单片机 - 四相步进...
STC15W4K16S4单片机开发板pdf原理图PCB+AD封装库文件,可作为STC15单片机学习及开发参考。 主要器件如下: CH340C-USB转串口芯片 DS18B20 TO-92 三脚圆孔插座 FU 贴片保险丝 M3 螺丝孔 3MM螺丝孔 OLED 4X2.56接口 ...
该文件是:STC15W4K56S4核心板原理图和PCB图。 1、用Altium Designer软件绘制。 2、包括原理图、PCB图、原理图相关器件库、PCB图相关器件库。 3、主要是绘制了STC15W4K56S4处理器的最小系统电路。 4、STC15W4K56S4...
STC51单片机IAP15W4K58S4最小系统板-教程资料-技小新-IAP15W4K58S4最小系统板《原理图》.pdf
数据库系统原理——ER模型与关系模型 犹记得第⼀次看《数据库系统原理》时看天书的感觉,云⾥雾⾥;现在已经是第⼆次参阅这本书了,顿时有所感悟,"哦,原来是这 样!"现在呢,开窍了⼀点,写下来且当作为笔记。 ER...
深思 锁 硬复制工具 复制s4软件锁 客户号修改 检测
详细说明了,S4/HANA与ECC各主要模块的区别。 S4 HANA只能在Hana数据库上运行,... 具有实时报告和预测分析的同一系统中的OLTP和OLAP功能 S4H中没有聚合(总),索引和历史表。即时(动态)基于行项目表动态创建聚合。
GT30L32S4W 数据手册
Pilz安全继电器-S4
本文介绍了ABAP语法中的新关键字,适用于S4等新系统,不适用于老系统ECC。其中包括DATA和FIELD-SYMBOL的使用方法。
GT30L32S4W字库手册中没有字模对应的地址,这是本人摸索出的地址表。
STC8A8K64S4A12单片机开发板软硬件技术资料+软件DEMO例程源码: 01参考程序 02原理图与结构图纸 STC8 使用手册.pdf STC8系列单片机技术参考手册-20170517.pdf 文件资料 01-P33口LED灯运行 02-P2口跑马灯实验 03- ...
半监督SVM 用于解决数据不平衡问题,已运行 可用无误
STC15W4K16S4单片机开发板ALTIUM设计硬件原理图+PCB+封装库文件,硬件采用2层板设计,大小为74*50mm,包括AD设计的完整原理图PCB及封装库文件,可做为你的学习设计参考。 硬件主要器件: AMS1117 三端稳压芯片 C0805...
四核 2.5GHz 高通Snapdragon S4处理器解析.pdf