互联网大负载系统开发中的session管理
2016-02-28 12:57
531 查看
互联网的系统需要考虑的方面特别多,淘宝的架构师给了我们很多的参照:http://m.csdn.net/article/2013-08-27/2816716。而在我们的程序的实现上,分布式的session管理机制成为了高可扩展性、高效集群的关键。本小短文讲述了分布式session管理机制的实现方式,为日常架构的开发实现提供一点参考。
一、为什么tomcat能够知道某个请求属于哪个用户
浏览器的诞生之时,浏览器面向的基本上都是超文本协议(html),超文本的内容基本上都是没有会话状态的静态文本。所以,页面的功能也就停留在了页面展示。1994年,网景公司前雇员Lou Moutulli将magic cookie的概念引入到web,才赋予了web记忆的功能。从此,通过cookie的机制,客户端与服务器端的会话诞生。
那么,同时访问服务器的客户端那么多,为什么服务器端能够知道当前的这个客户端是哪个已经登陆的用户呢?原理其实很简单。浏览器在每次发送http请求的时候,都会把一个叫jsessionid的cookie带上。服务器端就通过这个jsessionid在服务器的所有已经登陆的用户sessionMap中找到对应的session,由此,我们就可以从session中得到用户名、用户信息等等等等。
二、分布式sesssion管理机制
所谓的分布式session管理机制,就是利用memcached等缓存工具,把session的内容存储至memcached中。当客户端请求时,从memcached中调取session的内容。每次访问时更新memcached的时间戳,以保持session。这就实现了session的保持。而,这就要求我们能够自己实现tomcat的session机制。实际情况并不复杂,只需实现以下几点内容:1、在客户端自定义一个sid,存储会话的uuid,2、在memcached中以这个sid存储用户的session内容,包括用户名、用户信息等等;3、每次访问web服务器时,session内容都从memcached中获取。4、对于现阶段没有修改过的memcached,每次get后再put一次,以更新memcached中的时间戳。通过这种方式实现的系统,所有的session状态都存储于memcached分布式系统中,对于任意一个tomcat的删除或者重启都不会影响用户的正常使用。因此,我们的系统就可以完全具备了高可扩展性。
仅此提供一点互联网大负载系统实现的参考。
北京师范大学 计算机系 张人杰
2016.02.28
一、为什么tomcat能够知道某个请求属于哪个用户
浏览器的诞生之时,浏览器面向的基本上都是超文本协议(html),超文本的内容基本上都是没有会话状态的静态文本。所以,页面的功能也就停留在了页面展示。1994年,网景公司前雇员Lou Moutulli将magic cookie的概念引入到web,才赋予了web记忆的功能。从此,通过cookie的机制,客户端与服务器端的会话诞生。
那么,同时访问服务器的客户端那么多,为什么服务器端能够知道当前的这个客户端是哪个已经登陆的用户呢?原理其实很简单。浏览器在每次发送http请求的时候,都会把一个叫jsessionid的cookie带上。服务器端就通过这个jsessionid在服务器的所有已经登陆的用户sessionMap中找到对应的session,由此,我们就可以从session中得到用户名、用户信息等等等等。
二、分布式sesssion管理机制
所谓的分布式session管理机制,就是利用memcached等缓存工具,把session的内容存储至memcached中。当客户端请求时,从memcached中调取session的内容。每次访问时更新memcached的时间戳,以保持session。这就实现了session的保持。而,这就要求我们能够自己实现tomcat的session机制。实际情况并不复杂,只需实现以下几点内容:1、在客户端自定义一个sid,存储会话的uuid,2、在memcached中以这个sid存储用户的session内容,包括用户名、用户信息等等;3、每次访问web服务器时,session内容都从memcached中获取。4、对于现阶段没有修改过的memcached,每次get后再put一次,以更新memcached中的时间戳。通过这种方式实现的系统,所有的session状态都存储于memcached分布式系统中,对于任意一个tomcat的删除或者重启都不会影响用户的正常使用。因此,我们的系统就可以完全具备了高可扩展性。
仅此提供一点互联网大负载系统实现的参考。
北京师范大学 计算机系 张人杰
2016.02.28
相关文章推荐
- 移动互联网时代来临
- 互联网正处于网状发展,正向面方面发展(互联网+XXX=向无限接近面的发展)
- 关于移动互联网产品的指标分析初探
- 程序猿创业猜想《第一期》
- 去年才获千万投资的妈妈味道外卖平台倒闭了
- 移动互联网实时视频通讯之视频采集
- 实现_VS调试,可IP访问 支持互联网
- 第三方舆情收集与质量闭环建设
- 现在企业互联网产品的架构思考
- 互联网协议入门——提高篇
- 互联网协议——基础篇
- 登录模块在互联网中的发展阶段
- 大数据-互联网新的制高点
- 互联网科普知识【野狗】
- 互联网应用高级架构师
- 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- 互联网下的测试模式流程
- 广州互联网产品助理/专员职位调查报告
- 【一些事晚报】广州互联网产职位调查报告
- 联想杨元庆:互联网不包治百病 概念被夸大