DB可扩展性适用于高负载应用?

时间:2015-12-12 17:09:09

标签: java database scalability

我已经看到应用程序将集群式Web服务器(如10到20个服务器)具有可扩展性,以便分发它们 在网络服务器之间加载。但我总是看到所有使用单个数据库的网络服务器。

现在考虑任何电子商务或铁路网络应用程序,其中有数百万用户在任何时间点击应用程序。 要在Web服务器端扩展,我们可以进行服务器集群,但我们如何扩展DB?因为我们不能像多个网络服务器一样拥有多个数据库,因为一个dB将具有与其他数据库不同的状态:)

更新: - 是否在关系数据库管理系统中扩展数据库是不可能的,但只能在像mongo db等的无SQL数据库中扩展?

1 个答案:

答案 0 :(得分:3)

数据库端有两种不同的可伸缩性。一个是读可伸缩性,另一个是写可伸缩性。您可以通过垂直缩放来实现这两个目的,即在某个级别添加更多CPU和RAM。但是,如果您需要扩展超过单个计算机限制的非常大的数据,则应使用只读副本来实现读取可伸缩性和分片以实现写入可伸缩性。

Sharding不像将一些实体(鞋子)放到一台服务器上而其他服务器(T恤衫)放到另一台服务器上。它就像把一些鞋子和一些T恤衫放在一台机器上,并为其他实体做这件事。

高容量数据管理的另一个解决方案是使用与您的示例更相似的微服务。我的意思是为鞋子提供另一项T恤服务。使用微服务,您可以将代码和数据划分到不同的项目以及不同的应用程序和数据库服务器。因此,您可以以不同方式处理不同部分数据的可伸缩性。