从单机到集群会话的管理之集群模式一

为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群;另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升。

如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各个节点无需互相通信,只需要将各个请求均匀分配到集群节点即可。但基本所有web应用都会使用会话机制,所以做web应用集群时整个难点在于会话数据的同步,当然你可以通过一些策略规避复杂的额数据同步操作,例如前面说到的把会话信息保存在分布式缓存或数据库中统一集中管理,如下图,每个tomcat实例只需去写入或读取数据库即可,避免了tomcat集群之间的通信。但这种方式也有不足,要额外引入数据库或缓存服务,同时也要保证它们的高可用性,增加了机器和维护成本。

鉴于以上存在的不足,提供另一种解决思路就是tomcat集群节点自身完成各自的数据同步,不管访问到哪个节点都能找到对应的会话,如下图,客户端第一次访问生成会话,tomcat自身会将会话信息同步到其他节点上,而且是每次请求完成都会同步此次请求过程中对session的所有操作,这样一来下一次请求到集群中任意节点都能找到响应的会话信息,且能保证信息的及时性。细看很容易发现集群的节点之间的会话是两两互相复制的,一旦集群节点数量及访问量大起来,将导致大量的会话信息需要互相复制同步,很容易导致网络阻塞,而且这些同步操作很可能会成为整体性能的瓶颈,根据经验,此种方案在实际生产上推荐的集群节点个数为3-6个,无法组建更大的集群,而且冗余了大量的数据,利用率不高。

全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下节将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群。

喜欢java的同学可以加个好友:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 13:42:57

从单机到集群会话的管理之集群模式一的相关文章

从单机到集群会话的管理之集群模式二(更大的集群)

<从单机到集群会话的管理之集群模式一>中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群. 下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体.前面各种模式的实现都无需负

Greenplum源码编译安装(单机及集群模式)完整版

公司有个项目需要安装greenplum数据库,让我这个gp小白很是受伤,在网上各种搜,结果找到的都是TMD坑货帖子,但是经过4日苦战,总算是把greenplum的安装弄了个明白,单机及集群模式都部署成功,下面由我给大家分享一下整个部署过程,并小分析一下安装过程中遇到的各种坑. 首先,说一下我的环境,CentOS 7.2.1511,64位操作系统,全新安装,没有更新过 [[email protected] ~]# cat /etc/redhat-release CentOS Linux relea

基于tomcat集群会话保持

基于tomcat集群会话保持 环境: 一台nginx:ip 172.17.13.136 一台tomcat1:ip 172.17.13.134 一台tomcat2:ip 172.17.13.135 一.tomcat上操作: 1.下载jdk并安装 lftp 172.17.0.1 cd pub/Sources/7.x86_64/jdk mget jdk-8u144-linux-x64.rpm rpm -ivh jdk-8u144-linux-x64.rpm 注意:安装完成后,都要配置JAVA_HOME

SpringBoot初始教程之Redis集中式Session管理

1.介绍 有关Session的管理方式这里就不再进行讨论,目前无非就是三种单机Session(基于单机内存,无法部署多台机器).基于Cookie(安全性差).基于全局的统一Session管理(redis.mysql)等多种方式 针对于像淘宝这种超大型网站来说Session如何管理的就无从得知了.但是可以通过yy的方式想象一下,这种大型架构都需要部署多台认证Server,但是一般来说集中式Session无法存储那么多的Session 那么就可以通过UID分片的形式来存储,不同UID分布在不同的Se

微服务管理平台nacos虚拟ip负载均衡集群模式搭建

一.Nacos简介 Nacos是用于微服务管理的平台,其核心功能是服务注册与发现.服务配置管理. Nacos作为服务注册发现组件,可以替换Spring Cloud应用中传统的服务注册于发现组件,如:Eureka.consul等,支持服务的健康检查. Nacos作为服务配置中心,可以替换Spring Cloud Config. 当然Nacos作为一个微服务管理平台,除了面向spring Cloud,还支持很多其他的微服务基础设施,如:docker.dubbo.kubernetes等.除了核心的服务

Hadoop集群管理--保证集群平稳地运行

本篇介绍为了保证Hadoop集群平稳地运行,需要深入掌握的知识,以及一些管理监控的手段,日常维护的工作. HDFS 永久性数据结构 对于管理员来说,深入了解namenode,辅助namecode和datanode等HDFS组件如何在磁盘上组织永久性数据非常重要. 洞悉各文件的用法有助于进行故障诊断和故障检出. namenode的目录结构 namenode被格式化后,将在${dfs.namenode.name.dir}/current 目录下,产生如下的目录结构:VERSION.edits.fsi

HDFS集中式缓存管理(Centralized Cache Management)

Hadoop从2.3.0版本开始支持HDFS缓存机制,HDFS允许用户将一部分目录或文件缓存在HDFS当中,NameNode会通知拥有对应块的DataNodes将其缓存在DataNode的内存当中 集中式缓存管理有着许多显著的优势: 防止那些被频繁使用的数据从内存中清除 因为DataNode的缓存由NameNode来管理,applications在做任务安排时可以查询这个缓存的列表,使用一个被缓存的块副本能够提高读性能 当块被DataNode缓存之后,客户端可以使用一个新的.高效的.zero-c

Oracle 11g 管理Oracle 集群

管理Oracle 集群 命令行工具 –crsctl管理集群相关的操作: -启动和关闭Oracle集群 -启用和禁用Oracle集群后台进程 -注册集群资源 -srvctl 管理Oracle 资源相关操作 -启动和关闭数据库实例和服务(dbdao.com oracle 11g OCM培训) 在Oracle Grid安装的home路径下的命令行工具crsctl和srvctl用来管理Oracle集群.使用crsctl可以监控和管理任何集群节点的集群组件和资源.srvctl工具提供了类似的功能,来监控和

Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群

1. Cloudera介绍 Hadoop是一个开源项目,Cloudera对Hadoop进行了商业化,简化了安装过程,并对hadoop做了一些封装. 根据使用的需要,Hadoop集群要安装很多的组件,一个一个安装配置起来比较麻烦,还要考虑HA,监控等. 使用Cloudera可以很简单的部署集群,安装需要的组件,并且可以监控和管理集群. CDH是Cloudera公司的发行版,包含Hadoop,Spark,Hive,Hbase和一些工具等. Cloudera有两个版本: Cloudera Expres