bboss会话共享培训文档2015中国·长沙信息化创造价值2一、框架概述二、架构设计三、会话存储三、应用集成四、应用部署五、场景演示六、参考资料大纲信息化创造价值3会话共享概述大纲作用:为应用提供统一会话管理功能,避免集群部署场景下负载切换session丢失问题;跨域跨应用共享会话并实现SSO功能;解决了会话共享五大技术难题:session数据序列化问题,sessionsticking问题,跨域跨应用session共享问题,跨容器(tomcat,jetty,weblogic)共享session问题,sso单点登入单点登出一致性问题。存储:采用mongodb存储会话数据,采用增量模式修改会话属性,简单高效序列化:采用bboss序列化机制以xml格式序列化会话数据,可读性好,易亍监控,提供序列化插件,扩展性强规范:遵循servlet2/3规范,可无缝不现有应用系统集成,无需或者少量修改应用代码。Session监听器需遵循bboss会话共享规范,需将原来容器session监听器迁移到bboss会话共享实现。如修改session中对象数据,必须调用session.setAttribute方法将对象数据更新到mongodb中,以便将更新后的数据共享给其他应用。兼容性:跨容器,兼容业界主流的应用服务器(tomcat,weblogic,webspere,jetty),支持容器会话管理和bboss会话管理两种机制,可根据实际需要自由切换应用会话管理机制。约束:无约束,无需sessionsticking,客户端请求可以平均分派给各集群节点,支持lvs,haproxy,ngix4,7层负载。概述架构应用部署应用集成场景演示会话存储信息化创造价值4会话共享概述大纲安全性:客户端基亍cookie机制存储sessionid,通过设置cookiehttponly属性阻止XSS窃叏sessionid,通过设置secure属性并结合https阻止传输过程中sessionid被窃叏监管:session信息统计查询,应用在线用户数统计查询,应用会话管理功能(包括删除会话、查看会话属性数据),每个应用只能管理本应用的会话数据,监控中心可以管理所有的会话数据高阶:提供两种会话共享模式模式一集群间会话共享模式,实现同一个应用集群各节点之间的会话共享,通过这种模式可以避免因故障导致访问请求切换服务器时session丢失问题,同时也可以让用户请求无差别地平均分派到各个服务器上,达到真正的负载均衡。模式二跨域跨应用模式,实现同一域名戒者同一根域(丌同的子域名)下丌同应用之间的会话共享,实现他们之间的单点登录功能(SSO)第一种模式相对简单;第二种模式在配置方面比模式一稍微复杂一些,通过模式二可以灵活定义哪些会话数据需要在应用之间进行共享,哪些数据作为应用私有会话数据丌对其他应用共享(这个在实际情况下徆有用),默认情况下共享应用间的所有会话数据。实际的应用环境中,模式一和模式二经常组合一起使用,每个应用本身采用集群部署模式(开启集群间会话共享模式),同时利用跨域跨应用模式实现丌同应用间的单点登录功能(前提是这些应用必须使用同一个域名或者都拥有相同的根域名)。概述架构应用部署应用集成场景演示会话存储信息化创造价值5会话共享概述大纲高阶:两种会话共享模式一起使用示意图(前提:应用必须使用同一个域名或者都拥有相同的根域名,根域名不同的话可以使用bboss统一令牌系统实现跨根域系统之间的SSO)概述架构应用部署应用集成场景演示会话存储PDPNode1PDPNode2PDPNode3G4Node1G4Node2G4Node3TestNode1TestNode2TestNode3://g4.bboss.com.cn/g4studio应用内部开启集群session共享模式,各节点间session数据完全共享应用内部开启集群session共享模式,各节点间session数据完全共享应用内部开启集群session共享模式,各节点间session数据完全共享应用A应用B应用CSSO跨应用跨域session共享模式,通过存储在session共享区的用户会话信息实现SSO,私有区数据只对应用自己可见,可有效避免应用间会话数据冲突问题信息化创造价值6会话共享-逻辑架构大纲Session管理Session统计监控Session存储服务Session监控管理服务MongoDBSession序列化/反序列化遵循Servlet2/3规范APISession事件管理容器会话管理HttpSessionrequest.getSession()request.getSession(create)失效Session扫描销毁进程Session过滤器概述架构应用部署应用集成场景演示会话存储MongoDBMongoDBMongoDBMongoDBClusterSessionMonitorApplicationApplicationApplicationApplication信息化创造价值7会话共享-session存储结构大纲Session基本信息区Sessionid创建时间最近访问时间客户端ip服务端ip有效期有效状态位Session创建urlSession最后访问地址Session最后访问主机IPSecurehttponly.……...Session属性数据区Session对象在mongodb中的存储结构示意图:单应用集群节点之间共享会话存储结构keyvaluekeyvaluekeyvaluekeyvaluekeyvaluekeyvalue一个session对应mongodb中session表的一条记录,每个应用都有自己的session表session表记录数据分为两部分:基本信息区(固化)和属性数据区(可动态扩张属性,属性个数丌限,mongodb能够很好地支持这个特性,因为mongodb的表结构是动态的,每条记录包含的字段都可以丌一样)AppSession表0…*访问时间会劢态变化Session失效条件:最近访问时间+有效期当前时间戒者有效状态位==false如果有效期小于等于0则一直有效,除非系统手工删除目前httpOnly属性支持servlet3.0,tomcat7及以上版本都支持属性以key/value方式保存每个属性单独维护(读取/添加/删除),IO效率高请求级缓存session属性数据,访问速度快如果程序修改了value对象的属性和状态,需要调用session.setAttribute重新保存这个对象到session中,否则无法共享这个最新对象setAttribute/getAttribute概述架构应用部署应用集成场景演示会话存储信息化创造价值8会话共享-session存储结构大纲Session基本信息区Sessionid创建时间最近访问时间客户端ip服务端ip有效期有效状态位Session创建urlSession最后访问地址Session最后访问主机IPSecurehttponly……共享Session数据区Session对象在mongodb中的存储结构示意图:跨域丌同应用之间共享会话存储结构keyvaluekeyvaluekeyvaluekeyvaluekeyvalue一个session对应mongodb中session表的一条记录,跨域各应用公用一个session表,表名为appcode+_sessions(appcode在sessionconf.xml文件中指定)session记录分为三部分:基本信息区(固化)、共享属性数据区和私有属性区(可动态扩张共享属性和私有属性,属性个数丌限,mongodb能够很好地支持这个特性,因为mongodb的表结构是动态的,每条记录包含的字段都可以丌一样)AppSession表0…*访问时间会劢态变化Session失效条件:最近访问时间+有效期当前时间戒者有效状态位==false如果有效期小于等于0则一直有效,除非系统手工删除目前httpOnly属性支持servlet3.0,tomcat7及以上版本都支持属性以key/value方式保存每个属性单独维护(读取/添加/删除),IO效率高请求级缓存session属性数据,访问速度快如果程序修改了value对象的属性和状态,需要调用session.setAttribute重新保存这个对象到session中,否则无法共享这个最新对象共享数据写到共享区,应用私有数据写到私有区setAttributegetAttribute概述架构应用部署应用集成场景演示会话存储私有Session数据区标准sessionAPI……信息化创造价值9会话共享-Mongodb主从复制架构大纲Mongodb主从复制架构(读写分离):概述架构应用部署应用集成场景演示会话存储ClientApplicationDriverPrimarySecondarySecondaryArbiter(Voteonly)WritesHeartbeatReadsReadsHeartbeatHeartbeatReads信息化创造价值10会话共享-Mongodb主从复制时延大纲概述架构应用部署应用集成场景演示会话存储Mongodb-读写分离场景下,主从复制存在时延问题,为了解决这个问题,在配置客户驱劢程序的writeConcern参数时,需要采用REPLICA_ACKNOWLEDGED(n,2000)模式,其中n代表mongodb的数据节点数目(最多为所有mongodb数据节点数,可以小亍数据节点数目),2000表示主节点数据写操作阻塞等待从节点数据复制完成的最长时间,单位为毫秒,这里是2000毫秒(2秒),如果超过2000毫秒,直接返回继续执行后续的程序操作。一般情况下复制过程等待丌会超过2000毫秒,复制一完成立马返回写操作主程序继续执行后续程序。信息化创造价值11会话共享-Mongodb客户端配置大纲概述架构应用部署应用集成场景演示会话存储Mongodb-单节点配置示例-resources/mongodb.xmlproperties!--增加mongodb数据源配置和client工厂类--propertyname=defaultfactory-class=org.frameworkset.nosql.mongodb.MongoDBinit-method=initdestroy-method=closefactory-method=getMongoClientpropertyname=serverAddresses192.168.1.100:27016/propertypropertyname=option/propertypropertyname=writeConcernvalue=JOURNAL_SAFE/propertyname=readPreferencevalue=//property/properties信息化创造价值12会话共享-Mongodb客户端配置大纲概述架构应用部署应用集成场景演示会话存储Mongodb-集群复制节点配置示例-resources/mongodb.xmlproperties!--增加mongodb数据源配置和client工厂类--propertyname=defaultfactory-class=org.frameworkset.nosql.mongodb.MongoDBinit-method=initdestroy-method=closefactory-method=getMongoClientpropertyname=serverAddresses192.168.134:27017192.168.15.134:27018192.168.15.38:27017192.168.15.39:2701