Http本身是没有状态的,因为我们需要,才有了cookie和session,在不同的应用里面我们会有不同的解决方案,因为很多节点集群,因此基本上不会考虑应用服务器自己的方案。
1.简单的cookie方案
将请求状态保存在cookie里的,严格限制个数、大小,每一个attribute对应一个cookie, 然后,加密解密啥的,这个阶段一个CookieUtil就搞定,应用里面直接使用这个util读写cookie,在简单但是访问量很大需要集群的应用里面比较合适
2.稍微复杂一点
自己实现一套MySession机制,在request和response上包装一下,将多个attribute包装起来,统一序列化,写cookie,这使用应用只需要关心MySession,不知道有cookie,稍微进步一点了,可以在MySession里控制cookie的数量和大小了
3.完善
自己实现HttpSession机制,session里的数据可以根据规则存放入cookie或者集中的session server,session server可以是数据库、内存cache或其他的keyvalue引擎,应用只知道有HttpSession
几个方案,一个比一个完善,一个比一个复杂,根据具体情况选用吧。
另外,如果节点不多的话(一般个位数的),用应用服务器本身的机制其实也不错的。
实际上,以上的这些方案我们都用过,在发展的不同阶段,有不同的解决方案,现在几乎每种方案都还有应用在使用,这也是具体情况具体分析。
在这几个发展时期,都有应用遗留下来,怎么维护?应用之间需要协同,需要同时理解这些cookie啊,session啊啥的,怎么新增内容,修改内容?我们得为每个解决方案提供adapter,太累了! |