如果以下问题已经得到解答,或者说它不够具体,我很抱歉,我对集群应用程序的主题全新,我正在寻找一个起点。
我的目标是编写一个执行各种不同任务的软件,主要是在远程服务器上启动其他软件。该软件需要计算当前需要这些其他软件的实例数量,然后必须以某种方式告诉远程服务器启动新实例。
请求新实例的软件不能不可用或崩溃,这就是为什么我希望将它分发到多个服务器然后协调这些实例同时工作并接管任何实例崩溃以便系统总的来说有点弹性。
应用程序本身应该可以通过REST API或TCP连接访问,而我更喜欢前者。如果你知道任何可以帮助我的框架,我很高兴你能告诉我。
祝你好运
PS:我已经看到Spring为分布式系统提供了一些支持,但我不确定这是否真的能帮助我完成任务。答案 0 :(得分:0)
让我把你的问题分成几部分
- 您希望应用程序执行某些任务
- 您的应用程序是多个用于高可用性目的
- 您希望某种机制可以让您的应用程序进行通信和传递消息
- 您希望您的应用程序可以访问(REST API或TCP),最好是REST
醇>
你的前三个问题的答案在于没有自己实现所有这些问题,而是为你的目的使用分布式缓存。分布式缓存或内存数据网格本质上是集群的,可为生产环境提供高可用性。 Scalabiilty虽然适合你。
您可以做的就是部署您想要的应用程序,并使用Cache / IMDG提供高可用性和平台/介质,供您用于协调操作。像编写器锁这样的功能可以保证没有两个应用程序执行相同的任务或者执行相同的任务。
最后,关于为应用程序创建可访问的REST API,只需将应用程序部署为基于Web的应用程序,并使用下面的分布式缓存。
披露:我为Alachisoft工作。内存分布式缓存提供程序。我们有两个产品,一个用于Linux,一个用于.Windows,服务器.NET和Java应用程序,两种语言的对象都可以互换。 TayzGrid和NCache的一个特色