Archive for the ‘网络转载’ Category.

KETAMA算法:基于虚节点的一致性哈希算法

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。Memcached client也选择这种算法,解决将key-value均匀分配到众多Memcached server上的问题。它可以取代传统的取模操作,解决了取模操作无法应对增删Memcached Server的问题(增删server会导致同一个key,在get操作时分配不到数据真正存储的server,命中率会急剧下降),详细的介绍在这篇帖 子中http://www.iteye.com/topic/611976(后文指代这篇文章的地方均称为引文)。

[下面以Memcached的分布式问题为讨论点,但将Memcached server抽象为节点(Node)]
引文中描述的一致性Hash算法有个潜在的问题是:
将节点hash后会不均匀地分布在环上,这样大量key在寻找节点时,会存在key命中各个节点的概率差别较大,无法实现有效的负载均衡。
如有三个节点Node1,Node2,Node3,分布在环上时三个节点挨的很近,落在环上的key寻找节点时,大量key顺时针总是分配给Node2,而其它两个节点被找到的概率都会很小。 

这种问题的解决方案可以有:
改善Hash算法,均匀分配各节点到环上;[引文]使用虚拟节点的思想,为每个物理节点(服务器)在圆上分配100~200个点。这样就能抑制分布不均 匀,最大限度地减小服务器增减时的缓存重新分布。用户数据映射在虚拟节点上,就表示用户数据真正存储位置是在该虚拟节点代表的实际物理服务器上。

在查看Spy Memcached client时,发现它采用一种称为Ketama的Hash算法,以虚拟节点的思想,解决Memcached的分布式问题。
Continue reading ‘KETAMA算法:基于虚节点的一致性哈希算法’ »

99%的人都理解错了HTTP中GET与POST的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

当你在面试中被问到这个问题,你的内心充满了自信和喜悦。

Continue reading ‘99%的人都理解错了HTTP中GET与POST的区别’ »

mysqldump备份还原和mysqldump导入导出语句大全详解

mysqldump备份

mysqldump -u用户名 -p密码 -h主机 数据库 a -w “sql条件” –lock-all-tables > 路径

案例:

mysqldump -uroot -p1234 -hlocalhost db1 a -w “id in (select id from b)” –lock-all-tables > c:\aa.txt

mysqldump还原

mysqldump -u用户名 -p密码 -h主机 数据库 < 路径

案例:

mysql -uroot -p1234 db1 < c:\aa.txt

mysqldump按条件导出

mysqldump -u用户名 -p密码 -h主机 数据库 a –where “条件语句” –no-建表> 路径

mysqldump -uroot -p1234 dbname a –where “tag=’88′” –no-create-info> c:\a.sql

mysqldump按导入

mysqldump -u用户名 -p密码 -h主机 数据库 < 路径

案例:

mysql -uroot -p1234 db1 < c:\a.txt

mysqldump导出表

mysqldump -u用户名 -p密码 -h主机 数据库 表

案例:

mysqldump -uroot -p sqlhk9 a –no-data

Continue reading ‘mysqldump备份还原和mysqldump导入导出语句大全详解’ »