`

淘宝的应用无状态(淘宝session框架)

 
阅读更多

俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理。为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保存状态信息的server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常 所说的集群,不仅有负载均衡,更重要的是要有失效恢复failover,比如tomcat采 用的集群节点广播复制,jboss采 用的配对复制等session状 态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间session的 通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,从而是的系统更好的 水平伸缩。

        OK, 上面说了无状态的重要性,那么具体如何实现无状态呢?此时一个session框架就会发挥作用了。幸运的是淘 宝已经具有了此类框架。淘宝的session框架采用的是client cookie实现,主要将状态 保存到了cookie里 面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的.但 是采用客户端cookie的 方式来保存状态也会遇到限制,比如每个cookie一般不能超过4K的大小,同时很多浏览器都限制一个站点最 多保存20个cookie.淘 宝cookie框 架采用的是“多值cookie”, 就是一个组合键对应多个cookie的 值,这样不仅可以防止cookie数 量超过20, 同时还节省了cookie存 储有效信息的空间,因为默认每个cookie都会有大约50个字节的元信息来描述cookie。

        除 了淘宝目前的session框 架的实现方式以外,其实集中式session管理来完成,说具体点就是多个无状态的应用节点连接一个session 服 务器,session服 务器将session保 存到缓存中,session服 务器后端再配有底层持久性数据源,比如数据库,文件系统等等。

分享到:
评论

相关推荐

    淘宝网采用什么技术架构来实现网站高负载

    淘宝自有的session框架将状态信息保存在客户端的cookie中,避免了服务器端存储状态导致的伸缩性问题。然而,cookie存在大小和数量限制,淘宝通过多值cookie技术解决了这一挑战,确保了在不违反浏览器限制的情况下...

    淘宝技术框架分析方案报告.doc

    3. Session框架: 在Web应用中,Session用于存储用户状态信息。淘宝采用集中式缓存来解决Session共享问题,避免了会话保持和Session复制带来的局限性。XX银行由于使用F5进行负载均衡,通常会选择会话保持策略。 4....

    淘宝网采用什么技术架构来实现网站高负载的

    淘宝通过自研的Session框架,将状态信息存储在客户端Cookie中,避免了服务器端的状态管理。这种“多值Cookie”方案解决了Cookie大小和数量限制的问题,确保了用户状态的存储和管理。 其次,淘宝广泛使用缓存技术来...

    【重磅】淘宝技术框架分析报告.docx

    在Web应用中,Session用于保存用户状态。淘宝通过集中式缓存解决集群环境下的Session共享问题,避免了会话保持和Session复制带来的挑战。吉林银行则利用F5实现会话保持,但这可能会限制其集群扩展性。 4. HSF高...

    淘宝技术框架分析报告.pdf

    4. Session管理:在Web应用中,Session用于保存用户状态。淘宝采用了集中式缓存的方式处理Session共享问题,避免了会话保持和Session复制带来的挑战,尤其是后者对集群扩展性的限制。 5. HSF(High Speed Service ...

    java+jsp SSH框架仿淘宝网络商城网站源码

    这个"java + jsp 整合SSH框架仿淘宝网络商城源码"为学习者提供了实战经验,帮助理解如何在实际项目中应用SSH框架,以及如何构建一个功能完善的在线购物系统。对于想要深入理解Java Web开发的开发者来说,这是一个很...

    淘宝淘宝免费查单工具(淘宝登录,淘宝post,淘宝查单,淘宝代付)

    淘宝是知名的在线购物平台,而“淘宝淘宝免费查单工具”显然是一款专为淘宝用户设计的应用,它提供了淘宝登录、POST请求发送、订单查询以及代付功能。在IT领域,这些功能涉及到的知识点广泛且深入,包括网络通信、...

    淘宝网高性能可伸缩架构技术探秘

    淘宝的session框架采用客户端cookie实现,将状态信息存储在cookie中,避免了应用节点保存状态,实现了水平扩展。当面临cookie大小和数量限制时,采取“多值cookie”策略,将数据分散到多个cookie中,同时节省存储...

    ASP源码—淘宝在线代码生成工具源码 v1.0.zip

    4. **Session和Application对象**:Session对象用于存储用户会话期间的变量,保持用户状态。Application对象则是在所有用户间共享数据,通常用于全局变量或缓存。 5. **数据库连接与查询**:ASP可以使用ADODB...

    淘宝网系统架构

    - **改进**:采用无状态Web应用设计,基于Cookie实现Session管理,提高系统的线性扩展能力。 - **新技术引入**:引入Spring框架,实现与自服务框架的无缝集成;采用Hibernate和iBatis等ORM工具,其中iBatis为主要...

    淘宝登录delphi代码

    3. **Cookie管理**:登录成功后,服务器通常会返回一个Session ID或Cookie,用于识别已登录的用户。开发者需要保存并管理这些Cookie,以便后续的API调用能保持会话状态。 4. **JSON解析**:淘宝的API响应通常是JSON...

    淘宝jsp项目源代码和页面

    5. **会话管理**:在大型电商项目中,会话管理非常重要,可以学习到如何使用cookie和session来跟踪用户状态。 6. **安全控制**:如CSRF防护、XSS防护、SQL注入防御等,这些都是在开发过程中必须考虑的问题。 7. **...

    登录框架设计

    在诸如淘宝、京东等电商应用中,用户在未登录状态下可以自由浏览商品,但进行购物或其他涉及个人资料的操作时,则需要验证身份后才能进行。这种场景下的登录框架设计需要兼顾用户体验与系统安全。 首先,我们要理解...

    java模拟淘宝登录源码

    `log4j-1.2.17.jar`是著名的日志记录框架Log4j的一个版本,用于记录程序运行过程中的各种信息,便于调试和问题排查。 `commons-lang-2.4.jar`是Apache Commons Lang库,提供了许多Java语言工具类,如字符串操作、...

    大型应用系统架构设计 淘宝分布式调用跟踪系统介绍 共60页.pptx

    \n\n在实际应用中,鹰眼覆盖了淘宝的主要通信中间件,如前端请求接入的Tengine(基于Nginx)、分布式Session管理的tbsession、远程服务调用框架HSF、异步消息通讯Notify、分库分表的JDBC访问TDDL、分布式缓存Tair、...

    淘宝购物车站点.zip

    同时,服务器端会处理登录请求,验证用户凭据,并生成会话(Session)或令牌(Token)以保持用户状态。 "淘宝工具程序"可能指的是辅助购物的工具,比如价格监控、库存检测、促销活动提醒等功能。这些功能可能通过...

    淘宝商城Java web项目

    在本项目中,开发者利用J2EE(Java 2 Platform, Enterprise Edition)框架来构建Web应用程序,它是一个面向企业级应用开发的平台,支持多层架构,包括客户端、Web服务器和应用服务器等组件。 该项目的核心技术主要...

    淘宝售价500源码的几套B2C网站asp.net源码可以做毕业设计

    4. "[电子商务].Net Session购物车示例_sessiongwc.rar" - 这是一个使用asp.net的Session技术来实现的购物车示例,Session是asp.net中用于跟踪用户状态的一种机制,这对于理解和实现电商网站的购物车功能非常有帮助...

    ssh框架实现的购物网站

    总结起来,SSH框架构建的购物网站是一个典型的Java Web应用实例,它展示了如何利用三大框架协作完成复杂业务逻辑。不过,实际项目开发中还需要考虑更多的因素,如性能优化、安全性、可扩展性和易维护性等。

    淘宝花钱购买的经典php商城小程序源码--Tinkphp5.1框架小程序商城带后台源码免费试用学习

    在TinkPHP中,可以通过Session或Cookie实现用户状态的管理。 2. **商品模块**:商品分类、展示、搜索、详情页等功能,需要数据库设计和SEO优化。在源码中,商品信息通常存储在MySQL数据库中,通过模型类进行操作。 ...

Global site tag (gtag.js) - Google Analytics