有n个客户,主要关注的是他们中的大多数是在线(越多越好)的时间。出于预算和功耗的原因,只有一台服务器。 我从很多角度看到了这个问题,在本次讨论中大多数都会曝光Strategies for Java ORM with Unreliable Network and Low Bandwidth然后总结了我的选择。
你推荐什么?
PS如果我的推理有问题请告诉我
答案 0 :(得分:1)
感谢您的想法。该应用程序是一个简单的销售点。在思考和分析您的答案后,我将尝试在DSO中存储用户,产品和销售(同时使用一些框作为服务器和节点)。有一次,具有数据库的服务器可以根据生产者 - 消费者模式倾倒销售。
为我短暂的沟通技巧道歉,我还在学习英语!
答案 1 :(得分:0)
我认为你说你有一台机器,你有一个使用Hibernate的应用程序和一个MySql数据库。如果您丢失了该机器,您的用户将无法工作。您在询问是否有一些额外的弹性是可能的,并且相信您已经确定了两种解决方案。
你没有提供任何解决方案的详细信息,所以我不打算再猜测你的想法。
您也不会对应用程序的性质说太多。如果(例如)它完全是只读的,没有数据库更新,那么复制相对容易。如果所有的写入都是附加的并且不能冲突(例如某种意见调查,投票是/否)那么再次复制可能会有一些排队相对容易。
然而,传统的应用程序与用户更新共享数据,其中一致的视图 重要的(例如我们不想两次出售最后一个酒店房间)然后复制变得棘手。
一种方法是将数据库分离到高弹性层,Oracle RAC等产品具有非常聪明的弹性特性,我想你付出了聪明的代价。拥有弹性数据库后,集群化应用程序变得更加容易。我经常看到很多便宜的盒子并行运行应用程序,因为确定的“真相”由数据库管理。
然而,除非应用程序是预先设计用于复制,否则即使这样也很棘手。你会发现所有微妙的假设都是在App的基础上做出的,有些意义上可以依赖它之前的真理观。像Terracotta这样的产品很可能(我从未尝试过,所以我不知道)有助于实现弹性设计,但除非经过深思熟虑,否则可能存在商业缺陷。
我将您的想法解释为运行应用和数据库的多个并行副本以及处理同步问题。只有您知道这是否对您的业务需求有意义。您可能会出现不一致的可能性,尤其是在发生故障且重新同步尚未完成的时候。