关于Memcached,主要说两点:
1,为什么会出现Memcached。
2,Memcached的定位。
让我们一一来分析。
1,为什么会出现Memcached。
据史料记载(http://en.wikipedia.org/wiki/Memcached),第一代Memcached诞生于公元2003年5月,服务端由Danga Interactive
使用C语言开发,客户端可以使用任何语言来编写,它们之间通过socket通讯。
该软件用于提升LiveJournal.com访问速度。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
那么,在03年,当时的互联网是一个什么状态?当时的互联网技术又是一个怎样的状态?
俺不知道。谁能给点历史?
要想知道为什么要开发或使用Memcached,得从IO密集型说起。
IO密集型是指读写非常频繁,在短时间内呈现高并发的状态,使得性能下降。
IO密集型操作涉及客户端,中间层,服务端,因此可以从这三个点进行缓解:
a,减少客户端的请求。比如像秒杀这样的活动,是一个高并发的场景,可以在前面设一个临界值,超过临界值则给一个返回提示。
b,减少中间层的消耗,提升中间层的性能。比如使用mysql的handlersocket插件,它省去了很多多余的mysql操作,使得其查询性能比memcached快2倍,比mysql快7.5倍。
c,分离服务端的数据。将服务端的数据分离,则可以直接把IO给分离(即读写分离),使得数据库的负载大大降低。
而从memcached的实际效果来看,它显然是分化了IO的读取请求,注意,是读取请求,而不是写。因为每次朝memcached写一次之后,还得朝数据库写一次以保持数据的一致,数据库的写入压力并未减少。
也就是说,memcached缓解的,是数据库的读取压力,这才是为什么要使用memcached的原因。
2,Memcached的定位是什么。
IT行业的本体是数据,而IT系统,不过是数据的载体。
这就好比我们人类社会,有着各自各样的楼房,但这些楼房主要是人居住的容器,人们在不同的建筑之间穿梭,就好比数据在不同的系统中出入一样。
因此考察一个系统的定位,总是以与其关联的数据为依据。
即首先考察该系统中数据的定位,然后才是系统本身的定位。
Memcached是处在传统关系数据库与应用服务之间的一个中间层。
从宏观层面看,它就像数据长河中的一个分支,与数据库这种大型“数据湖泊”相比,它就是一个小型湖泊。
由于其处于数据库层之上,因此其稳定性要低一些,数据的变动性更大,数据的生命周期也就更短了。
若排除Memcached与其它系统的关系,直接观察它,可以发现它只是一个数据容器。
数据按hash的方式放在这个容器里面,而且对数据的类型、大小、容量、生命周期都有所限定。
Memcached数据特点:
体积:Memcached的内存结构采用Slab Allocator机制,据说能避免内存碎片,而这也导致其只能存储小型数据(最大不能超过1M)。这个限制可以改。
周期:数据最多只能存活30天。当然这个限制也能改。
容量:由于其LRU也是建立在这个Slab Allocator机制上,导致了其容量过大时会有一个问题:命中率问题。即如果要存储达千万级的数据量,那么LRU时就可能出现问题,导致后面的数据覆盖前面已经添加的数据。当然可以通过某些调整基本解决这个问题。
分布:理论上是可以无限扩展。但Facebook在2008年已经有超过800台memcached服务器,他们已经发现了memcached存在的一些问题,他们称为Multiget Hole,即增加memcached服务器并不能增加处理容量。这个据说也有办法解决。
故可以得出Memcached中数据的一个定位(相对于数据库而言):小型短命的活跃对象。
因此Memcached系统的定位也可以设定:小型大容量数据的分布式缓存系统。
分享到:
相关推荐
2. 打开命令提示符,定位到包含bat脚本的目录,例如:`cd C:\path\to\memcached1.5.6` 3. 运行`start-memcached.bat`启动`memcached`服务。 4. 当需要关闭服务时,运行`stop-memcached.bat`。 **bat脚本启动的优点...
同时,也有第三方监控工具(如Munin、Cacti)用于监控其性能指标,帮助定位问题。 10. **适用场景**:memcached适用于高并发、读取密集型的应用,例如动态网站、API服务、实时数据分析等。 通过以上内容,我们了解...
3. **哈希表**:memcached使用哈希表来快速定位键值对。哈希表由多个槽组成,每个槽关联一个链表,链表中存储着键相同的item。 4. **LRU(Least Recently Used)策略**:当内存空间不足时,memcached会使用LRU策略...
8. **故障排查**:当Memcached出现问题时,如连接断开、数据丢失等,监控数据可以帮助快速定位问题。 9. **持续集成/持续部署(CI/CD)**:在现代DevOps实践中,监控是CI/CD流程的一部分,确保Memcached在每次更新后...
5. **分布式存储**:数据分布在多个服务器上,通过键值对的方式实现数据的定位和分发,每个实例独立管理自己的数据。 **安装与使用** 安装Memcached通常涉及以下几个步骤: 1. 下载源码包,解压。 2. 配置编译环境...
Memcached基于键值对存储模型,即通过键来定位数据,值则为要存储的数据。它采用内存中的哈希表来存储数据,使得查找和插入操作非常快速。当内存不足时,Memcached会使用LRU(Least Recently Used)策略进行数据淘汰...
- **键值对存储**:Memcached采用键值对的存储方式,用户通过键来定位和访问数据,简洁高效。 - **简单协议**:Memcached使用基于文本的简单协议,易于理解和实现,支持多种编程语言的客户端库。 2. **工作原理**...
7. **故障排查**:列出常见问题及解决方法,帮助开发者快速定位和修复问题。 8. **安全性**:讨论如何确保Memcached的安全,防止未授权访问和数据泄露。 通过以上内容,开发者可以更好地理解和使用封装后的...
- 了解一致性哈希算法如何用于分发和定位键到不同的服务器节点。 - 理解在分布式环境中的故障转移和数据复制策略。 通过分析并实践这个压缩包中的Memcached实例程序,开发者能够深入理解如何在实际项目中使用...
2. 键值存储:memcached使用哈希表存储键值对,通过哈希函数快速定位数据。同时,使用LRU(Least Recently Used)策略管理内存,当内存满时,最近最少使用的数据会被淘汰。 3. 数据过期策略:memcached支持设置键的...
8. **故障排查**:如果遇到问题,可以查看日志文件获取错误信息,或者通过`stats`命令获取服务器状态,进行故障定位。 总的来说,`memcached-1.4.5`为Windows用户提供了一个高效、便捷的缓存解决方案。在理解和掌握...
为了运行Memcached服务,我们需要打开命令行界面,并定位到该可执行文件所在的目录。 启动Memcached服务的命令通常为: ``` memcached.exe -d start -m 64 -p 11211 -l 127.0.0.1 ``` 这里,参数 `-d start` 表示以...
7. **日志与故障排查**:通过`memadmin`的日志功能,管理员可以跟踪`memcached`的运行日志,辅助定位和解决问题。 8. **性能优化**:根据`memadmin`提供的数据,用户可以进行性能优化,如调整缓存大小、优化缓存...
它采用hash表存储数据,通过哈希算法快速定位数据,提供快速访问。 3. **分布式特性**:memcached通过一致性哈希策略实现数据的分布式存储,可以在多台服务器之间分发负载,确保高可用性和可扩展性。 4. **缓存...
7. **故障排查**:提供故障诊断工具,帮助定位和解决系统问题。 8. **多语言支持**:为了满足不同用户的语言需求,可能会有多种语言的界面供选择。 **安装与使用** “memadmin”的安装过程应该简单明了,可能只...