短信交易处理系统的高层次devise

我一直负责devise一个系统来处理短信交易。 事务以来自服务提供者的HTTP请求的forms出现。 在处理交易的过程中,有问题的系统需要联系其他几个不受我控制的系统,并做一些处理。 我可以select几乎所有的东西,从实现的语言到将要使用的数据库。 我希望这个系统能够很好地扩展,并且至less可能是高度可用的。 基于以上,我的问题是:
1)我应该select什么语言? 我是全职的C ++程序员,但对于这个系统来说,C ++似乎并不是一个好的select。 我很了解Java,Python和PHP,并尝试了许多其他语言。 我正朝着Java的方向发展。 你会selectJava吗,还是用其他的东西(根据需求)?
2)我认为要很好地扩展这个系统需要asynchronous处理的东西,并且应该有一个添加处理节点的能力。 为此,Java消息系统看起来是一个正确的select,例如Apache ActiveMQ的实现。 这是一个好主意吗?
3)显然这个东西需要一个sorting数据库。 有越来越多的NoSQL运动 – 我应该如何看待这种方式(例如Apache Cassandra看起来非常有希望),还是只使用真正的PostgreSQL或MySQL与InnoDB? 因为在我看来,这个东西需要ACID。

使用您最喜欢使用的语言和工具。 关键任务项目不是学习新语言的时间和地点。 我是一个Python和C / C ++的人,所以我可能会select其中之一。 不要让我的语言select笼罩你的判断力)。

也就是说,Erlang将是一个不错的select,可以很好地扩展。只需添加更多的硬件并且水平扩展即可。 问题是,这是一个婊子学习。 参见之前关于大型关键项目学习的评论。

同样适用于数据库select。如果您熟悉MySQL,请使用它。 如果你从内心认识卡桑德拉,那么这可能更适合你。

你正在做的事情有一个保存事务状态和primefaces性的机制。 因此,select一种语言和数据库组合,使您能够满足这些标准。

asynchronous操作是必须的,特别是当你想要扩展时。 我肯定会用某种AMQPtypes的消息平台,RabbitMQ是我最喜欢的select,但这只是基于我最有经验的。

这种types的队列在数据库上的主要优点是,您可以在消息到达时获得事件驱动的能力,而不是等待数据到达,或者定期轮询数据库以查看是否有新数据等候。 您可以将消息持久性设置为消息属性,以便如果服务器重新启动,则消息已被持久保存到磁盘。