Category Archives: 架构研究
[54chen开发日记]注解和拦截器实现权限通用模型的设计实践
——————英文大爱———————– 在近期的开发过程中,有使用到拦截器来实现权限控制,使用这种设计方案,可以很好地分离权限与系统本身的功能,让开发过程更加关注系统的核心功能,同时可以很容易做到开发时的任务划分,同时使项目代码的可读性大大提升。先来普及几个相关的名词: 1.AOP:是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面编程,也有叫面向方面编程,不过切面更加形象。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 2.GoF:《Design Patterns: Elements of Reusable Object-Oriented Software》(即《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为”四人组(Gang of Four)”,而这本书也就被称为”四人组(或 GoF)”书。话说
rose pipe–一次对http技术的伟大革新实现(54chen乱弹版)
网站速度一直是互联网公司所关注的核心目标之一,作为SNS网站更是这样。来自世界第一大的打不开的SNS网站facebook的工程师日志中提到,BigPipe: Pipelining web pages for high performance。 原文在墙外,豆瓣有存根,地址为http://9.douban.com/site/entry/139173635/。 来自infoq的一篇资料报道:http://www.infoq.com/cn/news/2010/08/bigpipe-facebook-optimize 它本意是充分利用http,将用户感受到的延迟时间降低一半,是如何做到的呢,下面由54chen流水记账一篇解释实现原理。院内曾经由人人网架构师王志亮大侠发表过一篇文章,地址是http://www.54chen.com/architecture/rose-open-source-portal-framework.html,本文将以此例中的项目举例。 HTTP协议 HTTP是一个客户端和服务器端请求和应答的标准,尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。 在这里重新解释HTTP是为了后面做铺垫,一次http访问的过程如下: 1.打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作; 2.服务器在处理完客户的请求之后,要向客户机发送响应消息; 3.客
sphinx安装配置手记(中文分词54chen支持版)
介绍 Sphinx[英] [sfɪŋks] [美] [sfɪŋks] 出自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Coreseek是一款基于Sphinx的开源检索引擎,支持Tb级的全文数据索引,专门为中文用户提供免费开源的中文全文检索系统。 下载 wget http://www.coreseek.cn/uploads/csft/3.2/csft-3.2.12.tar.gz wget http://www.coreseek.cn/uploads/csft/3.2/mmseg-3.2.12.tar.gz 解压 tar -zxvf mmseg-3.2.12.tar.gz tar -zxvf csft-3.2.12.tar.gz 中文依赖下载和安装 wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz tar zxvf libiconv-1.13.tar.gz cd libiconv-1.13/ ./configure –with-libiconv-prefix make make install 建立系统动态链接 在/etc/ld.so.conf中加一行/usr/local/lib,运行ldconfig。 ld.so.conf和ldconfig是维护系统动态链接库的。真不明白为什么iconv库安装时不把这一步也做了 安装mmseg分词 cd mmseg-3.2.12 yum
用sphinx轻松搞定方便管理的多节点过亿级数据搜索
概述 来自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级),实测千万级数据在0.0X秒和0.00X秒占大多数。 Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,实测30W线上复杂的blog数据需要5分钟,创建1000万条记录的索引可以在50分钟内完成,实测时间比这个更长得多,而只包含最新10万条记录的增量索引,重建一次只需几十秒,实测十万条在一分钟不到的时间。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 。 sphinx安装 安装见 用Sphinx快速搭建站内搜索功能 配置多节点协同工作 第一点,原理 在sphinx.conf中可以配置index段落里的local和agent两个参数,local = blog_1表示使用本地索引名为blog_1的索引,agent = 10.1.1.1:3312:blog_2表示使用10.1.1.1这个机器的3312端口上服务的blog_2索引。这两个参数均可在此段落中重复出现。 利用这两个参数,可进行节点与节点间的配置。如图1所示,一个searchd服务在接到请求时两种使用索引的示意图。 图1 一个searchd服务在接到请求时两种使用索引的示意图
一条SQL引发的对order by的思考
==========尽职的安静的分隔线=========== 在实际工作中遇到下面一个问题: 有一个表,存有2000万数据。 主键为ID bigint(20) NOT NULL auto_increment 另有一字段time timestamp NOT NULL default CURRENT_TIMESTAMP 故事从这两个字段说起: sql1需要从这个表中检索出来时间为2010-05-26 11:55:00之前并且id号大于20000的前10条数据 sql2需要从这个表中检索出来时间为2010-05-26 11:55:00之后并且id号大于20000的前10条数据 两条sql写出来大概是这样子的: sql1:select * from table where time 20000 order by id limit 10; sql2:select * from table where time >’2010-05-26 11:55:00′ …
7月3日 infoQ Qclub分享演示文稿下载
本次活动以RIA为主题,参会者多为关心RIA及后端数据服务的开发者和管理者。 我的主题是:”Ria的强力后盾:rest+海量存储 主要内容是给参会者分享了淘宝在nginx上作的关于rest的事情,和一些人人网nuclear的原理。 下面是此次会上我所使用的slide。(国外 有点慢 需忍) Ria的强力后盾:rest+海量存储 View more presentations from zhen chen.
近期分布式相关文章汇总
号外:http://url.cn/0ThU83 infoQ的线下技术活动Qclub本周六在知春路京仪大酒店举行,我给沙龙参会者分享来自人人网nuclear的开发经验以及如何运用在RIA上. 1.54chen解读NoSQL代表Dynamo 这篇文章颇费了心思从构思到成文,把dynamo原理描述得还算是清楚。 2.4月24日QCon现场直播流水帖 这篇是在QCon大会上现场记录的一些不算是太完整的笔记 4.java线程控制器代码分享-根据cpu情况决定线程运行数量和情况 一个根据cpu来执行的线程控制器实现,评论中有高人改进方案。 5.jdbc socketRead0 locked 记一个Mysql的不明bug 在开发nuclear过程中遇到的一个jdbc的bug 6.LinkIn基于Dynamo设计的系统:伏地魔(voldemort)设计中文文档[我是陈科学院译]-完稿 54chen翻译的一个来自国外SNS网站的分布式存储系统文档
用Sphinx快速搭建站内搜索功能
Sphinx[英] [sfɪŋks] [美] [sfɪŋks] 出自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 下面发出操作记录: 10106 wget http://www.coreseek.cn/uploads/csft/3.2/csft-3.2.12.tar.gz 10107 wget http://www.coreseek.cn/uploads/csft/3.2/mmseg-3.2.12.tar.gz 10109 tar -zxvf mmseg-3.2.12.tar.gz 10110 tar -zxvf csft-3.2.12.tar.gz 10111 cd …
54chen解读NoSQL代表Dynamo
本文已经首发于InfoQ中文站,版权所有,原文为《解读NoSQL技术代表之作Dynamo》,如需转载,请务必附带本声明,谢谢。 InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。 NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看着NoSQL越来越热,越来越引来大家的围观。受infoQ霍师傅之托,特作此文,一来作过去一年的总结,二来希望以平白的话语对NoSQL系统在国内的发展献绵薄之力。 1.我眼中的两种模式 NoSQL其实并不是什么妖魔鬼怪,相反的,NoSQL的真谛其实应该是Not Only SQL,其产生是在数据量和访问量的增大下,人为地去添加机器、切分数据到不同的机器,变得越来越困难,人力成本越来越高,于是便开始有了这样的项目,本意是提高数据存储的自动化程度,减少人为干预的时间,让负载更加均匀。在国际上,真正的代表之作有来自Google的 BigTable 和Amazon 的Dynamo,他们分别使用了不同的基本原理。 1.1 MapReduce 这是历史最久的一种模型,典型的代表是BigTable。Map表示映射,Reduce表示化简。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性(Map);每个节点会周期性的把完成的工作和状态的更新报告回来(Reduce)。大多数分布式运算可以抽象为MapReduce操作。Ma
一场技术的圣战:rose开源框架之portal
作者:人人网架构师 王志亮 (54chen按:此文为客座博文,王志亮大侠,人人网架构师,疱丁分词创始人,rose是他的另一开源大作。关于69圣战,请看http://zhidao.baidu.com/question/158643718.html?si=2&wtp=wk) 2010年的6月9日是一个圣战的日子,零点一到就有人开始,好戏也如约在晚上7点发生。人人网战场是SJ的公共主页:http://page.renren.com/sj 对不同人,这个日子意味着不同,滋味也不同。作为人人网技术团队,我们要保证服务能力、用户体验能够应付得了这个挑战。 某一个服务器的能力总有限,为了应付突然增长的读写量,web服务架构、内部服务架构、数据库架构等要能够轻松通过服务器调配来满足。就web服务器而言,我们增加了1倍的机器。现在再回头来看监控的数据,一切显得美好。这个期间整个服务做到了服务能力没有中断。除此之外,在这次圣战中,其中还有一项我们独有的技术起到了重要的作用:rose portal ,下面作一个介绍: 图1是sj的主页: 图1 sj在人人网的公共主页 这个页面分为三列: 左边有 “推荐给好友”、“基本信息”、“相册”; 中间有“给SJ留言”、“好友留言”; 右边有“好友”,“人人的用户还关注”等。 在后台,这些被分解为不同的模块,我们称之为”window”。这每一个window都意味着可能连接一个独立的服务集群,比如基本信息服务、留言服务、好友服务、相册服务等等。这样,一个公共主页就等于多个独立的、可配置的window模块组成,如图2所示 :
54chen,人人网分布式研究人员,曾饭于金山、雅虎、淘宝,暂居北京,情绪稳定。
SEARCH
Tag
Update
- 54chen Twitter memo 2010-08-29
- [演稿分享]人人网开发一站式体验
- [54chen原创]简单好用的土办法抗击洋鬼子对wordpress系统的广告灌入
- [54chen开发日记]注解和拦截器实现权限通用模型的设计实践
- 54chen Twitter memo 2010-08-22
- 54chen Twitter memo 2010-08-15
- rose pipe–一次对http技术的伟大革新实现(54chen乱弹版)
- 54chen Twitter memo 2010-08-08
- 使用maven的profiles自动设置log4j线上环境和测试环境区别
- 54chen Twitter memo 2010-08-01
- sphinx安装配置手记(中文分词54chen支持版)
- 54chen Twitter memo 2010-07-25
- 由php的call_user_func传reference引发的思考
- 54chen Twitter memo 2010-07-18
- 用sphinx轻松搞定方便管理的多节点过亿级数据搜索
