多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 会话共享和集群-优化-持久化 [TOC] ## 一、session共享案例 ### 1. 方法 1. 方法1: 通过程序实现,web01只需要往memcahce写session,web02从memcahce读session,当作普通数据读写(更具有通用性) 2. 方法2: 通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached中 ### 2. 方法1实现 1) 修改说明 在php.ini中,将如下内容进行修改 ```sh ;session.save_handler = files ;session.save_path = "/tmp" 修改为 session.save_handler = memcache session.save_path = "/tcp://172.16.1.21:11211" ``` 2) 命令实现修改 ```sh sed -i 's#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://172.16.1.21:11211"' /etc/php.ini ``` ### 3. 优缺点 1. 优点: 读写速度比普通files快很多 可以解决多个服务器公钥session的难题 2. 缺点: session保存在内存中,持久化欠缺 一般都是单台,如果部署多台,数据无法同步 3. 改进: 使用redis、ttserver等持久化方案 使用cookies ## 二、memcaced集群和优化 ### 1. 优化策略 1. 提高memcached访问命中率是优化最关键指标 例如数据库新增数据时,同步写入或复制一份到memcached中,并有限读取memcached 2. 提高内存利用率,减少内存浪费 * 用-n设置初始值,-f设置增长因子,让chunk的大小尽量接近业务数据的大小 * 较少slab的浪费,设定slab的大小为chunk的整数倍 * 采用一致性哈希分布式缓存集群架构 ### 2. 分布式缓存集群设计思想 * 每台缓存服务器的内容不一样,所有缓存服务器内容加起来接近整个数据库容量 * 在客户端或负载均衡器上使用hash算法,让同一个数据的访问都分配到同一个服务器 * 普通hash算法可能会因为节点失效引起雪崩效应 * 一致性哈希算法可以将缓存节点宕机的影响降到最低 ## 三、持久化软件 1. memcacheDB 支持持久化,兼容memcached协议,支持主从复制、负载均衡、高可用, 读写分离 2. ttserver 支持持久化,3千万数据内,速度极快,兼容memcached协议,支持主从模式,支持双击互为主从,且主从均可读写 3. redis 前面已说过,未来的主流