这篇文章主要介绍“如何搭建分布式ASP.NET Core Web”,在日常操作中,相信很多人在如何搭建分布式ASP.NET Core Web问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何搭建分布式ASP.NET Core Web”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!单台Web处理用户请求的能力是有限的,因此我们可能会需要搭建分布式的Web服务器。当前市面上,可能用的比较多的是会话保持,这种模式下,开发者只需将先前开发好的、不支持会话共享的程序部署在多台服务器上,负载均衡提供商会要求开发者设置保持时间,就可以完成部署。但其缺点是仅仅将用户分配到不同节点,不是将请求分配到不同节点,粒度过大,会导致负载不够均衡。下面我们从各个角度介绍一下如何让你的ASP.NET Core网站系统摆脱会话保持分布式Web的第一大棘手问题就是登录状态。ASP.NET Core中默认是将Session ID进行保护的,因此这些数据是被加密过的,并以xml文件形式存在保护区,因此我们要将这个文件共享出来。因此我们需要实现Session Sharing,对于不同平台,我们有不同的做法(在ASP.NET Core 1.1.0发布前,我们只能通过文件系统进行共享):在Windows中,我们使用UNC路径来实现共享。首先建立一个文件夹,在共享中赋予Guest用户读写权限。Linux中我们需要安装nfs来实现共享,首先选择一个节点,作为nfs服务器(假设IP为10.0.0.254)接下来创建一个文件夹:下面编辑nfs配置文件,以配置欲共享的路径在这个配置文件里,我们配置三个参数:路径、IP或IP段、读写权限。每行表示一条记录,可以重复。保存后,重启nfs服务至此NFS服务器就部署完毕了,下面在各个节点中挂在nfs共享的文件夹。安装portmap:在每台节点中创建文件夹,作为挂载路径:至此即完成了共享我们需要为我们的ASP.NET Core程序配置DataProtect,让其将xml文件保存至共享路径中,进入Startup.cs
,添加AddDataProtection,并指定路径:public void ConfigureServices(IServiceCollection services){#if WINDOWS services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@”10.0.0.254share”));#elif LINUX services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@”/share-remote”));#elif REDIS_ON_NET_CORE_1_1_0// ASP.NET Core 1.1.0 新增将Session ID存储至Redis中 var redis = ConnectionMultiplexer.Connect(“10.0.0.254”); serviceCollection.AddDataProtection() .PersistKeysToRe 香港云主机dis(redis, “DATA_PROTECTION_KEYS_”);#endif}DataProtect配置过后,需要配置分布式缓存:配置好分布式缓存后,session就已经可以share了,包括使用了Identity的网站也同时受益,摆脱了对会话保持的依赖。如果网站使用了SignalR,那么需要将SignalR消息推送到各个节点,就需要使用Redis来Scale out SignalR:进入project.json
来添加Pomelo.AspNetCore.SignalR.Redis
包,版本为0.1.0在ConfigureServices
中添加下面的代码现在SignalR的消息就在各个节点中互通了。到此,关于“如何搭建分布式ASP.NET Core Web”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注开发云网站,小编会继续努力为大家带来更多实用的文章!
今天就跟大家聊聊有关如何实现一个简单的Promi 香港云主机se,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一个简单的 Promise 的粗糙实现,关键点在于rejected 状态同理看完上述内容,你…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。