一个静态网站“滚动更新”的功能,你知道吗?

优采云 发布时间: 2021-08-04 00:24

  一个静态网站“滚动更新”的功能,你知道吗?

  介绍

  最近我们老板要我实现一个静态的网站“滚动更新”功能。其实他希望网站在部署网站的时候可以完全切换。 网站 不能成为新部署过程的一部分。另一部分是旧内容。

  这让我想起了微软的 azure 应用服务。最后一家公司主要使用微软的云服务azure。该站点已部署到 azure 应用程序服务。 azure 应用服务有部署槽的概念,我们的一个应用的一个版本可以对应一个部署槽,通过部署槽,我们基本上可以从一个版本无缝切换到另一个版本。

  文件提供者

  核心中静态文件的托管允许您自定义 ifileprovider。默认情况下,使用物理路径文件。默认情况下,core 使用 wwroot 目录作为静态文件的默认来源。

  对于静态文件,我们简单地使用两个目录来模拟两个部署槽。在需要的时候,我们可以修改配置来动态修改有效的部署槽。基于ioptionmonitor和physicalfileprovider,我们可以实现一个简单的dynamicfileprovider,并实现代码。如下:

  看起来简单,其实是在physicalfileprovider的基础上进行封装的,当配置发生变化时,会构建一个新的physicalfileprovider

  构建宿主

  接下来,我们来看看它的使用方法。代码如下:

  这里的例子只需要这些代码,我们的应用就可以运行了,接下来看看使用效果

  演示

  在项目根目录运行dotnet run启动项目,然后访问:5000/index.html

  

  然后我们修改配置文件中的配置,将配置文件中的currentslot配置修改为slot2,然后刷新页面,如下图:

  

  那么不修改配置文件可以切换部署槽吗?这也是可能的。我提供了一个简单的 api 用于切换。

  这个api做的很简单。在 slot1 和 slot2 之间切换。如果原来是slot2,则切换到slot1,否则切换到slot2。修改配置后,调用reload触发配置更新,删除配置文件中的currentslot。配置,重新运行例子,查看:5000/index.html,还是看到slot1中的内容,然后我们调用/redeploy接口动态切换配置,然后再次刷新页面看到slot2中的内容,然后调用reeploy后,刷新页面,它会变回slot1中的内容

  

  更多

  这样一个简单的dynamicfileprovider函数就完成了,我们就可以在不同版本的静态资源之间动态切换了。

  如果实际使用,可以考虑更新重新部署界面。将新的网站内容以上传文件的形式上传到网站。上传完成后会触发配置更新,可以保留最新的版本更新。这样既可以查看部署历史,也方便回滚。

  想一想,如果我们的站点部署在集群中,需要修改什么?

  对于集群部署场景,可能有两个问题。一是文件访问问题。我们可以使用自定义文件提供程序来访问文件服务器上的文件。如果我们使用容器部署场景,那么我们使用同一个卷来实现统一的文件访问。另一个问题是配置管理和更新。对于集群部署配置,我们通常需要使用配置中心来统一管理配置。这和上面的配置是一样的。配置更新 届时也会触发更新。

  总结

  这篇关于核心如何实现简单静态网站rolling 更新文章 的文章在这里。更多相关核心静态网站rolling更新内容,请在万千网搜索文章。或者继续浏览下面的相关文章,希望大家以后多多支持万千网!

  参考资料

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线