Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无状态和实例内数据库_Asp.net_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Asp.net 无状态和实例内数据库

Asp.net 无状态和实例内数据库,asp.net,amazon-web-services,amazon-ec2,Asp.net,Amazon Web Services,Amazon Ec2,我是AWS新手,我开始测试创建EC2实例。我计划部署一个简单的ASP.Net网站,并将数据库直接托管在EC2实例上 现在,我听说在“云”中,我在开发ASP.Net应用程序时需要小心,因为它需要是“无状态的”,我不能依赖ASP.Net SessionState来维护数据 我通常的方法是将状态存储在数据库中,因为(理论上)任何ASP.net应用程序都将访问相同的数据库 这是我的主要问题: 在我的例子中,我将在同一个EC2实例中托管数据库,会话状态的问题会发生吗 还有一个附带的问题: 我现在甚至不需要

我是AWS新手,我开始测试创建EC2实例。我计划部署一个简单的ASP.Net网站,并将数据库直接托管在EC2实例上

现在,我听说在“云”中,我在开发ASP.Net应用程序时需要小心,因为它需要是“无状态的”,我不能依赖ASP.Net SessionState来维护数据

我通常的方法是将状态存储在数据库中,因为(理论上)任何ASP.net应用程序都将访问相同的数据库

这是我的主要问题:

  • 在我的例子中,我将在同一个EC2实例中托管数据库,会话状态的问题会发生吗
  • 还有一个附带的问题:

  • 我现在甚至不需要担心,因为我只有一个EC2实例
  • 将来,我可能会将我的“实例”数据库移动到RDS。在这种情况下,我可以安全地将会话状态存储在数据库中,或者有更好的解决方案吗

  • 是的,您可以在同一实例中安装/托管数据库。唯一的要求是在启动实例时,确保AMI是EBS支持的。当您启动实例时,您将从AMI启动它。如果AMI是EBS支持的,则即使在停止实例时,根卷仍然存在

    如果数据库不需要大量的计算和内存资源,那么在同一个实例中运行数据库就不会有任何问题。我建议你:

    • 启动实例时附加卷,并在附加卷中安装数据库。为了获得更高的性能,您可以选择提供快速I/O的磁盘类型
    • 选择具有足够CPU和内存的实例类型。即使在启动实例后(停止实例后),也可以增加CPU/内存
    • 您可以稍后将数据库迁移到RDS
    • 你可以考虑,但它是一个Noql dB<LI>
    是的,您可以在同一实例中安装/托管数据库。唯一的要求是在启动实例时,确保AMI是EBS支持的。当您启动实例时,您将从AMI启动它。如果AMI是EBS支持的,则即使在停止实例时,根卷仍然存在

    如果数据库不需要大量的计算和内存资源,那么在同一个实例中运行数据库就不会有任何问题。我建议你:

    • 启动实例时附加卷,并在附加卷中安装数据库。为了获得更高的性能,您可以选择提供快速I/O的磁盘类型
    • 选择具有足够CPU和内存的实例类型。即使在启动实例后(停止实例后),也可以增加CPU/内存
    • 您可以稍后将数据库迁移到RDS
    • 你可以考虑,但它是一个Noql dB<LI>
  • 在我的例子中,我将在同一个EC2实例中托管数据库,会话状态的问题会发生吗
  • 不,在这种情况下,您不会遇到会话状态问题。当单个用户的HTTP请求分布在多个web服务器上时,会出现会话状态问题。即使您有多个web服务器,如果您不想完全无状态,也可以使用粘性会话或使用Redis之类的分布式会话存储来缓解这个问题

    我建议您花点时间了解无状态web体系结构是什么,以及它正试图解决哪些问题。仅仅将会话从一个位置(web服务器)移动到另一个位置(数据库服务器)并不会使应用程序成为无状态,而且可能会导致将可伸缩性瓶颈从一个位置移动到另一个位置

  • 我现在甚至不需要担心,因为我只有一个EC2实例
  • 正确的,您不需要为一个EC2实例而担心。就像当你的应用程序在一台笔记本电脑上运行时,你不用担心它

    但是,如果您认为将来需要跨多台服务器扩展应用程序以处理更高的负载,那么您至少需要考虑在设计应用程序的早期阶段如何实现这一点

  • 将来,我可能会将我的“实例”数据库移动到RDS。在这种情况下,我可以安全地将会话状态存储在数据库上,或者存储在那个里 有更好的解决方案吗
  • 如果您打算将会话状态存储在web层之外(这将实现web层的轻松水平扩展和负载分布),那么您可以使用RDS数据库。然而,如果您必须在每次处理请求时加载和更新该记录,那么这可能会导致相当繁重的数据库IO。我可以看出这是一个真正的瓶颈

    我强烈建议在此场景中使用Redis服务器,而不是关系数据库。亚马逊的托管Redis服务称为ElastiCache

  • 在我的例子中,我将在同一个EC2实例中托管数据库,会话状态的问题会发生吗
  • 不,在这种情况下,您不会遇到会话状态问题。当单个用户的HTTP请求分布在多个web服务器上时,会出现会话状态问题。即使您有多个web服务器,如果您不想完全无状态,也可以使用粘性会话或使用Redis之类的分布式会话存储来缓解这个问题

    我建议您花点时间了解无状态web体系结构是什么,以及它正试图解决哪些问题。仅仅将会话从一个位置(web服务器)移动到另一个位置(数据库服务器)并不会使应用程序成为无状态,而且可能会导致将可伸缩性瓶颈从一个位置移动到另一个位置

  • 我现在甚至不需要担心,因为我只有一个EC2实例
  • 正确的,您不需要为一个EC2实例而担心。就像你在测试应用程序时不必担心它一样