2016-04-30 78 views
0

如果以下问题已得到解答,或者如果它不够具体,我很抱歉,我对群集应用程序的主题完全陌生,因此我正在寻找一个起点。如何群集应用程序

我的目标是编写一个软件,它将执行各种不同的任务,主要是在远程服务器上启动其他软件。该软件需要计算当前需要这些其他软件的实例数量,然后必须以某种方式告诉远程服务器启动新的实例。

虽然请求新实例的软件不能不可用或崩溃,但这就是为什么我要将它分发到多个服务器上,然后协调这些实例同时工作并接管是否有任何实例崩溃,整个系统有一定的弹性。

应用程序本身应该可以通过REST API或通过TCP连接到达,而我更喜欢前者。如果你知道任何框架可以帮助我,我会很高兴,如果你能让我知道。

问候

PS:我已经看到,Spring提供了分布式系统的一些支持,但我不能确定是否会真的帮助我的任务。

+0

IMO这个问题太广泛了。有许多方法可以做到这一点,许多图书馆/框架选项等等(“集群分析”,顺便说一句,是完全不同的。在实际的编程问题出现之前,传输机制是完全不相关的。) –

回答

0

让我将你的问题到部分

  1. 您希望您的应用程序做一些任务
  2. 你的应用是多用于高可用性的目的
  3. 你需要某种一种机制的你应用程序进行通信和传递消息
  4. 您希望您的应用程序可以访问(REST API或TCP)最好是REST

那么你的第一个3个问题的答案就是不能自己实现所有这些,而是​​使用分布式缓存来达到你的目的。分布式缓存或内存数据网格本质上是群集的,并为生产环境提供了高可用性。尽管如此,Scalabiilty对你来说还是有好处的。

您可以做的是部署尽可能多的应用程序,并使用缓存/ IMDG来提供高可用性和平台/媒体,供您使用来协调操作。诸如写入程序锁之类的功能可以确保没有两个应用程序正在执行相同的任务或超过所需的任务。

最后,关于为您的应用程序创建可访问的REST API,只需将您的应用程序部署为基于Web的应用程序,并使用下面的分布式缓存。

披露:我为Alachisoft工作。内存中分布式缓存提供程序。我们有两个产品,一个用于Linux,另一个用于.Windows,.NET和Java应用程序以及来自两种语言的对象都是可以互换的。 TayzGrid和NCache的功能

相关问题