`
lvwenwen
  • 浏览: 955444 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

Memcache分布式部署方案

阅读更多

文章链接:http://hi.baidu.com/qiaoyuetian/item/6780126ebb34f20da1cf0f9c

http://hi.baidu.com/qiaoyuetian/item/e7948397e37ccf30336eeb9a

基础环境
其实基于PHP扩展的Memcache客户端实际上早已经实现,而且非常稳定。先解释一些名词,Memcache是danga.com的一个开源项目,可 以类比于MySQL这样的服务,而PHP扩展的Memcache实际上是连接Memcache的方式。

首先,进行Memcache被安装具体可查看:
Linux下的Memcache安装:http://www.ccvita.com/257.html
Windows下的Memcache安装:http://www.ccvita.com /258.html;
其次,进行PHP扩展的安装,官方地址是http://pecl.php.net/package/memcache
最后,启动Memcache服务,比如这样

/usr/local/bin/memcached -d -p 11213 -u root -m 10 -c 1024 -t 8 -P /tmp/memcached.pid
/usr/local/bin/memcached -d -p 11214 -u root -m 10 -c 1024 -t 8 -P /tmp/memcached.pid
/usr/local/bin/memcached -d -p 11215 -u root -m 10 -c 1024 -t 8 -P /tmp/memcached.pid

启动三个只使用10M内存以方便测试。

 

分布式部署
PHP的PECL扩展中的memcache实际上在2.0.0的版本中就已经实现多服务器支持,现在都已经2.2.5了。请看如下代码

$memcache = new Memcache;
$memcache->addServer('localhost', 11213);
$memcache->addServer('localhost', 11214);
$memcache->addServer('localhost', 11215);
$memStats = $memcache->getExtendedStats();
print_r($memStats);

通过上例就已经实现Memcache的分布式部署,是不是非常简单。

分布式系统的良性运行
在Memcache的实际使用中,遇到的最严重的问题,就是在增减服务器的时候,会导致大范围的缓存丢失,从而可能会引导数据库的性能瓶颈,为了避免出现 这种情况,请先看Consistent hashing算法,中文的介绍可以参考这里, 通过存取时选定服务器算法的改变,来实现。

修改PHP的Memcache扩展memcache.c的源代码中的

"memcache.hash_strategy" = standard

"memcache.hash_strategy" = consistent

重新编译,这时候就是使用Consistent hashing算法来寻找服务器存取数据了。

有效测试数据表明,使用Consistent hashing可以极大的改善增删Memcache时缓存大范围丢失的情况。
NonConsistentHash: 92% of lookups changed after adding a target to the existing 10
NonConsistentHash: 90% of lookups changed after removing 1 of 10 targets
ConsistentHash: 6% of lookups changed after adding a target to the existing 10
ConsistentHash: 9% of lookups changed after removing 1 of 10 targets

分享到:
评论

相关推荐

    PHP扩展Memcache分布式部署方案

    【PHP扩展Memcache分布式部署方案】是针对使用PHP与Memcache进行高效缓存管理的一种技术实践。Memcache是由danga.com开发的开源项目,它提供了一个高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web...

    memcache分布式缓存的使用

    **分布式缓存与Memcache简介** 分布式缓存是一种在分布式系统中存储数据的机制,它通过将数据分散...通过合理的分布式部署和策略调整,Memcache能在大规模数据访问中发挥重要作用,降低数据库负载,提高用户响应速度。

    memcache缓存分布式集群

    7. **部署与配置**:搭建Memcache分布式集群需要配置Magent,包括设置节点列表、选择合适的哈希策略、调整负载均衡参数等。这涉及到网络配置、端口映射以及监控和故障排查等方面的知识。 8. **性能优化**:优化包括...

    memcache分布式的对象缓存系统

    在分布式环境中,Memcache可以部署在多台服务器上,通过一致性哈希算法实现数据的分布式存储和负载均衡,进一步提升系统的可扩展性和容错性。此外,Memcache还支持LRU(Least Recently Used)策略,当内存不足时,会...

    Windows下的Memcache安装.doc

    ### Windows下的Memcache安装知识点详解 ...- [Memcache分布式部署方案](http://www.ccvita.com/395.html) 以上步骤和信息旨在帮助开发者顺利地在Windows环境中安装和配置Memcache,以便于后续的应用开发和性能优化。

    window-php7.1-memcache-dll

    5. **分布式缓存**:当单个Memcache服务器不足以应对高并发或大数据量时,可以采用分布式部署,通过多个Memcache实例分担负载,确保系统的稳定性和可扩展性。 压缩包内的"php-7.1.x_memcache.dll"是核心文件,它是...

    asp memcache 解决缓存问题

    6. **优化性能**:为了最大化性能,可以考虑分布式部署 Memcached,即将多个 Memcached 实例分布在多台服务器上,通过一致性哈希算法分发数据,提高并发处理能力。 7. **监控与维护**:定期检查 Memcache 的性能和...

    5.1 Memcache部署和使用-带书签-201809301

    【5.1 Memcache部署和使用】 Memcache是一款开源、高性能、分布式的内存对象缓存系统,主要用于减轻数据库压力,提升动态Web应用的速度和可扩展性...在实际操作中,需要根据业务需求选择合适的部署方案和客户端配置。

    java版memcache缓存管理与开发

    对于大型网站而言,单一Memcache服务器的内存容量有限,因此采用分布式部署成为必然选择。可以通过对键(Key)进行有规律的设计,实现数据的有效分布。例如,在以用户为中心的网站中,可以按照用户ID的前缀来决定...

    memcache监控工具

    - **云服务**:如AWS CloudWatch、Azure Monitor等,为云上部署的Memcache提供集成的监控解决方案。 3. **具体工具介绍** - **mcmon**:一个简单的命令行工具,提供实时查看Memcached服务器的状态,如命中率、...

    php_memcache.dll 5.4.12

    Memcache作为一款流行的分布式内存对象缓存系统,常被用于存储和检索数据,以减少数据库访问压力。本文将围绕标题中的“php_memcache.dll 5.4.12”这一特定版本,深入探讨其在PHP环境中的应用及安装方法。 首先,`...

    Memcache 1.2.6 for Windows

    **Memcache 1.2.6 for ...总的来说,Memcache 1.2.6 for Windows为Windows环境提供了一个强大而可靠的缓存解决方案,通过合理使用和优化,可以显著提升Web应用的性能。无论是个人博客还是大型企业应用,都能从中受益。

    服务器缓存服务memcache

    - **分布式**:Memcache支持多客户端并发访问,可以部署在多台服务器上,实现分布式缓存,有效缓解单个服务器的压力。 - **简单易用**:Memcache使用TCP协议,API简洁,支持多种编程语言,如PHP、Python、Java、...

    memcache-2.2.6.tgz

    Memcache 是一个高性能的分布式内存对象缓存系统,它广泛应用于..."memcache-2.2.6.tgz"压缩包提供了该版本的源代码,允许开发者自定义编译和部署。理解Memcache的工作原理和使用方法,对于优化Web应用性能至关重要。

    PHP实现多服务器session共享之memcache共享.rar

    PHP的memcache扩展提供了一个解决方案,它是一个高性能的分布式内存对象缓存系统,常被用来作为session存储后端。通过配置php.ini文件,可以将session的存储机制从默认的文件系统改为memcache服务器集群。 具体实现...

    大规模分布式应用

    综上所述,面对大规模分布式应用,我们需要综合运用各种技术手段,如缓存、静态化、数据库优化、分布式部署、服务分离等,以应对海量数据和高并发挑战。同时,理解业务需求和用户行为,选择合适的技术栈和策略,才能...

    Memcache集群环境下缓存解决方案.docx

    在高可用和负载均衡的场景下,部署Memcache集群是必要的。这通常涉及多个节点的分布式存储,通过一致性哈希算法来分发数据,确保在节点间的添加或移除时,数据分布的影响最小。此外,还可以利用主从复制、多级缓存等...

    集群环境下memcache解决session共享

    总结来说,"集群环境下memcache解决session共享"是一个针对分布式系统中session管理的有效解决方案。通过使用memcache作为session的中央存储,可以在Tomcat8集群中实现用户状态的无缝切换,提升应用的稳定性和用户...

    memcache使用

    Memcache是一款高性能的分布式内存对象缓存系统,主要用于减轻数据库的负载,通过将数据存储在内存中来快速响应读取请求。本文主要针对Windows环境下的Memcache安装与配置进行详述。 **一、安装Memcache** 在...

Global site tag (gtag.js) - Google Analytics