- 博客(125)
- 收藏
- 关注
“分布式哈希”和“一致性哈希”的概念与算法实现
分布式哈希和一致性哈希是分布式存储和p2p网络中说的比较多的两个概念了。介绍的论文很多,这里做一个入门性质的介绍。 分布式哈希(DHT) 两个key point:每个节点只维护一部分路由;每个节点只存储一部分数据。从而实现整个网络中的寻址和存储。DHT只是一个概念,提出了这样一种网络模型。并且说明它是对分布式存储很有好处的。但具体怎么实现,并不是DHT的范畴。 一致性哈希:...
2011-07-26 17:37:00 62
超级负载均衡
超级负载均衡旨在为解决服务不断扩展、机器不断增多、机器性能差异等问题,以增强系统的稳定性,自动分配请求压力。算法实现了多个模型和均衡策略,能通过配置实现随机、轮询、一致hash等。同时也能实现跨机房的相关分配。现已经在多个系统中使用。TAG负载均衡内容 现有系统中存在的问题:1. 慢连接、瞬时访问慢。场景一:如果后端新增加机器,cache命中率低,因此响应速度慢,但...
2011-07-26 17:26:00 70
php打印warning日志引发的core追查
内容 春节期间线上出了两个php-cgi的core,具体追查过程如下:一、 Core信息file core.xxxbug.php-cgi.3611.1296586902: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from ‘php-cgi’gdb ~/php5/bin/php-...
2011-07-26 17:23:00 103
存储方式与介质对性能的影响
摘要数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给大家提供了一份不同存储模式下的性能测试数据,方便大家在今后的程序开发过程中可以利用这份数据选择合适的数据存储模式。TAG存储性能,innodb性能,存储介质目录目录… 1简介...
2011-07-26 17:16:00 158
PHP内核介绍及扩展开发指南—基础知识
一、 基础知识本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码。1.1 PHP变量的存储1.1.1 zval结构Zend使用zval结构来存储PHP变量的值,该结构如下所示:typedef union _zvalue_value { long lval; /* long value */ d...
2011-07-26 16:52:00 94
linux下poll和epoll内核源代码剖析
作者:董昊 博客链接http://donghao.org/uii/poll和epoll的使用应该不用再多说了。当fd很多时,使用epoll比poll效率更高。我们通过内核源码分析来看看到底是为什么。poll剖析poll系统调用:int poll(struct pollfd *fds, nfds_t nfds, int timeout);内核2.6.9对应的实现代码为:[fs/select.c...
2011-07-25 18:30:00 235 1
OAuth认证协议原理分析及使用方法
twitter或豆瓣用户一定会发现,有时候,在别的网站,点登录后转到 twitter登录,之后转回原网站,你会发现你已经登录此网站了,这种网站就是这个效果。其实这都是拜 OAuth所赐。OAuth是什么?OAuth是一个开放的认证协议,让你可以在Web或桌面程序中使用简单而标准的,安全的API认证。OAuth有什么用?为什么要使用OAuth?网络开放是一个不变的趋势,那么不可避免的...
2011-07-25 15:56:00 77
大型高并发高负载网站的系统架构
此内容涉及到开发工具, 开发方法, 开发过程, 体系结构, 应用分层, 常用web功能举例和注意事项, 性能瓶颈, 扩展并提出一些解决方法, 最后还涉及到性能的监控方法。扩展Web应用程序一、概念简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:1...
2011-07-22 18:03:00 103
Apache的prefork模式和worker模式
prefork模式这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处...
2011-07-22 12:34:00 44
切换apache的prefork和worker模式
Apache HTTP服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服务器。不同的平台和不同的环境经常产生不同的需求,或是为了达到同样的最佳效果而采用不同的方法。Apache凭借它的模块化设计很好的适应了大量不同的环境。这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。Apache2.0将这种模块化的设计延伸到了web服务器...
2011-07-22 12:29:00 151
linux中的apachectl是什么命令
apachectl是Apache HTTP服务器的前端程序。其设计意图是帮助管理员控制Apache httpd后台守护进程的功能。apachectl脚本有两种操作模式。首先,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数。其次,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适...
2011-07-22 12:20:00 194
负载均衡工具haproxy安装,配置,使用
一,什么是haproxyHAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不...
2011-07-21 13:52:00 121
在apache中使用 memcache 来作 session 存储
session.save_handler = memcachesession.save_path = "tcp://127.0.0.1:11211"使用多个 memcached server 时用逗号","隔开,并且和<wbr><a href="http://cn.php.net/manual/en/function.Memcache-addServer.php" sty...
2011-07-21 11:28:00 45
在ApacheHTTPD服务器中使用DSO完全分析
Apache HTTP 服务器是一个模块化(或说积木式)的程序,管理员可以选择一些模块来增加服务器的某些功能。这些模块,可以在创建服务器程序时静态地编译到httpd服务器的二进制代码中,也可以编译成一些独立于服务器程序的Dynamic Shared Objects (DSOs)文件。DSO 文件可以在编译服务器程序时创建,也可以在以后利用Apache扩展工具apxs来单独创建。 这篇文档,将描述...
2011-07-21 03:42:00 54
Apache模块开发helloworld无错版
环境:CentOS 5.4第一步:安装Apache的apxs首先来介绍下apache的一个工具apxs。apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。apxs可参考官方文档http://lamp.linux.go...
2011-07-21 02:31:00 254
分布式计算开源框架Hadoop入门实践
在SIP项目设计的过程中,对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计,在我从前写的文章《Tiger Concurrent Practice --日志分析并行分解设计与实现》中有所提到。但是由于统计的内容暂时还是十分简单,所以就采用Memcache作为计数器,结合MySQL就完成了访问控制以及统计的工作。然而未来,对于海量日志分析的工作,还是需要有所准备。现在最火的技术词汇...
2011-07-20 18:10:00 59
Linux系统JDK安装和配置
以下步骤均为root登录状态下进行执行。一、卸载JDKLinux会自带JDK,如果不使用自带版本的话需要卸载。1、卸载系统自带的jdk版本查看自带的jdk#rpm -qa | grep gcj看到如下信息:libgcj-4.1.2-44.el5java-1.4.2-gcj-compat-1.4.2.0-40jpp.115使用rpm -e --nodeps 命令删...
2011-07-20 17:57:00 58
mogileFS 分布式存储-安装手记
环境是centos呃,装个玩意儿走了好多弯路,以为依赖太多的包河模块,搞了很久.后来发现其实安装可以简化的,yum没有mogilefs,可以通过epel来安装.第一种安装方法,用epel# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm# yum...
2011-07-20 17:26:00 113
《独辟蹊径品内核:Linux内核源代码导读(china-pub首发)》的前言
我觉得作者讲的学习方法很好值得看看。下面是本书作者所写:几乎每一个操作系统内核的学习者在初学阶段都会感觉到难以入门。这是由于内核涉及到知识面非常广泛,需要学习者从根本上掌握大量的知识,这包括:程序编译,链接,装载的细节,操作系统理论,计算机系统体系结构,数据结构与算法,深厚的C/汇编语言编程功底。如此相对较高的门槛常常令很大一部分初学者望而却步。那么是不是一定要先学好以上的各门知识后才能学习...
2011-07-20 11:49:00 109
CentOS的Gearman安装与使用无错版
通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。Client:请求...
2011-07-19 19:21:00 153
F5与NetScaler比较
F5 是基于Linux的,NetScaler 是基于BSD的。F5 的四层走的是硬件芯片,七层走的是软件,NetScaler 全部走的是软件。我测试的性能也是F5比NetScaler强,在均不使用压缩的情况下,NetScaler比F5消耗更大的带宽。...
2011-07-19 18:44:00 525
使用Gearman做分布式计算
通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。Client:请求...
2011-07-19 18:21:00 55
memcacheq 服务安装与原理
memcacheQ是一个单纯的分布式消息队列服务。它的安装依赖于BerkeleyDB 和 libevent,所以要先安装这BerkeleyDB和libevent:一,BerkeleyDB下载软件包,http://download.oracle.com/berkeley-db/db-5.0.21.tar.gz解压缩后,cd build_unix../dist/configurem...
2011-07-19 18:19:00 93
哈希分布与一致性哈希算法简介
前言在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了。相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由client端的api来决定的,api根据存储用的key以及已知的服务器列表,根据key的hash计算将指定的key存储到对应的服务器列表上。基本的原理以及分布在这里我们通常使用的方法是根据 key的...
2011-07-19 15:37:00 57
Hadoop源代码分析
一个典型的HDFS系统包括一个NameNode和多个DataNode。NameNode维护名字空间;而DataNode存储数据块。DataNode负责存储数据,一个数据块在多个DataNode中有备份;而一个DataNode对于一个块最多只包含一个备份。所以我们可以简单地认为DataNode上存了数据块ID和数据块内容,以及他们的映射关系。一个HDFS集群可能包含上千DataNode节点,...
2011-07-19 15:33:00 98
MySQL 水平分区方案Spock Proxy
Spock Proxy 是由实际项目产生的一个开源项目(Spock是Rails的应用,Speck Proxy应当可用于Rails之外的,例如PHP或.NET),基于MySQL Proxy开发,是MySQL Proxy的一个分支,支持range-based horizontal paritioning,他对MySQL Proxy所做的改进包括:a). 不使用LUA脚本,提升性能。例如将多个数据源...
2011-07-19 12:04:00 56
利用bigpipe机制实现页面模块的异步渲染 chunked技术
bigpipe基于HTTP/1.1 支持的chunked编码,可以由浏览器接收到服务器发送的chunked块后,立即解析该块代码。因为chunked编码使消息主体成块发送,每块有自己的大小指示器,在所有的块之后会紧接着一个可选的包含实体头域的尾部。这种编码充许发送端能动态生成内容,并能携带能让接收端判断消息是否接收完整的有用信息。 每块的大小指示器chunk-size为16进制数字字符串,块编...
2011-07-19 11:20:00 93
使用MySQL Proxy解决MySQL主从同步延迟
MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方 面开发带来了极大的便利。但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负 载、网络拥堵等方面的原因,Master与Slave之间的数据同步延迟是完全没有保证的。短在1秒内,长则几秒、几十秒甚至更长都有可能。由于数据延迟问题的存在,当应用程序在M...
2011-07-18 18:25:00 69
mysql读写分离(MySQL Proxy 安装和使用)
一、必备软件:1、LUA 可以去LUA的官方下载:www.lua.org2、MySQL Proxy 这里有好多二进制版本。 http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/ 或者去MYSQL官方下载源代码。3、测试过程中取消了B和C的REPLICATION。这样SQL语句一下子就看出来从哪里来的。如果是M-S(可以先...
2011-07-18 18:21:00 51
web高性能开发系列随笔
在BlogJava里写了一些关于高性能WEB开发的随笔,因为都是跟前端技术相关(html,http,js,css等),所以也贴到博客园来,吸收下人气。1、 HTTP服务器.2、性能测试工具推荐3、 图片篇.4、 如何加载JS,JS应该放在什么位置.5、 为什么要减少请求数,如何减少请求数.6、减少请求,响应的数据量.7、JS、CSS的合并、压缩、缓存...
2011-07-18 15:32:00 52
BigPipe:高性能的“流水线技术”网页
原文地址:http://www.facebook.com/note.php?note_id=389414033919译文地址:http://isd.tencent.com/?p=2419作者:蒋长浩Facebook的网站速度做为最关键的公司任务之一。在2009年,我们成功地实现了Facebook网站速度提升两倍 。而正是我们的工程师团队的几个关键的创新使它成为可能。在本文中,我将向大家...
2011-07-18 15:26:00 89
Xdebug 配置
第一部分:安装预编译模块安装预编译模块是很容易的。只需要将它们放到一个目录中,并将下面的内容添加到php.ini中:(不要忘记更改路径和文件名为你自己的值,并确信你使用的是完整路)zend_extension_ts = "c:/php/modules/php_xdebug.dll"第二部分:基本特征:相关参数设置xdebug.default_enable类型:布尔型 默...
2011-07-18 15:22:00 60
前端开发中的性能那点事
前端开发中的性能那点事(一)巧用xdebug 前言:在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,function a()调用了多少次,function b()又消耗了多少时间,我们到底怎么查找是哪个蛀虫拉慢了我们的程序运行速度呢?在这里给大家介绍一款工具xdebug,相信很多人已经听说过了,希望借...
2011-07-18 15:11:00 169
php 的opcode缓存apc以及其安装
先说说php程序的执行流程吧,说明了这个,才好开始我们的优化之旅。 客户端(譬如浏览器)—》请求Get hello.php—-》cgi服务器接(譬如apache)收到请求,根据配置寻找php的处理程序(譬如mod_php)—-》apache加载php的处理程序,php 的处理程序读取php.ini初始化php的解释环境 —-》mod_php定位寻找hell.php,将其载入...
2011-07-18 15:03:00 69
php缓存技术总结
全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content = Ob_get_contents();****将缓存内容写入html文件*****Ob...
2011-07-18 14:16:00 192
详解Apache下.htaccess文件常用配置
.htaccess文件是Apache服务器中最常用的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置索引入口等功能。 另外,.htaccess手动编辑方法是使用UE或notepad2等高级文本编辑器。如果不方便下载或手动编写的文件出错,也非常推荐在...
2011-07-18 13:59:00 77
满足极高读写性能需求的Key-Value数据库
满足极高读写性能需求的Key-Value数据库高性能Key-Value数据库的主要特点就是具有极高的并发读写性能,Redis,Tokyo Cabinet, Flare,这3个Key-Value DB都是用C编写的,他们的性能都相当出色,但出了出色的性能,他们还有自己独特的功能:1、RedisRedis是一个很新的项目,刚刚发布了1.0版本。Redis本质上是一个Key-Value类型的...
2011-07-18 13:45:00 133
Apache URL重定向避免网址结尾斜线问题
结尾斜线问题描述: 每个网主都曾受到结尾斜线问题的折磨,若在URL中没有结尾斜线,服务器就会认为URL无效并返回错误,因为服务器会根据/~quux/foo去寻找foo这个档案,而非显示这个目录。其实很多时候,这问题应留待用户自己加「/」去解决,但是用户会直接输入网址。 这样就会产生一个301重定向的请求。然后再次寻找到/index.html下。方法: 最直观的方法就是令Apac...
2011-07-14 12:04:00 423
Squid的refresh_pattern配置
refresh_pattern 大概是 squid 最有意思但最不好懂的配置参数了。记住refresh_pattern 只对后端没设置Expires过期时间的页面起作用,比如论坛页面;而对类似apache mod_expires 设置过的页面不起作用。说明之前,先将个概念LM,LM就是页面Header里时间(Date)和Last-Modified时间的差。Date一般是Squid从后面取页...
2011-07-14 10:51:00 74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人