【问题标题】:Decision to go for distributed application?决定去分布式应用程序?
【发布时间】:2014-03-30 11:01:14
【问题描述】:

我有一个金融领域的遗留产品。使用 tomcat 6。我们在一小时内收到数百万个请求 10k 个请求。我想知道高水平 我应该去分布式应用程序,其中我的 mvc 组件在一个系统上,服务/dao 在另一个盒子上(可以使用 spring 远程/EJB)。 我计划朝这个方向发展的原因是负载分配并获得更好的性能有了这个它也变得可扩展。 我只看到它的积极方面,但不知何故无法弄清楚它的消极方面是什么?

如果有专家可以提供帮助 我应该考虑什么标准来选择分布式模型及其优缺点?我也试过用谷歌搜索我可以得到一些统计数据 就像给定的网络服务器(在我的例子中是 tomcat)使用给定的硬件(16 gb ram,windows 7,处理器)有效地处理多少负载。

是的,我要去 做 POC,我将使用分布式模型测量性能与没有位高级输入将受到高度赞赏?

【问题讨论】:

    标签: java distributed-computing


    【解决方案1】:

    如果没有更多细节,就不可能回答这个问题——在当前服务器上回复一个请求需要多长时间?一个请求分配多少资源?

    每小时有 10k 个请求意味着每秒约 3 个请求。如果执行必要的操作并回复请求,使用 1 个 CPU 大约需要 300 毫秒 - 一台简单的机器完全可以。这是简单的数学运算,并不总是有效。我猜你在每小时 10k 个请求中仍然有峰值,而且它们并没有逐渐分布。

    如果我们假设,一个回复最多可能需要 1 秒,而您每秒可以处理的回复数量与系统的 CPU 数量一样多(假设 CPU 会成为瓶颈)如果 CPU 不是瓶颈对于您的应用程序服务器,可能有问题。您应该在不同的机器上设置数据库,并且只在应用服务器机器上执行计算任务。

    尤其是在使用遗留软件的金融领域,我不会尝试拆分正在运行的产品。当前服务器的年龄是多少?我相信一个新的服务器应该比重写一个应用程序更便宜。除非您预计很快就会有 50-100k 个请求/小时,否则我认为拆分这么小的部分是没有意义的。

    相反 - 在最新的服务器硬件上运行它,拆分应用程序服务器和数据存储,你应该没问题。

    【讨论】:

      【解决方案2】:

      我想知道我是否应该使用分布式应用程序,其中我的 mvc 组件在一个系统上,服务/dao 在另一个盒子上(可以使用 spring 远程/EJB)。

      我不确定您在这种情况下对“系统”的含义,但如果这意味着您计划在两台服务器上运行您的应用程序, 一个专用于演示,另一个专用于业务层,请记住一种更简单的方法(并且可能更适合您的应用程序) 正在构建一个co-located 架构。

      基本上,这个想法是在多台服务器(至少两台)中复制您的应用,并在它们前面放置一个负载平衡器,在可用服务器之间路由传入请求。 所有服务器共享同一个数据库实例。这将为您提供垂直可扩展性,也将提高您系统的可用性。

      我只看到了积极的一面,但不知何故无法弄清楚它的消极方面是什么?

      分发您的业务逻辑可能会涉及重构您的应用程序代码,如果系统运行良好,您肯定会添加一些错误。 必要的远程调用会增加延迟,而且您在多个服务器中执行业务逻辑这一事实并不能解决表示层的性能问题。

      Expert One-on-One J2EE Development Without EJB(第 65 页)中,您可以找到关于为什么不分发业务逻辑的好读物。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多