Java-高负载应用程序的数据库可伸缩性?

我已经看到应用程序具有群集化的Web服务器(例如10到20个服务器)以具有可扩展性,可以在其中分发
在网络服务器之间加载.但是我一直看到所有的Web服务器都使用单个DB.

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

更新:-
在关系型数据库管理系统中无法扩展数据库,而仅在诸如mongo db等的无SQL数据库中扩展数据库吗?

解决方法:

数据库方面有两种不同的可伸缩性.一种是读取可伸缩性,另一种是写入可伸缩性.垂直缩放都可以实现,这意味着要在一定程度上增加CPU和RAM.但是,如果您需要扩展的数据量超过单个计算机的限制,则应使用只读副本,以实现读取可扩展性和分片以实现写入可扩展性.

分片不能像将某些实体(鞋子)放置到一台服务器上,而将其他实体(T恤)放置到另一台服务器上一样.它的工作方式就像将一双鞋子和一些T恤衫放到一台机器上,然后对其余实体也一样.

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

上一篇:内存耗用:VSS/RSS/PSS/USS 介绍


下一篇:为什么docker在高内存使用时崩溃?