tomcat的session的机制不会增加服务器负载么?

可能是我 发布于 2016/10/12 11:42
阅读 358
收藏 0

先说一下自己的理解:

浏览器第一次访问服务器的时候,服务器会向客户端cookie里写入一个sessionid,并且在服务器端创建了一个session对应这个sessionid,cookie默认是会话级别的,浏览器关闭之后cookie自动销毁,但是服务器中的seesion会在配置的超时时间之后才销毁

那如果亿级的访问,就算没有登录仅仅是打开浏览器然后关闭,这个时候服务器的负载不会很大么?

还有就是现在如果想要实现自动登录,最好的实现方式是怎样的呢

加载中
0
公孙二狗
公孙二狗
亿级的访问你会用一台 tomcat 吗?session 会放在 server 的内存里吗?
0
非著名程序员Bla
非著名程序员Bla
如果如你这样描述,你的想法和解决方法一开始就是有错误的
0
打雷要下雨LEO
打雷要下雨LEO
一般我们用多个域名,www可以配置成无cookie的静态页面,图片等静态资源也是无cookie,动态有cookie再想办法解决。集群里面session放kv数据库读取很快。
打雷要下雨LEO
打雷要下雨LEO
这样哪个ip对应哪台服务器必须是固定的,不然获取不到session,session放到集群里就方便了。
打雷要下雨LEO
打雷要下雨LEO
回复 @可能是我 : 不是替代,session有很多实现方式,默认是放在服务器临时目录里的文件存储,拿是不能跨服务器的。
可能是我
可能是我
意思是说非需要登录的页面做成静态页面,这样服务器就不会出现没必要的session.如果有需要用到session的地方,用缓存或者数据库来替代session对么?
0
可能是我
可能是我
@红薯 开源中国是怎么做的呢 可以透露一下么
0
eechen
eechen
Session数据放Redis之类的分布式缓存系统不就好了么?为什么一定要依赖Tomcat提供的Session机制.
比如可以用MySQL内存表实现会话存储.
CREATE TABLE sessions (
    user_id int(10) unsigned NOT NULL,
    session text NOT NULL,
    md5 char(32) NOT NULL,
    PRIMARY KEY (user_id)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
其中:
user_id存储的是用户ID,作为主键.
session存储的是用户的会话数组经过serialize或json_encode后的字符串.
md5存储的是session字段的MD5值,用于实现Check And Set版本号乐观锁:
--读取会话
SELECT session, md5 --写入会话时需要用到这里查出来的md5,就是下面的$last_md5
FROM sessions WHERE user_id = $user_id
--写入会话
UPDATE sessions
SET session = $str, md5 = md5($str)
WHERE user_id = $user_id
AND md5 = $last_md5 --检查MD5,确保session字段没有被修改过
可能是我
可能是我
session里面存的是 用户信息的字符串 md5存的是用户信息字符串的md5值 写入会话的时候用md5确保用户信息没有没修改过 是这样的么
eechen
eechen
回复 @可能是我 : 数组要转成字符串方便存到数据库里,md5字段存的就是这个字符串的md5值,用于每次更新时检查版本,如果能看懂我给的SQL就知道是什么意思了.
可能是我
可能是我
session存储的是用户的会话数组经过serialize或json_encode后的字符串. md5存储的是session字段的MD5值,用于实现Check And Set版本号乐观锁: 这两句话我都没太看明白,您能具体解释一下么
eechen
eechen
回复 @可能是我 : 就是PHP里一个普通的数组(哈希表),在Java里应该叫做HashMap吧.
可能是我
可能是我
这里说的用户会话数组是指什么呢?
返回顶部
顶部