2

首先是问题的简单形式:
为了向大量客户端提供大量静态内容,最好让 http 服务器从文件系统中提供内容,其中每个主键都存储在文件中(索引节点!)或实施一个“真正的”数据库?“更好”是指性能、机器负载、内存使用等方面。

问题的更详细版本:
我们目前正在重新设计具有以下要求的数据库服务器:

  • SSL
  • 成千上万的客户 (1-30.000)
  • 客户端请求被序列化,一次一个,2分钟内大约100个条目
  • 客户端将在超时后断开连接
  • 一些客户端稍后会重新连接并执行更多(1-10)个请求
  • 数据库将包含 > 100.000 个主键
  • 数据库内容是静态的(或多或少)
  • 请求大小通常 < 80 字节
  • 响应大小通常 < 30 字节

虽然我们的协议目前不是 http,但我考虑过使用 Apache 或其他 http 服务器并更改我们的协议以适应 http。但是接下来的问题是是否使用“真实”数据库(例如 couchdb)或者我们是否只使用文件系统作为数据库,因为 > 95% 的请求将是对静态内容的请求。性能和扩展是这里的一个问题。例如,如果 1.000 个客户端将在上午 08:00 启动,则可能会发生这 1.000 台机器同时连接并分别执行 100 个请求。一切都在两分钟之内,所有这些都产生了建立 ssl 连接的开销。这可能会使任何服务器达到其极限。

有什么提示吗?

4

1 回答 1

1
  • 由于主键后面的数据很小(一些字节),文件系统不会是一个有效的解决方案,考虑使用一些缓存系统作为 Redis 作为数据库。
  • Nginx 作为网络服务器似乎比 apache 更适合您的需求(请求小,人多)
  • 如果您的所有数据(~100B * 100k ~ 10MB ?)都适合内存,并且没有大的计算,那么您应该不会遇到硬性能问题。
于 2013-07-20T06:34:02.977 回答