从单机到集群会话的管理之集群模式一
来源:互联网 发布:中国最帅的程序员 编辑:程序博客网 时间:2024/06/07 05:19
为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群;另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升。
如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各个节点无需互相通信,只需要将各个请求均匀分配到集群节点即可。但基本所有web应用都会使用会话机制,所以做web应用集群时整个难点在于会话数据的同步,当然你可以通过一些策略规避复杂的额数据同步操作,例如前面说到的把会话信息保存在分布式缓存或数据库中统一集中管理,如下图,每个tomcat实例只需去写入或读取数据库即可,避免了tomcat集群之间的通信。但这种方式也有不足,要额外引入数据库或缓存服务,同时也要保证它们的高可用性,增加了机器和维护成本。
鉴于以上存在的不足,提供另一种解决思路就是tomcat集群节点自身完成各自的数据同步,不管访问到哪个节点都能找到对应的会话,如下图,客户端第一次访问生成会话,tomcat自身会将会话信息同步到其他节点上,而且是每次请求完成都会同步此次请求过程中对session的所有操作,这样一来下一次请求到集群中任意节点都能找到响应的会话信息,且能保证信息的及时性。细看很容易发现集群的节点之间的会话是两两互相复制的,一旦集群节点数量及访问量大起来,将导致大量的会话信息需要互相复制同步,很容易导致网络阻塞,而且这些同步操作很可能会成为整体性能的瓶颈,根据经验,此种方案在实际生产上推荐的集群节点个数为3-6个,无法组建更大的集群,而且冗余了大量的数据,利用率不高。
全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下节将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群。
喜欢java的同学可以加个好友:
- 从单机到集群会话的管理之单机模式
- 从单机到集群会话的管理之集群模式一
- 从单机到集群会话的管理之集群模式二(更大的集群)
- Redis集群环境的搭建(从单机模拟到真正的集群搭建)
- Kafka单机、集群模式安装详解(一)
- Kafka单机、集群模式安装详解(一)
- 架构设计之Spring-Session的分布式集群会话管理
- Zookeeper实战之单机集群模式
- Zookeeper实战之单机集群模式
- 单机到集群的WEB架构演变
- 单机切换到集群遇到的问题
- PHP的WEB系统从单机到分布式集群的演进
- Hadoop单机模式集群搭建
- zookeeper单机伪集群模式
- 集群的会话状态
- RabbitMQ从入门到精通----集群模式
- Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理
- 架构设计之Spring-Session分布式集群会话管理
- Using GPUImage to Recreate iOS 7 Glass Effect
- weblogic内存溢出
- 岭回归和lasso回归的r语言代码
- Lua中的_G 和_ENV
- 二叉树的遍历(递归、非递归)
- 从单机到集群会话的管理之集群模式一
- 十分钟搞清字符集和字符编码
- [Java并发包学习一]Executor和ExecutorService
- opencv实现简单SIFT代码
- mp4 box信息实例分析 1
- 数据安全处理
- java基础学习笔记(1)
- 广告sdk窃取用户隐私:你家的App被下架了吗?
- Oracle数据库操作相关命令