我使用Git来pipe理我的web应用程序的开发周期,对于git pull已经足够而且不需要更改的变化,我只是自然而然的保持站点的正常运行,并且git pull这些变化git pull 。
但是我想,假设我有100个文件被修改了,并且说磁盘上有一些意想不到的负载,如果有人在 git提交磁盘上的修改的时候请求了某个请求,会发生什么? 这不会使我的应用程序可能容易受到可能的数据损坏或格式错误的响应吗?
我的意思是,对于一个低stream量的网站来说这是非常非常不可能的,但是如果你得到了一些非常高的stream量,并且恰好是服务器的负载,那么存在一些风险。
我其实想到了一个解决scheme,但如果我推出我自己的实现,可能不是最好的,我不确定它是否实用。 我记得读过一篇关于如何在屏幕上看不到文物的文章,基本上是把新的数据写到GPU内存上的一个完全不同的块上,然后把最新的屏幕数据 (不pipe叫什么)新的块,并可能丢弃或重新使用旧的块。 这样,如果一个GPU滞后,将不会显示一半的数据
如果能够实施这样的一个类似的事情,这是否可行?
你会想要一个负载平衡器。 它可以提供滚动升级,高可用性和扩展。
大,不重要,但不知何故总是起来的网站不断变化。 也许他们正在推出每日更新,或某些function失败,但仍然运行。 他们已经决定,稍有不同的用户体验是不值得closures的。 如果解决scheme包含计划停机时间,则需要自行决定。
在单独的Web服务器上,某些部署方法使得转换更为清晰。 在部署代码之前,将代码移动到位是比实时更新工作副本更简单的方法。 虽然这不包括数据库,Web服务器更新和其他复杂性。 你仍然想要一个负载平衡器给你的select。
其中一个规范的方式来做到这一点,无论你使用git或不使用(但使用它,你可以实现这个scheme的一些挂钩),是在网站上安装每个新的“版本“在其自己的特定目录中,例如在其名称中包含date/时间戳。 networking服务器当前使用的真实内容是另一个path,它是一个“版本”目录的符号链接。
传输完成后,在检查完一切正常后(没有丢失文件,合理的内容,正确的Unix权限,没有悬挂的符号链接等),只需要将符号链接从“生产”path更改为新的“版本”path。
更改符号链接几乎是primefaces的,所以不会造成任何中断。
这也使您可以轻松地返回:只需再次更改符号链接即可。