整体应用程序水平可伸缩性重复:如何处理数据库?

问题描述

对这个模糊的问题感到抱歉,但这让我很困惑。
据我了解,单片应用程序可以通过两种方式扩展:垂直和水平扩展。后者涉及通过添加服务的更多副本来复制服务。我怀疑数据库在这方法中的作用。

例如,假设我有一个连接数据库的应用程序A。假设我复制了此应用程序,并将重复的文件称为A'。 A和A'会共享同一个数据库,从而可能使该数据库成为瓶颈,还是A和A'拥有自己的数据库,因此有必要实施某种机制来确保跨两个实例的数据一致性。数据库

解决方法

有两种方法可以水平扩展数据库:

  1. 使用提供内置水平缩放的数据库。例如:Cassandra,MongoD等。
  2. 使用应用程序级逻辑将流量路由到适当的数据库服务器。基本上,您需要一组用户,并将他们划分到多个数据库服务器上。因此,例如,您通常会有一个“元”数据库/表,用于存储客户端,DB服务器/连接字符串等,以及一个表,用于存储客户端/服务器映射。应用程序登录/主屏幕将很常见,并将使用该“元”数据库中的数据。登录后或获得有关用途的信息后,只需将每个客户端的请求定向到它们所映射到的数据库服务器即可。也就是说,您正在根据用户使用动态连接字符串。 您可以决定使用其他条件代替用户来水平划分数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...