07 2011 档案

摘要:传统MySQL+ Memcached架构遇到的问题实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。Memcached与MySQL数据库数据一致性问题。Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。跨机房cache同步问题。众多NoSQL百花齐放,如何选择最近几年,业界不断涌现出很多各种各样的NoSQL产品 阅读全文
posted @ 2011-07-25 16:13 inThink 阅读(601) 评论(0) 推荐(0) 编辑
摘要:所谓BigPipe,指的是Facebook开发的用来改善客户端响应速度的技术。本质上讲,其实它并不是新事物,原理上等同于Yahoo在Best Practices for Speeding Up Your Web Site里提出的Flush the Buffer Early,不过BigPipe的实现更灵活,所以有必要了解一二。我们平常浏览网页时的体验通常是串行的:浏览器发起请求,服务器收到后渲染页面,在此期间,浏览器除了等待别无选择,演示代码如下:<?phpsleep(1);$header = 'header';sleep(1);$content = 'conten 阅读全文
posted @ 2011-07-21 09:41 inThink 阅读(619) 评论(1) 推荐(0) 编辑
摘要:As we observed before, configuring APC with low memory can be a drag on performance, causinghigh executing times.We saw this recently for a client with a large web site on a dedicated server that approached 2bits.com for performance tuning.They initially had eAccelerator running on Red Hat, but when 阅读全文
posted @ 2011-07-20 18:51 inThink 阅读(222) 评论(0) 推荐(0) 编辑
摘要:UPDATE: Oracle officially releasedmemcached daemon pluginthat talks with InnoDB. I'm glad to see that NoSQL+MySQL has become an official solution. It's still preview release but will be very promising. Let's try it to make it better! Most of high scale web applications use MySQL + memcac 阅读全文
posted @ 2011-07-20 18:47 inThink 阅读(391) 评论(0) 推荐(0) 编辑
摘要:本文讨论了Mysql和memcached的联合应用,未来的趋势已经逐渐的明了,两者的联合可以使Mysql更加强壮。差不多在一年前,写过一篇文章介绍将MySQL数据映射到Memcached,当时MySQL和Memcached Functions for MySQL都还不够成熟,时过一年,Memcached Functions for MySQL升级到了0.8版本,而MySQL也发布了GA版本,加上很多朋友反应前一篇文章中的实现他们因种种原因没能成功,于是便有了这篇文章,就当是上一篇文章的升级版本吧。测试环境在Linux下进行,版本系统为CentOS5.以下为相关软件,包括其版本和下载地址:mys 阅读全文
posted @ 2011-07-20 18:14 inThink 阅读(789) 评论(0) 推荐(0) 编辑
摘要:本文讨论了实现Mysql索引的算法和原理,适合新手,与大家共享。 不敢破坏作者有模有样的格式,保留了全部的内容。 在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,很多东西,如果你愿意稍稍往深处挖一点,那么扑面而来的一定是各种数据结构和算法知识。例如几乎每个程序员都要打交道的数据库,如果仅仅是用来存个数据、建建表、建建索引、做做增删改查,那么也许觉得数据结构和这东西没什么关系。不过要是哪天心血来潮,想知道的多一点,想研究一下如何优化数据库,那么一定避免不了研究索引的原理,如果想要真正明白索引是怎么工作的,如何合理的使用索引以优化数据库,那么就免不了纠结于一堆数据结构与算法之间了。所以,如果说“程序的核心基础 = 数据结构 + 算法”我是十分赞同的,而一个想成为高手的程序员,一定会去学习程序的核心基础。 阅读全文
posted @ 2011-07-20 17:05 inThink 阅读(255) 评论(0) 推荐(0) 编辑
摘要:本文来自Mysql社区对Mysql和Memcached联合使用的讨论,揭示了下一版本Mysql的发展方向,与大家共享。 The ever increasing performance demands of web-based services has generated significant interest in providing NoSQL access methods to MySQL - enabling users to maintain all of the advantages of their existing relational database infrastructure, while providing blazing fast performance for simple queries, using an API to complement regular SQL access to their data. 阅读全文
posted @ 2011-07-20 12:07 inThink 阅读(610) 评论(1) 推荐(0) 编辑
摘要:本文讨论了Memcached的内存分配机制,这里给出一些自己的见解: Memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存,属于预分配方式。我们来看看Slab Allocator的原理。 下面是Memcached文档中的slab allocator的目标: “the primary goal of the slabs subsystem in memcached was to eliminate memory fragmentation issues totally by using fixed-size memory chunks coming from a few predetermined size classes.” 也就是说,Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块, 以完全解决内存碎片问题。 由于使用的是预分配方式,Memcached不会释放已分配的内存,而是重复使用已分配的内存,这就造成了下文所说的数据丢失,命中下降的问题。 阅读全文
posted @ 2011-07-20 10:39 inThink 阅读(572) 评论(0) 推荐(0) 编辑
摘要:本文讨论了使用Memcached时,到底要缓存什么的问题,值得深入讨论,与大家共享。   最近公司一直在招人,我作为主考官之一 。经常会提问的一个问题,就是让用户介绍自己在缓存方面的经验和心得。绝大多数的面试者只能说ASP.net的页面缓存和局部缓存,稍稍有点经验的,会提到企业库的缓存,只有很少的人会知道Memcached(一个分布式的缓存)。而对于缓存的一些基本思想,却没有一个人能说出来。   现在的技术人员,很多时候,不管三七二十一,把一个个实体丢到缓存中,然后在用的时候,就从缓存中去找这个实体。而不会考虑缓存的其他方面因素。所以他们在提到缓存时,想到的才只能是一个个的缓存实现的方法,而不是缓存的思想。   那么,肯定就有人问,蝈蝈俊,那你理解的缓存思想是如何的呢?下面我就一一来说出我理解的缓存。 阅读全文
posted @ 2011-07-20 10:15 inThink 阅读(717) 评论(0) 推荐(0) 编辑
摘要:本文讨论了Memcached客户端分布式算法的测试情况,与大家共享。 阅读全文
posted @ 2011-07-20 10:04 inThink 阅读(901) 评论(0) 推荐(0) 编辑
摘要:本文从计算机结构的角度讨论了算法的设计与优化,与大家共享。 算法设计,我们一般都从理论上去考虑一个算法,即怎么做才能使得时空复杂度最优。但是在实际情况下把一个算法完美的实现是一件不容易的事情。所以搞理论的 人千万不要把实现算法看成很轻松的事情,因为你的算法可能根本在实际中没有一个有效的实现方法,而且即使能够很容易的实现,可是由于实现的人不了解计算机 的结构而使得算法运行起来并不是令人满意。 阅读全文
posted @ 2011-07-20 09:56 inThink 阅读(239) 评论(0) 推荐(0) 编辑
摘要:如何提高缓存的命中率?这个问题要从缓存的种类开始说起。我们先从计算机底层缓存结构开始,然后论述应用层的缓存,最后讨论客户端的缓存。 阅读全文
posted @ 2011-07-20 09:38 inThink 阅读(837) 评论(1) 推荐(0) 编辑
摘要:最近看到张宴前辈的一篇文章,行文逻辑非常好,我自己也试着实现了一下文中作者讨论的逻辑,与大家共享原文。    最近遇到一个问题,Linux下的PHP命令行程序作为守护进程,需要从队列文件中读一行数据,通过TCP协议发送给外地的接收服务器,再读下一行数据,再发送。当本地与外地的网络状况不好时,有时候发送一条数据所耗费的时间就较长,累积起来容易造成队列堵塞和延迟。 阅读全文
posted @ 2011-07-20 09:11 inThink 阅读(514) 评论(0) 推荐(0) 编辑
摘要:在博客园安个家,有自己的博客了,记录些技术和生活点滴,与众网友共同学习,共同进步。 阅读全文
posted @ 2011-07-20 09:05 inThink 阅读(81) 评论(0) 推荐(0) 编辑