Tag: 分布式计算

RMI服务器与RMI注册表

在Oracle关于Java RMI 的FAQ页面上 ,它说: 虽然Java远程方法调用(Java RMI)服务器理论上可以在任何主机上,但它通常与运行注册表的主机相同,并且位于不同的端口上。 即使服务器错误地了解其主机名或IP地址(或者主机名无法由客户端解析),它仍将使用错误的主机名导出其所有对象,但每次尝试时都会看到exception接收其中一个对象。 我不明白RMI服务器和RMI注册表之间的区别。 我以为他们是一回事。 如果RMI注册表不是某种服务器,它如何工作?

有没有人使用JavaSpaces技术?

是否有JavaSpaces技术的实际应用以及它是如何实现的?

如何使用REST API和数据库扩展Java应用程序?

我有一个典型的无状态Java应用程序,它提供REST API并在Postgresql数据库中执行更新(CRUD)。 然而,客户的数量正在增长,我觉得有必要 增加冗余,以便在发生另一个失败时发生 为此,我可能需要一个负载均衡器? 通过不淹没网络和一台服务器的CPU来提高响应速度(但负载均衡器将如何不被淹没?) 也许我需要分发数据库? 我希望能够无缝更新我的应用程序(我已经看到了一个名为kubernetes的东西):逐个杀死每个冗余节点并立即用更新版本替换它 我的应用程序还存储了一些图像文件,这些文件在磁盘大小上快速增长,我需要能够分发它们 所有这一切都必须是可备份的 这是我现在拥有的图表(Java app和DB都在同一台服务器上): 缩放这个的最佳/正确方法是什么? 谢谢!

Hadoop:将多个IP地址绑定到群集NameNode

我在Softlayer上有一个四节点的Hadoop集群。 主(NameNode)具有用于外部访问的公共IP地址和用于群集访问的专用IP地址。 从节点(datanode)具有私有IP地址,我正在尝试连接到主节点,而无需为每个从节点分配公共IP地址。 我已经意识到将fs.defaultFS设置为NameNode的公共地址允许外部访问,除了NameNode只侦听传入连接的地址,而不是私有地址。 所以我在datanode日志中得到ConnectionRefusedexception,因为他们试图连接NameNode的私有IP地址。 我认为解决方案可能是将公共和私有IP地址都设置为NameNode,以便保留外部访问并允许我的从属节点也连接。 那么有没有办法可以将这两个地址绑定到NameNode,以便它们同时监听? 编辑:Hadoop版本2.4.1。

在多个服务器上分发java线程?

我是java的新手,非常喜欢学习它。 我已经制作了一个运行良好的程序,但是当我添加更多数据进行处理时需要一些时间。 我做了它的线程,它真的加速了很多,但现在我正在考虑加快速度(显然它需要处理的数据越多,所需的时间越长)。 只是一个fyi,我的程序不在线程之间共享任何数据,它获取列表中的一项并进行一些数学运算并将结果上传到数据库。 理想情况下,一些工作计算机会获得列表中的一些项目,然后完成其工作,然后在完成之前获得更多工作 我做了一些研究并找到了队列,我不确定它是否是我需要的东西,或者是否有其他的东西(我也在考虑维护工人的诚信/监督可能对我来说太难以写作新手)。 我家里有4台电脑(一些Linux,mac和windows ..但我可以在所有非Linux系统上安装linux vm,如果这些解决方案特定于操作系统)并且想要让他们也开始处理这项任务。 我想创建Java队列,其他客户端采取一个部分和过程,但我也看到了库(rabbitmq)。 我还简要介绍了网格计算。 这是要走的路还是有更好的方法? 我不需要任何代码或任何东西只是想知道分发线程的解决方案是什么,或者在评估它们时使用哪些因素。

群集共享缓存

我正在寻找一个允许我在多个JVM之间共享缓存的java框架。 我需要的是Hazelcast,但没有“分布式”部分。 我希望能够在缓存中添加一个项目,并让它自动同步到另一个“组成员”缓存。 如果可能的话,我希望通过可靠的多播(或类似的东西)来同步缓存。 我看过Shoal,但遗憾的是“分布式状态缓存”似乎不能满足我的需求。 我已经看过了JBoss Cache,但对于我需要做的事情来说似乎有些过分。 我看过JGroups ,它似乎是我需要做的最有前途的工具。 有没有人有JGroups的经验? 如果它被用作共享缓存,最好是? 还有其他建议吗? 谢谢 ! 编辑 :我们正在开始测试以帮助我们在Hazelcast和Infinispan之间做出决定,我很快就会接受答案。 编辑 :由于需求突然变化,我们不再需要分布式地图了。 我们将使用JGroups作为低级信令框架。 谢谢大家的帮助。

无法与远程计算机建立RMI连接

我似乎无法使用RMI连接2台机器。 为了确保我的代码没有问题,我复制了维基百科( http://en.wikipedia.org/wiki/Java_remote_method_invocation )中的简单示例,并编辑了代码以打印出一个简单的int。 我尝试提供所有权限并关闭所有防火墙,我仍然收到此错误: java.rmi.ConnectException: Connection refused to host 55.229.xx.xxx; nested exception is:java.net.ConnectException: Connection timed out: connect 在过去的3天里我一直在努力做到这一点,我似乎仍然无法克服基本的配置问题。

Corba ORBD错误

我正在使用CORBA开发一个简单的远程管理工具。 这是我的服务器代码。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package simrat; import SimRATApp.SimRAT; import SimRATApp.SimRATHelper; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JDialog; import javax.swing.JOptionPane; import org.omg.CORBA.ORB; import org.omg.CORBA.ORBPackage.InvalidName; import org.omg.CosNaming.NameComponent; import org.omg.CosNaming.NamingContextExt; import org.omg.CosNaming.NamingContextExtHelper; import org.omg.CosNaming.NamingContextPackage.CannotProceed; import org.omg.CosNaming.NamingContextPackage.NotFound; import org.omg.PortableServer.POA; import org.omg.PortableServer.POAHelper; […]

Spark:从具有不同内存/核心配置的单个JVM作业同时启动

问题解释 假设您拥有带有独立管理器的Spark集群,其中通过在客户端应用程序中创建的SparkSession来调度作业。 客户端应用程序在JVM上运行。 为了提高性能,您必须使用不同的配置启动每个作业,请参阅下面的作业类型示例 。 问题是您无法从单个JVM创建两个会话 。 那么你将如何同时启动具有不同会话配置的多个Spark作业? 通过不同的会话配置,我的意思是: spark.executor.cores spark.executor.memory spark.kryoserializer.buffer.max spark.scheduler.pool 等等 我的想法 解决问题的可能方法: 在同一SparkSession为每个Spark作业设置不同的会话配置。 可能吗? 启动另一个JVM只是为了启动另一个SparkSession ,我可以称之为Spark会话服务。 但你永远不会知道你将来会同时推出多少具有不同配置的工作。 目前 – 我一次只需要2-3种不同的配置。 这可能足够但不灵活。 针对各种工作使用相同的配置进行全局会话。 但这种方法从表现的角度来看是一个底线。 仅将Spark用于繁重的作业,并在Spark之外运行所有快速搜索任务。 但这是一团糟,因为你需要与Spark并行保留另一个解决方案(如Hazelcast),并在它们之间分配资源。 此外,这为所有人带来了额外的复杂性:部署,支持等。 工作类型示例 转储庞大的数据库任务。 它是CPU低但IO密集的长时间运行任务。 因此,您可能希望使用低内存和每个执行程序的内核启动尽可能多的执行程序。 重型句柄转储结果任务。 它是CPU密集型的,因此您将为每台集群计算机启动一个执行程序,具有最大的CPU和核心。 快速检索数据任务,每台机器需要一个执行程序,资源最少。 介于1-2和3之间的中间位置,其中作业应占用一半的群集资源。 等等

什么是兵马俑?

什么是兵马俑? 它提供什么服务? 它解决了什么问题? 还有哪些产品可以解决类似于Terracotta解决的问题?