【问题标题】:Which technology to chose for massive IO operation server海量IO运维服务器选择哪种技术
【发布时间】:2010-07-02 17:15:34
【问题描述】:

我需要构建一个简单的服务器

  1. 读取(可能很大)xml 文件
  2. 在内存中处理它们(例如将它们转换为不同的 xml 结构)
  3. 将它们写回磁盘。

该计划的一些重要方面:

  • 速度
  • 分发服务器的能力。这意味着放置(这是什么意思)几个这样的服务器,每个服务器将处理不同数量的 xml 文件。
  • 跨平台
  • 建立了一个非常严格的死线

基本上我的问题是:
我应该用什么编程语言来做?

Java ?

  • 发展速度
  • 跨平台
  • IO 操作高,配置正确(在此处添加网络链接)。

C++ ?

  • 执行速度
  • 跨平台(使用正确的库)。
  • 但是开发速度较慢。

【问题讨论】:

  • “我在网上读到,IO 操作在正确的配置下很高”——说到高...如果我是,我会更理解这个问题吗?
  • 您的标题难以理解。我可以编辑它,但我不知道它是什么。您没有提供足够的信息;您说 C++ 的开发时间比 Java 的长,但是从您所说的内容中不可能知道这是决定性的、无关紧要的还是介于两者之间的。你不解释你熟悉的东西。您没有解释服务器数量和开发时间之间的成本比率。
  • “teach logy”应该读作“technology”吗?
  • 出于某种原因,我从那些老西部片中一位美国土著酋长的声音中读到了这篇文章。
  • 您想在同一台机器上运行多个进程,还是在多台机器上不能以某种方式访问​​同一个磁盘?还是很多机器有很多磁盘?

标签: java c++ optimization cross-platform


【解决方案1】:

您可能希望研究 ETL 或 XSLT 引擎,而不是使用低级语言进行编码。它们针对性能进行了优化,超出了您通常能够自行生成的性能,并且足够通用以适应用户更改(不确定您的 XML 转换是否是一次性的,或者它是否会随着时间而改变)。

【讨论】:

  • +1 -- 使用现有的、经过精心优化的代码(尤其是对于这样的任务)可能是大多数人自己编写的非常彻底的代码。
  • 一个可用的 XSLT 引擎示例可能会有所帮助
  • 我没有足够的 XSLT 引擎实践经验来提出可靠的建议,但应普遍要求:Altova 和 Saxonica 是两个免费选项。看来英特尔和微软也有解决方案。
【解决方案2】:

我对您的要求仍然有些模糊但是

你问错问题了。如果语言真的不是问题,您应该寻找可以处理大量磁盘 io 的第三方库,即执行 XSLT 的库。查看两种语言都有哪些库,然后选择。

此外,如果性能是关键要求,您需要确定进程是受 IO 限制还是 CPU 限制。这将决定需要使用库以及通用架构。 xml 转换 cpu 密集吗?还是可以通过一两遍解析轻松完成?

【讨论】:

  • +1,也用于从 OP 中获得可理解的内容 :-)
【解决方案3】:

最后期限紧迫?是否需要给定并行操作?那么速度不是问题。只需投入更多服务器,直到您的吞吐量满足需求。

如果您在 Java 方面的速度更快,当然可以继续。您可能需要两倍数量的服务器,但这些服务器可以在几天而不是几周内完成。

在紧迫的期限内,可移植性绝不是一项要求。只需询问设置这些截止日期的人是否做出了任何不可逆转的选择。如果是这样,坚持那些;如果没有,请选择一些东西并坚持下去。您没有时间在不同平台上对其进行测试,因此无论如何您所拥有的任何可移植性都是理论上的。

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多