基于缓存的分布式架构
2015-08-04 21:38:27 0 举报
基于缓存的分布式架构
作者其他创作
大纲/内容
Cache集群
Cache Server
Web Server
传统的应用服务器,如Tomcat、Jboss等,其自身所实现的Session管理大部分都是基于单机的。对于大型分布式网站来说,支撑其业务的远远不止一台服务器,而是一个分布式集群,请求在不同服务器之间跳转。那么,如何保持服务器之间的session同步呢?传统网站一般通过将一部分数据存储在cookie中,来规避分布式环境下的session的操作。这样做弊端很多,一方面cookie的安全性一直广为诟病,另一方面cookie存储数据大小是有限制的。随着移动互联网的发展,很多情况下还得兼顾移动端的session需求,使得采用cookie来进行session同步的方式的弊端更为凸显。分布式session正是在这种情况下应运而生的。 对于系统可靠性要求较高的用户,可以将session持久化到DB中,这样可以保证宕机时会话不易丢失,但缺点也是显而易见的,系统整体的吞吐将会受到很大影响。另一种解决方案便是将session统一存储在缓冲集群上,如memcache,这样可以保证较高的读、写性能,这一点对于并发量大的系统来说非常重要;并且从安全性考虑,session毕竟是有有效期的,使用缓存存储,也便于利用缓存的失效机制。使用缓存的缺点是,一旦缓存重启,里面保存的会话也就丢失了,需要用户重新建立会话。如下图所示,前端用户请求经过随机分发之后,可能会命中后端任意的Web Server,并且Web Server也可能会因为各种不确定的原因宕机。在这种情况下,session是很难在集群间同步的,而通过将session以sessionID作为key,保存到后端的缓存集群中,使得不管请求如何分配,即便是Web Server宕机,也不会影响其他Web Server通过sessionID从Cache Server中获得session,这样既实现了集群间的session同步,又提高了Web Server的容错性。
请求分发
应用1
Nginx
用户请求
负载均衡设备
Cache Server
0 条评论
下一页