【发布时间】:2012-04-08 15:01:57
【问题描述】:
背景:我正在设计一个软件应用程序,它可以读取数百万或更多文件并转换或仅解析这些文件。部分需求是构建一个可扩展的分布式系统,以便可以相应地扩展读取和解析。
基本上,文件名的最低限度详细列表是一个数据库,客户端需要访问该列表才能知道接下来需要解析/转换哪些文件。这些文件再次位于另一个服务器/位置。 虽然大多数部分都是设计好的,但需要重新审视的一个关键部分是将文件名提供给不同客户的设计。
我现在有两个选择:
设计一个位于 DB 旁边的单一服务,并将所有请求引导到文件名并提供给客户端。因此,在这种情况下,客户端与服务(预定义的协议/格式)对话并获取列表。
将客户端设计为直接与 DB 对话并在客户端内实现同步/通道化。
我对第一个选项的唯一关注是,这是一个可扩展的架构/设计吗?有没有人在可扩展架构中处理过这样一种情况,即一种资源成为扩展的关键(在我的情况下,它可能是一项服务为所有客户端提供/服务)
【问题讨论】:
-
文件是驻留在数据库表中还是存储在文件系统中?
-
@home:只有文件名驻留在数据库中。文件位于同一网络其他地方的不同物理服务器上。
标签: database-design architecture scalability large-scale