初识memcache

1.简介

干什么的?Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加

速动态web应用程序,减轻数据库负载。

起源?
1.Memcache是danga(美国一个社区)的一个项目,最早是LiveJournal(美国一个社交网站

)服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。

发展现状:(mixi、Facebook、LiveJournal)都在用.


2.内存存储方式。

抛弃了常规的malloc和free分配方式(每次都重新分配,导致内存碎片过多,导致系统越来

越慢)。

采用slab allcator的方式(分割成不同大小的chuck组,选择最合适的大小来装数据)。

LRU的方式控制内存利用。可以在memcache启动时禁用LRU。


3.分布式。
都是在客户端实现的。

余数方式(不利于拓展,一旦拓展,命中率大大降低,瞬间所有负载都集中到了数据库上,

就有崩溃的风险)
consistent hashing应运而生。0`2的32次方闭合的圆。拓展的话受影响的为1/n+m.

分布不均匀:使用虚拟节点的思想,为每个物理节点(服务器) 在continuum上分配100~

200个点。这样就能抑制分布不均匀,最大限度地减小服务器增减时的缓存重新分布

4.优点。
a.缓存机制简单,因而效率高。
有时候很多开源项目做的面面俱到,但到最后因为过于注重一些非必要的功能而拖累了性能


b.非常快。因为采用了slab预先分配 chuck,避免了内存碎片。
c.解决了共享内存只能单机应用的局限-即分布式。
d.对cpu要求不高。因此可以在同一台服务器上,与那些对cpu要求高的应用程序组合。

5.缺点。
a.预先分配固定大小的chuck,100bytes装入120bytes的chuck中就造成内存浪费。

6.它的安全性如何做的?
装一个服务端:
默认分配内存是64MB,端口11211,默认过期时间是30day,默认最大并发连接数是1024.c写的,socke通信,守护式进程来存取数据,支持各种语言的客户端。
待续

你可能感兴趣的:(算法,分布式,memcache,简介,存储)