11session 分布式处理参考, 不错
第一种: 粘性 session
粘性 Session 是指将用户锁定到某一个服务器上, 比如上面说的例子, 用户第一次请求时, 负载均衡器将用户的请求转发到了 A 服务器上, 如果负载均衡器设置了粘性 Session 的话, 那么用户以后的每次请求都会转发到 A 服务器上, 相当于把用户和 A 服务器粘到了一块, 这就是粘性 Session 机制
第二种: 服务器 session 复制
原理: 任何一个服务器上的 session 发生改变(增删改), 该节点会把这个 session 的所有内容序列化, 然后广播给所有其它节点, 不管其他服务器需不需要 session, 以此来保证 Session 同步
第三种: session 共享机制
使用分布式缓存方案比如 memcachedRedis, 但是要求 Memcached 或 Redis 必须是集群
原理: 不同的 tomcat 指定访问不同的主 memcached 多个 Memcached 之间信息是同步的, 能主从备份和高可用用户访问时首先在 tomcat 中创建 session, 然后将 session 复制一份放到它对应的 memcahed 上
第四种: session 持久化到数据库
原理: 就不用多说了吧, 拿出一个数据库, 专门用来存储 session 信息保证 session 的持久化 优点: 服务器出现问题, session 不会丢失 缺点: 如果网站的访问量很大, 把 session 存储到数据库中, 会对数据库造成很大压力, 还需要增加额外的开销维护数据库
第五种 terracotta 实现 session 复制
原理: 就不用多说了吧, 拿出一个数据库, 专门用来存储 session 信息保证 session 的持久化 优点: 服务器出现问题, session 不会丢失 缺点: 如果网站的访问量很大, 把 session 存储到数据库中, 会对数据库造成很大压力, 还需要增加额外的开销维护数据库
12JDBC 流程
注意: 在此之前应该先把所有用到的对象设为 null
(1)向 DriverManager 类注册驱动数据库驱动程序,
Class.forName( "com.somejdbcvendor.TheirJdbcDriver" );
(2)调用 DriverManager.getConnection 方法, 通过 JDBC URL, 用户名, 密码取得数据库连接的 Connection 对象
- Connection conn = DriverManager.getConnection(
- "jdbc:somejdbcvendor:other data needed by some jdbc vendor", //URL
- "myLogin", // 用户名
- "myPassword" ); // 密码
(3)获取 Connection 后, 便可以通过 createStatement 创建 Statement 用以执行 SQL 语句下面是一个插入 (INSERT) 的例子:
- Statement stmt = conn.createStatement();
- stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( my name )" );
(4)有时候会得到查询结果, 比如 select, 得到查询结果, 查询 (SELECT) 的结果存放于结果集 (ResultSet) 中
ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" );
(5)关闭数据库语句, 关闭数据库连接
- rs.close();
- stmt.close();
13MVC 设计思想
每当用户在 web 浏览器中点击链接或提交表单的时候, 请求就开始工作了请求是一个十分繁忙的家伙, 从离开浏览器开始到获取响应返回, 它会经历很多站, 在每站都会留下一些信息, 同时也会带上一些信息
来源: http://www.bubuko.com/infodetail-2511874.html