每个用户请求向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  将服务程序拷贝到一个磁盘上的目录
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为端口),再启动服务。

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

Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?的更多相关文章

  1. Memcache+Cookie解决分布式系统共享登录状态

    Memcached高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.Memcached能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. Memc ...

  2. Lab: Brute-forcing a stay-logged-in cookie:点击保持登录状态返回的Cookie里面破解账号密码靶场复盘

    靶场内容: 此实验室允许用户在关闭浏览器会话后仍保持登录状态.用于提供此功能的 cookie 容易受到暴力破解. 为了解决实验室问题,暴力破解 Carlos 的 cookie 以访问他的"我 ...

  3. 【wpf WebBrowser 清空网站的Cookie&Session 清空用户登录状态】

    最近做项目遇到了一个说小不小,说大不大的问题,那就是在WebBrowser中清空网站上用户的登陆状态, 一开始心想,那不就清空cookies就行啦,那么简单的事情,百度一下 …… …… 是的,正如你们 ...

  4. session、cookie 记住登录状态的实现

    Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能. Cookie的Domain和Path属性标识 ...

  5. 使用robotframework做接口测试三——保持登录状态

    调用登录接口登录了,其他的接口怎么保持登录状态呢?  首先来看一看,web端或者说客户端是怎么样用cookie/token等保持登录状态的.一般来说,cookie都会在登录接口由服务端返回,而且会是在 ...

  6. JMeter 怎么保存登录状态

    在Recording Controller中添加一个HTTP Cookie Manager Recording Controller右键-->add-->config element--& ...

  7. uni-app 保持登录状态 (Vuex)

    在小程序中,保持登录状态是很常见的需求,今天就把写一写使用uni-app框架的保持登录状态功能是怎样实现的. 一.场景需求 1.场景:初始打开---登陆---关闭,再次打开---(已登录)上次关闭前的 ...

  8. session、cookie与“记住我的登录状态”的功能的实现

    Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能. Cookie的Domain和Path属性标识 ...

  9. Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 Postman 使用方法详解

    Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试   问题引入:做接口测试时,有依赖关系的接口往往不好测试( ...

随机推荐

  1. bzoj 3626 LCA

    这一道题咋一看只觉得是离线,可以求出所有的f(1,i,z), 答案就等于f(1,r,z)-f(1,l-1,z).但是没有具体的做法,但是求LCA的深度和有一个非常巧妙的做法,每加一个点,就把这个点到根 ...

  2. 完美高仿精仿京东商城手机客户端android版源码

    完美高仿精仿京东商城手机客户端android版源码,是从安卓教程网那边转载过来的,这款应用源码非常不错的,也是一个非常优秀的应用源码的,希望能够帮到学习的朋友. _js_op> <igno ...

  3. Eclipse经验总结

    1.在Project Explorer中显示src.resource目录:通过Project->properties->java Build Path->Source设置 2.解决J ...

  4. spring heibernate 调用存储过程

    一:参考网址 http://sunbin123.iteye.com/blog/1007556 二:示例 @Autowired @Qualifier("jdbcTemplate") ...

  5. Stimulsoft Reports报表工具

    关于第三方的报表工具,网上的种类有很多,一些专门做报表工具的公司,还针对不同平台语言做了分别处理.总之功能都很强大,比较流行和使用广泛的貌似还是国外的产品,版本收费和中文资料匮乏,这都是不可避免的问题 ...

  6. Object-C - 类的定义

    http://www.cnblogs.com/zhangweia/archive/2011/11/01/2231549.html 1. 文件分为.h:定义接口,及其属性,方法说明. .m :是实现类. ...

  7. Meta标签中的format-detection属性及含义

    format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置: meta na ...

  8. mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集成开发和断点调试环境配置

    一.环境及软件 1.macbook pro 2.Phpstorm 3.MAMP PRO 4.FireFox 二.环境搭建 1.PhpStorm导入项目 下载PhpStorm并安装,网上随便找个注册码即 ...

  9. (转载)SQLServer存储过程返回值总结

    1. 存储过程没有返回值的情况(即存储过程语句中没有return之类的语句) 用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况 (1)假如通过查询 ...

  10. 对vector等STL标准容器的排序操作

    [+] STL提供的Sort 算法 所有sort算法介绍 sort 中的比较函数 sort 的稳定性 全排序 局部排序 nth_element 指定元素排序 partition 和stable_par ...