首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向高性能、高可用性Java分布式应用的数据通信与同步

面向高性能、高可用性Java分布式应用的数据通信与同步
EN

Stack Overflow用户
提问于 2017-08-11 06:06:52
回答 1查看 181关注 0票数 1

在开始我的问题之前,让我先解释一下我们需要使用的体系结构:

  • 我们将有一个中央应用程序实例。
代码语言:javascript
复制
- this application instance is deployed with business administration webapp - it is used to change "internal" data (I'll talk about this in a moment)
- this application instance is actually a cluster of servers

  • 我们将有n (n >0&n <= 3000)本地应用程序实例-每个“位置”有1个
代码语言:javascript
复制
- this instances serve as data-processors for their locations
- this instance does not use full set of Central data - only subset limited to what is needed for data-processing
- each location may (and we should expect it) go offline for extended periods of time (let's say 2 weeks top)

  • 每个位置将有数百个“客户端”(比方说多达300个)--外部应用程序将为处理提供数据

现在,将所有内容组合在一起:如果位置处于联机状态,那么客户端可以与location或Central进行对话。但是,如果位置离线,则中央不可用,客户端只能与本地实例对话。在这种情况下,Local实例应该处理数据,就像它们是Central一样(因此,根据在Central中定义的规则-我以前讲过的“内部”数据),缓存结果,当位置在线时,将其同步到Central (只是结果,没有在Central上重新计算)。同时,本地实例应该始终保持其“内部”数据与Central同步(当它们处于联机状态时,如果它们是脱机的,则假设数据是“新的”,只要脱机时间不超过2周阈值)。或者,从另一个角度看它--每当在Central上发生变化时,就需要将它推送到所有可用的本地实例中。

总之(最后问我的问题),我们需要一种将数据从中央实例同步到数千个本地实例的方法,我们还需要一种将Local发送到Central的方法。考虑到本地实例的数量,可能的高流量(每个本地可以有多达300个客户机,每个客户机可以每分钟生成几个请求,每个请求的计算可能需要很长时间,结果可能很大)和所有其他约束(例如中央实例将是Weblogic集群,但每个本地将是单个WildFly,对于中央和本地数据库也会不同--包括不同的模式、是解决这种通信和同步问题的最佳方法??)

EN

回答 1

Stack Overflow用户

发布于 2017-08-14 22:18:36

在这里,消息代理模式看起来最合适。对于“局部变量中心”方向,您可能会在本地存储的点对点消息中积累更改,这些消息在联机期间发送到中央服务器。为此,您可以使用本地持久消息队列。对于中央服务器启动的更改,您可以使用发布/订阅者模式,并确保交付。冲突更改解决方案是特定于您的业务逻辑的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45628045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档