当网站进入社交书签/共享网站时,系统/网络管理员必须考虑哪些技术因素?

StackOverflow https://stackoverflow.com/questions/62403

  •  09-06-2019
  •  | 
  •  

我问的原因是 Stack Overflow 已经 斜线, , 和 红迪特.

首先,这会对为网站提供支持的服务器产生什么样的影响?其次,系统管理员可以采取哪些措施来确保其站点尽可能保持正常运行?

有帮助吗?

解决方案

不幸的是,如果您没有在这种情况发生之前做好计划,那么可能为时已晚,您的用户将获得糟糕的体验。

可扩展性是您首先关心的问题。您可能会开始每秒获得的点击次数比每月获得的点击次数还要多。您的第一道防线是良好的编程和设计。确保您没有做任何愚蠢的事情,例如每个请求多次从数据库重新加载数据而不是缓存数据。在峰值发生之前,您需要进行一些相当实际的负载测试,以了解瓶颈在哪里。

对于高得离谱的流量,请考虑将一些动态页面切换到静态页面的能力。

拥有可扩展的服务器架构也有帮助。共享主机通常无法扩展。单个专用机器通常无法扩展。使用 Amazon EC2 之类的东西来托管会有所帮助,特别是如果您从一开始就计划创建服务器集群(即使您的集群是一台计算机)。

您的下一个主要问题是安全性。你突然成为坏人的更大目标。确保您制定了良好的安全计划。这是您应该始终拥有的东西,但随着使用率的提高,它变得更加重要。

其他提示

首先,询问您是否真的愿意花费数周和数千美元来计划一些可能不会发生的事情,如果它确实发生,则持续大约 5 个小时。

最简单的解决方案是有一种好方法切换到仅允许注册的页面。人们会注册,当风暴过去后您可以给他们发电子邮件。

更复杂的解决方案依赖于快速扩展的能力。这首先是一个软件问题(您可以连接到另一台服务器上的数据库,您可以进行负载平衡)。其次,您的托管解决方案需要支持快速扩展。我想到的是 Amazon EC2,或者可能是 slicehost。使用这两种服务,您可以轻松启动新实例(“让我们将数据库移动到不同的服务器”)并扩展您的实例(“让我们将数据库服务器升级到 4GB RAM”)。

如果将所有数据保存在数据库中(包括会话),您可以轻松拥有多个前端服务器。对于数据库,我通常会尝试使用具有最高可用资源的单个服务器,但这只是因为我没有使用过数据库复制,而且它过去很难做到,至少对于 mysql 来说是这样。情况可能有所改善。

应用程序设计者需要考虑纵向扩展(具有更多内核和更高性能的更大机器)和/或横向扩展(跨多个系统分配工作负载)。IT 人员需要弄清楚如何最好地支持这一点。您首先看到的是网络,因为显然一切都依赖于网络。从边界开始,这通常意味着网络负载平衡器和冗余路由器由多个提供商提供服务。您还可以查看地理缓存服务和应用程序,例如cachefly。

您希望尽可能减少瓶颈。您还希望设计环境,使其可以根据需要进行扩展,而无需做太多工作。提前做好设计工作,这样当你被挖掘时就会少一些麻烦。

一些想法(我在过去和当前项目中使用的):为了提高性能(如果需要),您可以在服务器前面放置一个反向代理、缓存鱿鱼。当然,只有当您没有会话密钥并且页面有些静态时才有效(意味着:它们大约每小时改变一次)并且不是个性化的。使用squid,您可以增强像typo3这样臃肿且缓慢的CMS,从而拥有静态网站的性能和CMS的舒适性。

您可以将大型文件外包给 Amazon S3 等外部服务,从而节省服务器的带宽。

如果您能够花费一些(每月三位数)美元,您也可以使用内容交付网络。一旦到位,您就可以自动为您的用户提供可扩展性、高可用性和低延迟。当然,您的页面必须是可缓存的,因此会话密钥和个性化页面是禁忌。如果精心设计并考虑到 CDN,您至少可以缓存一些内容,例如图片、视频和静态内容。

正如其他答案所提到的,负载会增加。

您还将获得大量新用户/博客评论/来自那些只对破坏行为真正感兴趣的无聊人们的投票。对于允许完全匿名评论的博客来说,这主要是一个问题,其中会输入一些可怕的内容。博客平台可能有足够的垃圾邮件过滤器来阻止它,但经常需要手动干预来清理剩余的胡言乱语。

即使是一点点的进入障碍,比如即使没有进行验证也需要用户名或电子邮件地址,也会大大减少破坏行为的数量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top