tomcat的session会话保持

1.Memcached****简介


Memcached 只支持能序列化的数据类型,不支持持久化,基于 Key-Value 的内存缓存系统。
memcached虽然没有像redis 所具备的数据持久化功能,比如 RDB 和 AOF 都没有,但是可以通过做集群同步的方式, 让各memcached 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcached 的数据是一样的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢失,当其他memcached 重新加入到集群的时候 , 可以自动从有数据的 memcached 当中自动获取数据并提供服务。
Memcached 借助了操作系统的 libevent 工具做高效的读写。 libevent 是个程序库,它将 Linux 的 epoll、 BSD类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached 使用这个 libevent 库,因此能在 Linux 、 BSD 、 Solaris 等操作系统上发挥其高性能Memcached 支持最大的内存存储对象为 1M ,超过 1M 的数据可以使用客户端压缩或拆分报包放到key中,比较大的数据在进行读取的时候需要消耗的时间比较长, memcached 最适合保存用户的session实现 session 共享Memcached存储数据时 , Memcached 会去申请 1MB 的内存 , 把该块内存称为一个 slab, 也称为一个 page Memcached 支持多种开发语言,
包括: JAVA,C,Python,PHP,C#,Ruby,Perl 等

1.memcached****的安装与启动
复制代码
[root@tomcat ~]# yum install memcached -y
[root@tomcat ~]# vim /etc/sysconfig/memcached

修改里面的参数:(60主机同理)

复制代码
[root@tomcat ~]# systemctl enable --now memcached
[root@tomcat ~]# netstat -antlupe | grep memcache
2.memcached****操作命令

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:

复制代码
set
add
replace
get
delete
#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>

参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes

2.session****共享服务器


msm ( memcached session manager )提供将 Tomcat 的 session 保持到 memcached 可以实现高可用。

1.配置所需参数

(可在官网 https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration 查照找)

复制代码
kryo-3.0.3.jar
asm-5.2.jar
objenesis-2.6.jar
reflectasm-1.11.9.jar
minlog-1.3.1.jar
kryo-serializers-0.45.jar
msm-kryo-serializer-2.3.2.jar
memcached-session-manager-tc9-2.3.2.jar
spymemcached-2.12.3.jar
memcached-session-manager-2.3.2.jar

root@tomcat-1 \~\]# vim /usr/local/tomcat/conf/context.xml(60主机同理) ![](https://i-blog.csdnimg.cn/direct/d7190f1fd89246749a622100eb2eda11.png) 保存退出,重新启动 修改 nginx 配置: \[root@Nginx \~\]# vim /usr/local/nginx/conf.d/vhosts.conf ![](https://i-blog.csdnimg.cn/direct/d8485f3eb94146e1b1694ff42c31bc8a.png) **最后测试:** ![](https://i-blog.csdnimg.cn/direct/c6b357932f5644d0b0009cad73f8e170.png) 停止60 的服务 ![](https://i-blog.csdnimg.cn/direct/41422489958f46c9b184574cce4444e5.png) ![](https://i-blog.csdnimg.cn/direct/bf36872254124ca18e8c1f7346b61851.png) 地址主机切换成50 ,并且数据还会保存并未更新。

相关推荐
北城以北12310 小时前
生成树协议STP详解
网络协议
望获linux10 小时前
【实时Linux实战系列】实时系统的可观测性:Prometheus 与 Grafana 集成
大数据·linux·服务器·开发语言·网络·操作系统
红尘客栈211 小时前
K8s-kubeadmin 1.28安装
java·网络·kubernetes
hello_25011 小时前
动手模拟k8s网络-vxlan模式
网络·容器·kubernetes
杰瑞学AI11 小时前
我的全栈学习之旅:FastAPI (持续更新!!!)
后端·python·websocket·学习·http·restful·fastapi
我梦之612 小时前
libevent输出缓存区的数据
服务器·网络·c++·缓存
帅帅梓13 小时前
docker网络
网络·docker·php
white-persist13 小时前
SQL 注入详解:从原理到实战
前端·网络·数据库·sql·安全·web安全·原型模式
wanhengidc14 小时前
云手机的挂机功能涉及到哪些内容
运维·服务器·网络·游戏·智能手机
AORO202514 小时前
防爆手机与普通手机的区别!
网络·5g·安全·智能手机·电脑·信息与通信