搭建分布式 ASP.NET Core Web

单台Web处理用户请求的能力是有限的,因此我们可能会需要搭建分布式的Web服务器。

当前市面上,可能用的比较多的是会话保持,这种模式下,开发者只需将先前开发好的、不支持会话共享的程序部署在多台服务器上,负载均衡提供商会要求开发者设置保持时间,就可以完成部署。但其缺点是仅仅将用户分配到不同节点,不是将请求分配到不同节点,粒度过大,会导致负载不够均衡。

下面我们从各个角度介绍一下如何让你的ASP.NET Core网站系统摆脱会话保持

Session Sharing

分布式Web的第一大棘手问题就是登录状态。ASP.NET Core中默认是将Session ID进行保护的,因此这些数据是被加密过的,并以xml文件形式存在保护区,因此我们要将这个文件共享出来。

因此我们需要实现Session Sharing,对于不同平台,我们有不同的做法(在ASP.NET Core 1.1.0发布前,我们只能通过文件系统进行共享):

Windows

在Windows中,我们使用UNC路径来实现共享。首先建立一个文件夹,在共享中赋予Guest用户读写权限。

Linux

Linux中我们需要安装nfs来实现共享,首先选择一个节点,作为nfs服务器(假设IP为10.0.0.254)

apt-get install nfs-kernel-serve

接下来创建一个文件夹:

mkdir /share

下面编辑nfs配置文件,以配置欲共享的路径

vi /etc/exports

在这个配置文件里,我们配置三个参数:路径、IP或IP段、读写权限。每行表示一条记录,可以重复。

/share     10.0.0.1/24(rw,sync,no_subtree_check)
/share     10.0.1.1/24(rw,sync,no_subtree_check)

保存后,重启nfs服务

service nfs-kernel-server restart

至此NFS服务器就部署完毕了,下面在各个节点中挂在nfs共享的文件夹。

安装portmap:

apt-get install portmap nfs-common

在每台节点中创建文件夹,作为挂载路径:

mkdir /share-remote
mount -t nfs 10.0.0.254:/share /share-remote

至此即完成了共享


我们需要为我们的ASP.NET Core程序配置DataProtect,让其将xml文件保存至共享路径中,进入Startup.cs,添加AddDataProtection,并指定路径:

public void ConfigureServices(IServiceCollection services)

{

#if WINDOWS    services.AddDataProtection()        .PersistKeysToFileSystem(

new DirectoryInfo(@"\\10.0.0.254\share"));

#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()        .PersistKeysToRedis(redis, "DATA_PROTECTION_KEYS_");

#endif}

DataProtect配置过后,需要配置分布式缓存:

services.AddDistributedRedisCache(x => {    x.InstanceName = "SESSION_INSTANCE_";    x.Configuration = "10.0.0.254"; 

// StackExchange.Redis Connection String}); services.AddSession(x => {    x.IdleTimeout = new TimeSpan(1, 0, 0); });

配置好分布式缓存后,session就已经可以share了,包括使用了Identity的网站也同时受益,摆脱了对会话保持的依赖。

SignalR Scale Out

如果网站使用了SignalR,那么需要将SignalR消息推送到各个节点,就需要使用Redis来Scale out SignalR:

进入project.json来添加Pomelo.AspNetCore.SignalR.Redis包,版本为0.1.0

ConfigureServices中添加下面的代码

services.AddRedis(x =>
{
    x.ConnectionString = "10.0.0.254";
  // StackExchange.Redis Connection String    x.Database = 0;    x.EventKey = "SIGNALR_INSTANCE"; }) .AddSignalR(options => {    options.Hubs.EnableDetailedErrors = true; });

现在SignalR的消息就在各个节点中互通了。

原文链接:http://www.1234.sh/post/asp-net-core-distributed-web-server


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您想下载 .net core webapi 项目的源码,可以通过以下步骤实现: 1. 打开 GitHub 网站,然后搜索您需要的项目。 2. 找到该项目的页面,然后点击“Clone or download”按钮。 3. 选择“Download ZIP”选项,将项目的 ZIP 文件下载到本地。 4. 解压下载好的 ZIP 文件,并使用 Visual Studio 打开项目。 另外,您也可以使用 git 命令行工具来下载项目源码。具体步骤如下: 1. 打开命令行工具(如 Git Bash)。 2. 进入您想要下载项目的路径(如 cd ~\Projects)。 3. 执行以下命令:git clone [项目的 GitHub 地址]。 4. 等待项目下载完成,然后使用您习惯的编辑器打开项目。 无论您是使用 ZIP 文件下载还是使用 git 命令行工具下载,都可以轻松地获取到 .net core webapi 项目的源码。下载完成后,您可以在本地修改和测试项目,并将修改提交到 GitHub 上。 ### 回答2: 要下载 .NET Core Web API 项目的源代码,您需要遵循以下步骤: 1. 打开您的浏览器,前往 GitHub 网站。 2. 在 GitHub 上搜索您需要的 .NET Core Web API 项目,例如使用关键词“ASP.NET Core Web API”。 3. 在搜索结果中,选择您需要的项目,并进入项目的详情页面。 4. 在项目详情页面上,单击“Code”按钮,这将显示项目的 Git 存储库 HTTPS URL。 5. 复制 HTTPS URL,然后在您的本地计算机上打开 Git Bash 或其他类似的终端程序(例如 PowerShell 或 CMD)。 6. 在命令行中,输入“git clone”命令,后跟 HTTPS URL,并按 Enter 键。这将从远程存储库克隆源代码到您的本地计算机。 7. 等待下载完成后,您可以使用 Visual Studio、Visual Studio Code 或其他 IDE 打开项目的代码文件,并开始编辑和构建您自己的Web API应用程序。 需要注意的是,在下载项目源代码之前,您需要确保您的开发环境中已经安装了 .NET Core SDK 和必要的依赖项,这样才能确保您的代码在本地正确运行。同时,如果您在下载项目代码时遇到任何问题或困难,请参考相关的文档和教程,寻求帮助和支持。 ### 回答3: 在进行 .NET Core WebAPI 项目的源码下载之前,首先需要了解一些基础知识和准备工作。 1. 安装 .NET Core SDK 在进行 .NET Core WebAPI 项目开发和下载源码之前,需要先安装 .NET Core SDK,可以从微软官网下载对应版本的 .NET Core SDK 进行安装。 2. 确定项目源码地址 在进行项目的源码下载之前,需要先确定项目的源码地址。可以从 GitHub、GitLab 或者码云等开源项目托管平台获取项目的源码地址。 3. 安装 Git 在进行项目源码的下载之前,需要先安装 Git 工具。Git 是一个分布式版本控制系统,可以在各个操作系统上使用。 4. 克隆项目源码 通过 Git 工具可以将项目源码克隆到本地。可以使用以下命令进行克隆: $ git clone [源码地址] 例如:$ git clone https://github.com/dotnet/AspNetCore.Docs.git 5. 打开项目 在成功克隆项目源码之后,可以使用 Visual Studio Code 或者 JetBrains Rider 等工具打开项目。 总结: 获取 .NET Core WebAPI 项目源码需要先安装 .NET Core SDK 和 Git 工具,然后通过获取源码地址进行克隆,最后使用相应的开发工具打开项目进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值