关于分布式编程的一点说明

关于分布式编程的一点说明

@(博客文章)[java|大数据]

在分布式系统中,由于有多个机器、多个进程在同时运行程序,而它们之间由于运行在不同的JVM中,因此它们之间的变量是无法共享的。

以storm为例:
如果在主程序中设置了某个变量,如

 topoName = args[0];

在bolt中想要取得这个变量是不可能的,因为这个变量只保存在了当前的JVM中。
因此,如果在bolt中也要使用这个变量,则必须将其放入一个由分布式系统提供的共享参数中,如:

config.put(Config.TOPOLOGY_NAME, topologyName);

然后,在bolt中的prepare()方法中取得这个参数:

    @Override
    public void prepare(Map conf, TridentOperationContext context) {
        String topoName = (String) conf.get(Config.TOPOLOGY_NAME);
   }

其它的分布式系统也类似,切记,不要以为在main函数定义了一个参数,就可以在任何地方使用,它只能在本JVM内使用!!!

你可能感兴趣的:(关于分布式编程的一点说明)