请参阅 37signals——他们是该领域的专家,并且有很多文章回答了社区问题(应该出现很多像你一样的问题)。
高可扩展性 = 37signals 架构
问37signals:你们是如何处理信用卡的?
关于数据库的数量,来自 David Heinemeier Hansson 在你想知道什么?
一些技术答案……</p>
Lance,我们所有预定的计费操作都是自动化的。任何这样的事情都会让我们发疯。确保对失败的信用卡进行应急处理尤为重要。最后我看了一下,我相信我们有 5% 的费用因为信用卡过期、超过限额或关闭而被退回。一定要优雅地处理它。
我们只使用 Authorize.net 和一个单独的信用卡应用程序(在 Rails 中开发并通过 REST 由内部网络上的其他应用程序使用的小应用程序)来保证数字安全。
沃伦,我们在同一个数据库上运行免费和付费账户。每个应用程序一个数据库。每个帐户一个数据库通常是一个非常非常糟糕的主意。通常数据是相当标准化的,但我们绝对不相信它。我通常重视我的源代码而不是我的模式。因此,如果我可以通过弯曲模式获得更好/更漂亮的源代码,我通常会这样做。但是从规范化和非规范化开始,因为性能或代码结构需要它。
杰森,我们使用电子邮件发送短信。所有美国运营商都有一个 phone@carrier-gateway.com 网关。
Jake Good,啊,好“但它是否规模化”的问题。几年前我回答了这个问题。从那以后,我们什么都没有改变。我们每天管理数以百万计的动态请求,甚至不需要大量缓存(我们大多数应用程序中的大多数屏幕在每个用户的基础上都不同,因此传统的缓存方案更难应用)。
还有许多其他 Rails 应用程序管理着每天数千万的请求。所有人都或多或少地遵循相同的 Shared Nothing 方法。所有缩放高高的技术都在那里。这几乎不是一个交钥匙解决方案,但任何承诺的东西通常都充满了它。