Http会话与微服务无状态的遐想

我们知道,会话是一种机制,用于跟踪客户状态的普遍解决方案。在网站上一系列的动作可构成一个会话,比如,登陆查看邮件系统,写信发信,最后退出,整个过程。

对于浏览器访问服务器来说,Servlet容器会创建HttpSession会话。当然,这前提是需要浏览器支持会话,可以在jsp中控制(而不是在浏览器中设置来控制,即不受用户控制,对用户是透明的)。会话不会一直存在,也会销毁。具体如下:

《Tomcat与JavaWeb开发技术详解》

会话过期具有的意义:

1、长时间会话不活动,及时销毁,可以释放无效HttpSession对象占用的内存空间;

2、防止未授权的用户访问会话,当用户长时间不操作,会话结束,就要重新登陆(防止偷窥)。

注意: 即使web应用被终止,会话不会被销毁,而是被Tomcat持久化到永久性存储设备中,当web重启后,Tomcat会重新加载会话。(这些都不用开发者关心,Tomcat和Servlet容器替开发者做了太多的事情,甚至开发者都不知道,我以前就是这样,,太强大有木有)。

——————

对于JSP来说,Servlet容器提供了隐含的HttpSession对象,jsp可以直接通过固定引用变量来引用HttpSession对象,对√,就是直接用。你不用管它怎么创建的,甚至哪里来的,直接用!(当然,这些都是Servlet容器悄悄的帮你做了)

会话范围与HttpSession对象的生命周期对应,因此web应用如果能够共享一个HttpSession对象,也就能共享会话范围内的共享数据。

对于xxxServlet,可以从HttpServletRequest对象中获取HttpSession对象。

——————

session和cookie??

cookie是一种客户端和服务器端传输数据的一种手段,用于标识同一个session(比如JSESSIONID,它是cookie的一个key,用来标识一次session,cookie的value就是sessionid)。坦白的说,cookie什么都不是,只是一种名称,叫其他什么都无所谓,只是这种名称已经变成标准了。

延伸:

我们知道,HTTP是无状态的协议,而现在流行的微服务架构,都在讲无状态,上面的session和cookie的目的是为了达到有状态的会话,为了记录是哪个用户的哪个浏览器所执行的这一组操作。这不是矛盾吗??笔者现在的理解是,确实矛盾。通过前面的了解,如果浏览器首次访问时,服务器端会响应写一个cookie到浏览器,让后在这一个浏览器进程内,浏览器后面发的请求都会自动地(注意是自动的)带上服务器端生成的cookie。然而,使用过REST API编程或者postman客户端的童鞋都有经历,那就是这些都不能自动地保存服务器端生成的cookie,并且也不会再次访问时自动地带上。(客户端是什么样的永远不会影响服务器端的,服务器端该做什么该做什么,这里唯一变化的就是客户端变了,不再自动地的维持session了。导致这样一个问题,即使你连续的请求相隔时间再短,服务器端总会认为你是一个崭新的客户端,所以微服务就必须要做成无状态的,每一次请求都是独立的,因为它从本质上就不能够支持有状态,就不能够维持会话,你的所有的请求都必须毫不相干,起码不能有任何的会话的机制在里面)。

原来,浏览器也悄悄地帮你做了很多事情(都是HTTP的规约)。。。而这些事情像postman这样的rest客户端却没有帮你做,你自己编程访问rest api也没有做。

为什么?是不能做吗,肯定不是咯。我想可能有三点,一是增加开发的难度,加大了系统的复杂度;二是系统需要维护会话的开销,对于灵活小巧的微服务来讲,显然是相悖的;三是考虑到微服务应用所在的宿主机down掉了,不能在另一台宿主机迅速拉起就能服务,因为要为数据的一致性考虑,增加一致性解决方案。

以上均属于笔者臆想,不对之处,欢迎指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容