`
找不着北
  • 浏览: 315920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

云计算与无状态会话

阅读更多

场景内容

云计算因其软件上的按需付费模式而大获成功,它创造了一种伸缩性模型:

  • 如果有两个公司,它们正好在相反的时区里,白天都需要10台服务器,晚上减少到1台。那么一个云计算服务商需要11台服务器就能同时为这两个公司提供服务——在任何一个时间点,拿出10台给一家公司用,1台给另一家。
  • 如果这两家公司都使用自己的机器,他们每家都要买10台(总共20台)。其中9台机器会在夜里闲置。
  • 时区可不是来共享这些闲置资源的唯一理由:
    • 运算需求同样是一个很好的应用场景。有些公司会在圣诞节时需要很强的运算能力,而另外一些公司则是在财政年度结束时需要,等等。
    • 有些公司很可能是不能预知何时需要多少资源。例如slashdot效应。不管是哪种情况都是通过共享来让他人使用你的空闲资源。这就使按需付费成为可能。
  • 你可以把这种概念扩展到整个平台成本上——应用程序服务器,数据库和应用。

Statelessness

关于伸缩性的最重要的一点就是——根据负载的情况,白天给公司提供服务的9台机器在夜间自动缩减到1台。而这一台之外的其它8台机器开始给其它公司提供服务。云计算的这种能够允许两个租户(或更多)共享业务处理能力的特性就叫做过程共享的多重租赁。

那么为什么要无状态的系统架构呢?

假设个场景,就说白天时间有1000个用户分布在10台机器上,每台机器大概服务100个用户。在一个有状态的系统结构中,每台机器都只为在本机登 录并产生了会话(session)的那100个用户服务。这个由http负载均衡来实现,叫做会话粘连(session stickiness)。

当夜间到来时,让我们假设有900个用户退出系统,其他的100个用户仍然在线。理想情况下,只需1台机器就可以为所有的这些人提供服务。然而,这100个用户可能会分布在所有的这10台机器上,每台10人。所以,缩减到一台机器是不可能的,这样一来,伸缩性就给限制了。

解决这个问题的一个方法就是把10台机器的所有会话状态都复制到一起。这样一来,任何一台机器都可以为这些用户服务。但每台机器就会用掉10倍的内 存来保留所有用户的会话状态。这些会降低服务器的可用性,因为一旦有更多的用户使用时,集群中就需要加入更多的服务器。当你共享多重租赁的应用中的租户突 然暴增时,你就没法应付了。

无状态化后情况会如何变化?

在无状态的应用中,你可以在任何一个地方执行用户的请求——会话粘连(session stickness)不再是个问题。当用户从1000减到100后,你可以立即释放9台服务器,调给其它公司使用,只用1台为这100个用户服务。.

这听起来很简单。而实际操作起来却不是那么容易。所有的应用都需要状态。如果应用服务器不去处理这些状态,你就必须想其它的办法。数据库就是一个明 显的问题。当前的数据库已经在扩展问题上遇到了足够的麻烦了,再加上状态管理,那是绝对不可行的。所以NoSQL才要“分布式”存储。

在PaaS服务商中你会看到这是一种常见的架构模式:

  • Google App Engine – 无状态请求 + Big Table
  • Microsoft Azure – web角色 + Azure存储/SQL
  • 当然了,还有我们公司 – OrangeScape,它是运行在GAE/Amazon EC2 之上的。
  • 我估计VMforce也是这样的 – Spring stateless session beans + Force.com DB

那就都云计算吧!有状态的应用+SQL数据库已成昨日黄花了。(抱歉!实在忍不住。)

 

 

翻译来源:外刊IT评论

 

 

;)

分享到:
评论

相关推荐

    技术人员想要开发云计算要从哪里下手

    然而,这并不排除在某些场景下需要保存状态信息,例如用户会话。开发人员需要找到平衡点,既保持应用无状态,又能适当存储必要的状态信息。 4. **分布式架构**:云应用的不同组件可能分布在不同的云服务上,开发者...

    无状态运维.pdf

    无状态运维是现代IT运维领域中的一个重要概念,它与传统的有状态运维形成了鲜明对比,旨在提高系统的可伸缩性、可靠性和效率。...随着云计算和微服务的普及,无状态运维已成为构建高可用、高性能应用的主流方法。

    有效构建高效率的云计算资源.pdf

    无状态的服务设计有助于提高系统的可扩展性,因为无状态的服务可以在不同的服务器之间自由移动而不影响服务功能。如果有状态管理需求,则可以利用分布式会话管理解决方案,如Redis,以实现服务器间共享会话。为了...

    Linux云计算学院-面试葵花宝典汇总篇(有答案)1

    18. 与 VGA 密切相关的设备:VGA(Video Graphics Array)是一种视频接口标准,与显示器紧密相关,选项 B 正确。 19. OSI 模型层次:从底层到顶层,OSI 模型的七层依次为物理层、数据链路层、网络层、传输层、会话...

    对基于云计算的网络舆情挖掘分析.pdf

    利用云计算的强大数据处理能力,可以实现对网络舆情大数据的高效处理,从而更好地进行舆情监控与分析工作。云计算支持下的网络舆情挖掘技术可以对海量数据集进行集中化处理和分析,为用户提供全面且高效的服务。 ...

    行业-电子政务-电子装置、以及用户与服务器启动的会话控制方法.zip

    7. 会话回话:当用户退出或注销时,服务器必须正确结束会话,清除所有相关数据,包括会话ID和存储在服务器端的用户状态信息。 总结来说,电子政务中的电子装置和会话控制方法是保障信息安全和提供高效服务的基础。...

    云计算环境下分布式缓存技术的现状与挑战.pdf

    3) 状态缓存:存储Session会话状态和横向扩展应用的状态数据,适用于高可用性集群。 4) 并行处理:共享大量中间计算结果,提升处理效率。 5) 事件处理:提供连续查询处理技术,满足实时性需求。 6) 极限事务处理:...

    云计算的高可用性实现技术探讨.pdf

    而伸缩时间优先模式则保持一组虚拟机的数量为最大容量,即使某些虚拟机暂时没有负载,也仅处于关闭状态,一旦需要新的活动虚拟机,可以迅速启动,这种模式在时间效率上更具有优势。 负载均衡设计也是高可用性实现的...

    云计算项目-第四阶段1

    - 使用4层负载均衡通常针对无状态服务,而7层负载均衡适合需要处理HTTP请求和保持会话的应用。 - 数据迁移保证不丢失可以通过事务一致性、备份恢复和校验机制来实现。 - 快速迁移数据并保证高可用性,可以采用数据库...

    PHP实例开发源码—云计算导航源码.zip

    9. session与cookie:为了实现用户会话管理,源码可能会用到PHP的session和cookie功能,跟踪用户状态,如登录状态、浏览历史等。 10. HTTP协议:理解HTTP请求方法(GET、POST等)以及HTTP头的使用对于处理用户请求...

    hiro分布式会话共23页.pdf.zip

    分布式会话通常是指在分布式系统中保持用户状态的一种方法,这在云计算和大型Web应用中非常重要。它可能包括如何在多个服务器之间共享用户会话数据,例如使用分布式缓存(如Redis或Memcached)、cookie、HTTP会话...

    基于PHP的云计算导航源码.zip

    6. **会话管理**:为了保持用户状态,源码可能涉及PHP的session机制,需要理解如何创建、读取和销毁session。 7. **错误处理和日志记录**:良好的错误处理和日志记录是任何应用的基石,源码可能会有相应的错误捕获...

    开源云计算abiCloud安装

    - 机架/物理机器:管理物理设备,查看硬件状态和网络信息。 - 虚拟设备利用率:展示物理设备上的虚拟资源使用情况。 5. **镜像库**: - 物理库管理:管理物理存储和编译位置。 - 虚拟图像:创建、修改、删除...

    饿汉模式在云计算中的应用.pptx

    #### 五、饿汉模式与云计算冗余部署 - **概述**: 在云计算环境中,为了提高系统的可靠性和可用性,通常采用冗余部署的方式。饿汉模式在这种场景下可以通过预加载的方式提高系统的响应速度。 - **应用场景**: 在多活...

    大数据与云计算培训学习资料 Hadoop集群 细细品味Hadoop_第3期_VSFTP安装配置 共22页.pdf

    【大数据与云计算培训学习资料】中的【Hadoop集群】部分主要介绍了如何在Hadoop环境中配置VSFTP服务,这是大数据处理中常见的数据传输工具。VSFTP(Very Secure FTP)是一款安全且高效的FTP服务器软件,适用于类Unix...

    IaaS云计算安全框架设计.docx编程资料

    - **会话控制和劫持**:由于许多Web应用程序依赖于会话状态,这可能导致通信会话被攻击者控制或劫持,进而引发数据泄露或拒绝服务等问题。 - **API访问控制失效**:当外部实体访问API接口时,如果不能正确验证调用...

    基于云计算的分布式缓存.pptx

    综上所述,基于云计算的分布式缓存是一项关键技术,它不仅可以大幅提升系统的性能,还能在很大程度上简化后端架构的设计与维护工作。随着云计算技术的不断发展和完善,分布式缓存的应用将会越来越广泛。

Global site tag (gtag.js) - Google Analytics