可扩展的http会话pipe理(java,linux)【JAVA教程】

!
也想出现在这里? 联系我们
信息

可扩展的http会话pipe理(java,linux),第1张

概述可扩展的http会话pipe理(java,linux)

是否有可扩展的http会话pipe理的最佳做法?

问题空间:

购物车那种用例。 用户在网站周围商店,最终退房; 会话必须保留。

多个数据中心

每个数据中心有多个Web服务器

Java,linux

我知道有很多方法可以做到这一点,我总是可以提出自己的具体解决scheme,但是我想知道stackoverflow是否能帮助我关注最佳实践

总的来说,似乎有几种方法:

从令牌创buildDjango会话

windows:XP – > current:如何判断在CONSolE或RDP会话中?

通过Nginx使用redis作为会话存储,在NodeJs中加载平衡

Nginx的服务基于用户login不同的文件?

为什么枚举会话在windows 7上增加了额外的function?

不要保留会话; 永远运行无国籍,宗教[不适合我…]

使用j2ee,ejb和那个帮派的其他人

使用数据库来存储会话。 我想有些工具可以让这些工具变得简单,所以我不需要自己制作

使用memcached来存储会话(或其他types的中间,半持久性存储)

使用键值数据库。 比memcached更“持久”

使用“客户端会话”,这意味着所有的会话信息都存在于隐藏的表单字段中,并从客户端向服务器传递。 没有任何东西存储在服务器上。

有什么build议么? 谢谢

保存和恢复应用程序窗口状态

如何清除所有用户的会话?

退出SSH会话之后坚持一个sbt进程的最合适的方法是什么?

如何用C ++中的FastCGI(Nginx)创build一个cookie

cookies不工作,Apache到Nginx

我会去一些标准的分布式缓存解决方案。 可能是你的应用程序服务器提供,可以memcached,可能是兵马俑可能无关紧要哪一个你选择,只要你使用的东西足够流行(所以你知道大部分的错误已经被追捕)。

至于你的其他想法:

不要保持会话 – 如你所说不可能的

客户端会话 – 太不安全 – 假设某人骇客cookie将折扣价格放在购物车中

使用数据库 – 数据库通常是解决的最困难的瓶颈,不要放在那里,而不是绝对必须的。

那些是我的2美分:)

关于多个数据中心 – 您将希望会话与开始的数据中心有一定的亲和力。 我不认为有分布式缓存的解决方案可以在不同的数据中心之间工作。

你似乎错过了清单中复制的http会话。 任何值得使用的servlet容器都支持跨集群的会话复制。 只要你放入会话的项目不是很大,并且是可序列化的,那么使其工作起来非常容易。

http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.HTML

编辑:但是,似乎tomcat会话复制不能很好地扩展到大型集群。 为此,我建议使用JBoss + Tomcat,它提供了“伙伴复制”的概念:

http://www.jboss.org/community/wiki/BuddyReplicationandSessionData

我个人还没有管理过这样的集群,但是当我在大学读J2EE课程的时候,讲师说会把会话存储在一个数据库中,而不是试图缓存它。 (无论如何你不能有意义地缓存动态页面。)http会话是定义的客户端,因为session-ID是一个cookie。 如果客户拒绝存储cookie(例如他对跟踪偏执),那么他不能进行会话。 你可以通过调用httpSession.getID()来获得这个ID。

当然数据库是一个瓶颈,所以你最终会得到两个集群:一个应用服务器集群和一个数据库集群。

据我所知,有状态的消息bean和常规的servlet http会话只存在于没有内置负载平衡的内存中。

顺便说一句。 我不会将电子邮件地址或用户名存储在隐藏字段中,但购物车的内容可能不是敏感数据。

我宁愿远离在http会话中存储用户应用程序状态 ,但这需要思考应用程序如何工作和使用RESTful无状态体系结构的不同方式。 这通常涉及到不支持在客户端不支持MVWW体系结构的浏览器的早期版本的支持。

购物车不是用户应用程序状态,它是一个应用程序状态 ,这意味着它将存储在数据库中并进行管理。 假设可以共享购物车,可以有一个关联表将用户链接到一个或多个购物车。

如果它是无状态的,那么你最大的障碍就是如何为每一个请求认证用户。 BASIC认证是不涉及会话的最简单的方法,FORM-auth无论如何都需要会话。 JASPIC实现(如http headers或OAuth)将能够缓解您在其他地方的身份验证问题,在这种情况下,cookie可以用来管理您的身份验证令牌(如FORM-auth)或http标头,如SiteMinder或客户端证书。

比较昂贵的数据库(如DB2)具有适用于多个数据中心的高可用性和灾难恢复功能。 请注意,这并不意味着对数据库进行负载平衡,因为网络流量会造成很大的影响。

总结

以上是内存溢出为你收集整理的可扩展的http会话pipe理(java,linux)全部内容,希望文章能够帮你解决可扩展的http会话pipe理(java,linux)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞134 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容