session的server共享服务器--------(memcached分布式,msm-sticky模式)

本文介绍了NoSQL数据库中的Memcached内存分配机制,特别是Slab Allocator。详细阐述了Memcached集群的概念及msm(memcached session manager)在Tomcat中的应用,用于session共享服务器。讨论了sticky模式和non-sticky模式的工作原理,以及如何配置和测试这两种模式。文章结尾提到了使用Redis作为session存储的配置,并总结了各种session管理方法的优缺点,强调了session持久化的策略。
摘要由CSDN通过智能技术生成

基础知识

NoSQL

NoSQL是对非SQL、非传统关系型数据库的统称。
NoSQL一词诞生于1998年,2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。
随着互联网时代的到来,数据爆发式增长,数据库技术发展日新月异,要适应新的业务需求。
随着移动互联网、物联网的到来,大数据的技术中NoSQL也同样重要。
https://db-engines.com/en/ranking
分类

  1. Key-value Store
    redis(都支持)、memcached(只支持序列化,只能做cache)
  2. Document Store文档
    mongodb、CouchDB
  3. Column Store列存数据库,Column-Oriented DB列数据库
    HBase、Cassandra
  4. Graph DB图数据库
    Neo4j
  5. Time Series 时序数据库
    InfluxDB

Memcached

Memcached只支持能序列化的数据类型不支持持久化,基于Key-Value的内存缓存系统

内存分配机制memcached

应用程序运行需要使用内存存储数据,但对于一个缓存系统来说,申请内存、释放内存将十分频繁,非常容易导致
大量内存碎片,最后导致无连续可用内存可用。
Memcached采用了Slab Allocator机制来分配、管理内存。

  1. Page:分配给Slab的内存空间,默认为1MB,分配后就得到一个Slab。Slab分配之后内存按照固定字节大小等分成chunk。
  2. Chunk:用于缓存记录kv值的内存空间。Memcached会根据数据大小选择存到哪一个chunk中,假设chunk
    有128bytes、64bytes,数据只有100bytes存储在128bytes中,存在些浪费。Chunk最大就是Page的大小,即一个Page中就一个Chunk
  3. Slab Class:Slab按照大小分组,就组成不同的Slab Class

在这里插入图片描述

如果有100bytes要存,那么Memcached会选择上图中Slab Class 2存储,因为它是120bytes的Chunk。
Slab之间的差异可以使用Growth Factor控制,默认1.25

懒过期Lazy Expiration

memcached不会监视数据是否过期,而是在取数据时才看是否过期,过期的把数据有效期限标识为0,并不清除该数据。以后可以覆盖该位置存储其它数据。

LRU 最近最少使用

当内存不足时,memcached会使用LRU(Least Recently Used)机制来查找可用空间,分配给新纪录使用。

集群

Memcached集群,称为基于客户端的分布式集群
Memcached集群内部并不互相通信,一切都需要客户端连接到Memcached服务器后自行组织这些节点,并决定数据存储的节点。

安装

将上一步的内容更清空

yum install memcached
rpm -ql memcached

cat /usr/lib/systemd/system/memcached.service
[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""


前台显示看看效果
memcached -u memcached -p 11211 -f 1.25 -vv
systemctl start memcached

修改memcached运行参数,可以使用下面的选项修改/etc/sysconfig/memcached文件

-u username memcached运行的用户身份,必须普通用户
-p 绑定的端口,默认11211
-m num 最大内存,单位MB,默认64MB
-c 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值