我的任务是设计一个系统,做处理短信交易。事务以来自服务提供者的HTTP请求的形式出现。在处理事务的过程中,有问题的系统将需要与我无法控制的其他几个系统联系,并进行一些处理。我几乎可以选择所有的东西,从实现语言到将要使用的数据库。我希望这个系统能够很好地扩展,并且非常有用,至少有潜在的潜力。基于上述,我的问题是:
1)我应该选择哪种语言?我是全职的C++程序员,但是对于这个系统来说,C++似乎不是一个好的选择。我非常了解Java、Python和PHP,并尝试过许多其他语言。我正准备向爪哇前进。您是也选择Java,还是选择其他东西(考虑到需求)?
2)我认为,为了更好地扩展,本系统需要异步处理,并且应该有添加处理节点的能力。因此,Java看起来是一个正确的选择,例如Apache实现。这是个好主意吗
( 3)很明显,这个东西需要一个数据库。越来越多的NoSQL运动--我应该这样看(比如Apache看起来很有希望),还是只在InnoDB中使用经过尝试的、真实的PostgreSQL或MySQL?因为在我看来这东西需要酸。
发布于 2010-07-11 21:18:33
使用最适合使用的语言和工具。关键任务项目不是学习一种新语言的时间和地点。我是一个python和C/C++的家伙,所以我可能会选择其中之一。不要让我的语言选择影响你的判断;)
也就是说,二郎将是一个不错的选择,规模很好。只要增加更多的硬件,它就可以水平地缩放。问题是,这是个值得学习的婊子。参见前面关于学习大型关键项目的评论。
同样的情况也适用于数据库选择。如果您熟悉MySQL,请使用它。如果你对卡桑德拉了如指掌,那也许对你更合适。
你所做的事情迫切需要一种保持事务状态和原子性的机制。因此,选择一种语言和数据库组合,使您能够满足这些标准。
异步操作是必须的,特别是当您想要扩展时.我肯定会支持某种AMQP类型的消息平台,RabbitMQ是我最喜欢的选择,但这只是基于我最有经验的东西。
这种队列在数据库上的主要优点是,您可以在消息到达时由事件驱动,而不是等待数据到达,或者定期轮询数据库以查看是否有新的数据等待。您可以将消息持久性设置为message属性,以便如果服务器重新启动,则消息已被持久化到磁盘。
https://serverfault.com/questions/159398
复制相似问题