设为首页 收藏本站
查看: 1780|回复: 0

[经验分享] Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-2 11:12:29 | 显示全部楼层 |阅读模式
  
  每个用户请求向IIS发送一个请求,但IIS服务器的请求数有限,cpu支持的线程数有限,如果一秒钟向这台服务器发送10000次,那么则一般就会有问题,考虑集群,
  请求数据分流,几台服务器共同对应一个公共的IP向外部公开。
  如三台服务器
  一个用户登录到服务器,可以把用户的登录信息,session记录(三种方式寄存:1 InProc:进程存储 2 状态服务器方式存储,3 sessio数据据库中)
  状态服务器方式存储,分布式缓存:memcached redies 主要流行两种,所以一般不选用第三种方案。
  
  Why

  
l     高并发访问数据库的痛楚:死锁!
l     磁盘IO之痛:本机:AspNet:HttpRuntime.Cache(这个东档是microsoft做的不错折缓存)
l     多客户端共享缓存
l     Net + Memory  >> IO   (一般速度是这样)
l    读写性能完美  Redies:Mm,  1s:读取可以1w次。 写:10w
l    超简单集群搭建 Cluster
l    开源 Open Source
l    没有提供主从赋值功能,也没提供容灾等功能,所以所有的代码基本都只是考虑性能最佳。
l    学习成本非常低,入门非常容易
l    丰富的成功的案例


原理:
  
l   Socket 服务器端
l   数据:键值对存储
l   内存处理的算法:
·  本质就是一个大的哈希表。key最大长度是255个字符。
·  内存模型:Memcache预先将可支配的内存空间进行分区(Slab),每个分区里再分成多个块(Chunk)最大1MB,但同一个分区里:块的长度(bytes)是固定的。
·  插入数据:查找适合自己长度的块,然后插入,会有内存浪费。
·  LRU,闲置>过期  >最少访问   
·  惰性删除:它并没有提供监控数据过期的机制,而是惰性的,当查询到某个key数据时,如果过期那么直接抛弃。
l   集群搭建原理:
·  Memcache服务器端并没有提供集群功能,但是通过客户端的驱动程序实现了集群配置。
·  客户端实现集群的原理:首先客户端配置多台集群机器的ip和端口的列表。然后客户端驱动程序在写入之前,首先对key做哈希处理得到哈希值后对总的机器的个数进行取余然后就选择余数对应的机器。


memcached的安装

l  下载Memcache:http://code.jellycan.com/Memcache/
l  将服务程序拷贝到一个磁盘上的目录
l  安装服务:cmd→Memcached.exe -d install 打开服务监控窗口可以查看服务是否启动。
l  启动服务:cmd→Memcached.exe -d start(restart重启,stop关闭服务)
l  检查服务是否启动:连接到Memcache控制台:telnet ServerIP 11211  输入命令:stats检查当前服务状态。
l  卸载服务:Memcached.exe -d uninstall
  
l  遇到问题:win8下安装服务。无法启动此程序,因为计算机中丢失 MSVCR71.dll。尝试重新安装该程序以解决此问题。下载dll地址:http://www.dll-files.com/dllindex/dll-files.shtml?msvcr71

向里面加一条数据
add k1 0 0 5   (说明,k1 key   第一个0占位,第二个是时间,无线缓存,第三个是长度)


说明如下:        将Memcache.exe安装为Windows服务:Memcache.exe -d install
  启动Memcache服务:Memcache.exe -d start
  启动Memcache服务(windows命令):net start "Memcache Server"
  停止Memcache服务(windows命令):net stop "Memcache Server"
  连接到Memcache控制台:telnet ServerIP 11211
  打印当前Memcache服务器状态:stats
  打印当前Memcache服务器Items(记录)的统计信息:stats items
  打印当前Memcache服务器Slab(分区)及Chunk(块)的统计信息:stats slabs
  打印指定Slab中的KEY列表(可用于遍历items,但效率较低,慎用!):stats cachedump SlabId Limit_num。显示结果:ITEM KeyName [ValueByteLength b; LastAccessTime s]。值得注意的是,经过测试确认:那个LastAccessTime并不是记录到期时间,而是最后一次的get时间,并且get之后,也不会自动延长expiry(到期时间)。
  添加新记录:add KeyName 0 0 ValueByteLength [回车] ValueContent
  删除记录 : delete KeyName
  添加或更新记录 : set KeyName 0 0 ValueByteLength [回车] ValueContent
  更新记录 : replace KeyName 0 0 ValueByteLength [回车] ValueContent
  参考:http://www.cnblogs.com/lost-1987/articles/3069460.html
  http://wenku.baidu.com/view/e30db586ec3a87c24028c401.html
  也可以图形化监控 Memcached 的运行状态
  http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/
  在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一个 ImagePath 的字符串项,正好是服务的执行路径的字符串,双击该串,在后面加入 -l 192.168.1.135 -m 45 -p 12345 (访问ip为:192.168.1.135 使用45M内存,12345为端口),再启动服务。




客户端来配置服务器的集群,而不是在服务器端来操作。只要在前端配置服务器的地址就可以了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108661-1-1.html 上篇帖子: memcached 安装使用 下篇帖子: 博客园memcached专题手机电子书
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表