分类 开发 下的文章

php-memcache扩展分析(三)一致性哈希分布实现

搬运自之前留在oschina上的文章

首先明确:

Memcache::addServer()增加一个服务器到连接池中。通过Memcache::addServer()
打开的连接将会在脚本执行结束后自动关闭,也可以使用Memcache::close()进行手动关闭。
您也可以使用memcache_add_server()来添加服务器。
当使用这个方法的时候(与Memcache::connect()和Memcache::pconnect()相反)
网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。

所以在看到服务器节点在圆环上的分布情况,需要先add一个缓存。

阅读全文 >>


php-memcache扩展分析(二) 一致性哈希初阶

搬运自之前留在oschina上的文章

memcached不能算是分布式缓存系统,因为每个缓存节点之间是相互不可感知的,要实现分布式缓存需要借助客户端实现,而实现分布式缓存的关键在于katama算法。

###一致性哈希
一致性哈希,即katama算法。其中几个关键点是:

  1. 虚节点
  2. 0 ~ 2^32-1 的圆环
  3. 顺时针查找服务器
  4. hash(key)超过2^32-1 则缓存在第一台服务器

阅读全文 >>


php-memcache扩展分析(一)

把之前在oschina上的博客搬运过来

version 0.1 发布
version 0.2 更新了关于二进制的描述,测试了下二进制支持,貌似扩展有bug,待验证。

什么是memcached

通常来说,我所指的是memcached服务端程序
memcached是一套缓存系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。

注意:memcached不能算是分布式缓存系统,因为每个缓存节点之间是相互不可感知的,要实现分布式缓存需要借助客户端实现,而实现分布式缓存的关键在于katama算法。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。

目前暂时略过memcached服务端的问题,主要来谈下php关于memcached服务器的扩展相关问题(即客户端)。

阅读全文 >>


PHP扩展开发基础(一)

0x01 关于PHP扩展开发

PHP之所以那么成功,个人认为很重要的一个原因就是它拥有大量可用扩展。无论你有什么需求,想要实现什么功能,基本上都能在PHP的发行包中找。包括加密、数据库、图形图像、XML、压缩解压等。

PHP的扩展可以在pecl.php.net/package/ 或者 github.com

学习PHP扩展开发之前需要以下准备工作。

找个开发扩展的理由
掌握C语言开发
熟悉Linux下开发
看完本系列文章

阅读全文 >>