
系统架构
文章平均质量分 85
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式初探-抽象工厂模式
抽象工厂模式,Abstract Factory,按GOF的划分属于对象创建型模式,用于提供一个创建一系列相关或相互依赖对象的接口,而不用指定它们具体实现的类,很好的实践了“面向接口编程”的准则。一、使用场景:1、一个系统要独立于它的产品的创建,组合和表示,比如跨操作系统的文本编辑器,文本编辑器操作的应该是编辑器视图组件独立于操作系统的抽象,而不是具体于某操作系统的实现。2、一个系统要由原创 2013-12-28 17:21:56 · 1561 阅读 · 0 评论 -
设计模式初探-桥接模式
桥接(Bridge)模式,又称Handle/Body模式,属于对象结构型模式。用于将抽象部分与它的实现部分分离,使它们都可以独立地变化。比如常见的电脑窗口界面,不同的操作系统其窗口界面绘制的原理肯定不一样。这里,窗口界面就相当于抽象部分(Abstraction),而窗口界面本身也可以随着功能的不同而进行扩充,扩充的窗口就是抽象窗口的扩充抽象类(RefinedAbstraction),这些抽象需要具原创 2014-01-06 23:55:58 · 1674 阅读 · 0 评论 -
设计模式初探-代理模式
代理模式(PROXY),别名Surrogate(代理),通过为其他对象提供一种代理以控制对这个对象的访问,属于对象结构型模式。软件开发中,经常会出现特殊对象,创建这些对象时开销很大,比如文档中的图片,数据库连接等,我们应该根据需要对这些对象进行创建,当图片可见时创建图片对象,当数据库连接真的需要执行时创建连接。通过创建代理,我们可以控制对象的创建,访问时机。创建图片代理,将其作为占位符插入到文档中原创 2014-01-18 02:52:21 · 2039 阅读 · 0 评论 -
设计模式初探-中介者模式
中介者模式(MEDIATOR),又称调停者模式,通过使用一个中介者对象来封装一系列的对象交互,属于对象行为型模式。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。现实生活中,到处充斥着中介者模式的身影。上到庄严的法院,下到为程序员带来福音的婚姻介绍所或交友平台,还有可恶的房产中介,都是中介者模式的体现。比如,你参加一个相亲活动,20多对男女如饥似渴地寻找着自原创 2014-01-25 22:56:53 · 1774 阅读 · 0 评论 -
设计模式初探-解释器模式
解释器模式(INTERPRETER),通过面向对象的方式构造语言解释器,并使用该解释器按照一定的文法解释语言中的句子,属于类行为模式。记得大学时候参加过机器人足球比赛,通过面板输入指令"up move 10 and left run 8",足球机器人就会执行相应的动作。将这些指令组合就能完成高难度的射门,躲避,可谓智能也!下面将通过机器人指令解释来阐述解释器模式的强大。一、使用场景1、当有原创 2014-01-25 01:29:08 · 3340 阅读 · 3 评论 -
设计模式初探-迭代器模式
迭代器模式(ITERATOR),又称游标(Cursor),提供了一种方法,用于顺序访问一个聚合对象中的各个元素,而不需暴露该对象的内部表示。迭代器模式通过将对聚合对象(通常为列表)的访问和遍历从聚合对象中分离出来并放入一个迭代器对象中,迭代器对象知道如何遍历列表,这样不仅可以简化聚合对象的实现(将遍历操作交给迭代器负责,自己只负责保存),还可以以不同的方式遍历列表。一、使用场景1、访问一个原创 2014-01-25 13:58:39 · 1803 阅读 · 0 评论 -
设计模式初探-享元模式
享元模式(FLYWEIGHT),通过运用共享技术有效地支持大量细粒度的对象,由于处理的是细粒度的对象,所以也称为轻量级模式,属于对象结构型模式。享元模式的共享技术是通过区分对象的内部状态和外部状态来实现的。内部状态是对象的内在特征,不会随环境的变化而变化,所以能够共享。外部状态是对象的外在表现,随环境的改变而改变,不可以共享。对于我们经常查看的文章,参考的资料,组成它们的字母或汉字代表的意义是不变原创 2014-01-15 00:30:13 · 1899 阅读 · 0 评论 -
设计模式初探-外观模式
外观模式(FACADE),也叫门面模式,属于对象结构型模式,通过为子系统中的一组接口提供一个一致的界面(外观对象)来简化客户端与子系统之间的交互。Facade模式定义了一个高层接口,这个接口为子系统中较一般的设施提供一个单一而简单的界面,从而使子系统间的通信和相互依赖关系达到最小,并且隔离了客户类和子系统类,降低了两者的耦合度。如下图所示:一、使用场景 1、 当要为访问一系列复原创 2014-01-12 23:25:22 · 1476 阅读 · 0 评论 -
设计模式初探-组合模式
组合模式,英文为COMPOSITE模式,属于对象结构型模式。用于组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。通常树形结构,比如公司组织结构,文件目录,系统菜单,xml文件解析等都可以采用组合模式实现。一、适用场景1、在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,客户端可以一致原创 2014-01-10 16:22:54 · 1443 阅读 · 0 评论 -
设计模式初探-Prototype模式
Prototype模式,也称原型模式,属于对象创建型模式。通过使用原型实例指定创建对象的种类,然后拷贝这些原型来创建新的对象。Prototype模式允许一个对象再创建另一个可定制的对象,即使不知道任何创建的细节,就像JavaScript中通过prototype原型公用基本的方法或属性,然后在克隆后的原型基础上添加自己的定制。一、使用场景1、当一个系统应该独立于它的产品创建,构成和表示时,这原创 2013-12-31 00:51:04 · 1875 阅读 · 2 评论 -
消息队列服务
整理的OSChina第37期高手问答——消息队列服务,嘉宾为 @shaneyuan 。@shaneyuan 现就职于广州 UC 公司,是 UCMQ 的作者,以下简称SY。UCMQ是一款轻量的HTTP协议级消息队列服务组件,项目的最初原型来自 @张宴 的HTTPSQS。基本特性:支持标准的HTTP协议( GET/POST方法),支持长连接(keep-alive);原创 2013-12-13 15:18:59 · 4190 阅读 · 0 评论 -
用netstat查看网络状态详解
一、Linux服务器上11种网络连接状态: 图:TCP的状态机通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手注:以下说明最好能结合”图:TCP的状态机”来理解。SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TC转载 2013-10-01 00:46:56 · 1361 阅读 · 0 评论 -
设计模式初探-责任链模式
责任链模式(CHAIN OF RESPONSIBILITY),通过将多个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它,属于对象行为型模式。责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。JavaScript的事件处理,工作流系统中公文的多级审批,Web开发中的过滤器和拦截器都可以采用责任链模式实现。一、使用场景1、有多个对象可以处理同一个请求原创 2014-01-18 21:50:07 · 2266 阅读 · 0 评论 -
设计模式初探-命令模式
命令模式(COMMAND),又称动作(Action),事务(Transaction),通过将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,实现对请求排队或记录请求日志,以及支持可撤销的操作。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。一、使用场景1、需要抽象出待执行的动作以参数原创 2014-01-19 16:17:11 · 1828 阅读 · 0 评论 -
设计模式初探-工厂方法模式
工厂方法模式,Factory Method,属于对象创建型模式,通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。工厂方法通过抽象的接口,将创建对象的行为交给具体的子类。一、使用场景1、当一个类不知道它所必须创建的对象的类的时候,由于不知道要创建对象的类,所以不能直接实例化类,只能交给其他知道该类的类去做,比如某接口的具体实原创 2013-12-29 16:49:08 · 1749 阅读 · 3 评论 -
设计模式初探-Builder模式
Builder模式,又称生成器或构建者模式,属于对象创建型模式,侧重于一步一步的构建复杂对象,只有在构建完成后才会返回生成的对象。Builder模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一、使用场景1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时,比如买一台电脑,我不需要知道电脑CPU,主板,机箱是如何生产的,也不需要知道它们是如何原创 2013-12-29 00:26:22 · 1887 阅读 · 1 评论 -
设计模式初探-适配器模式
适配器模式,又称包装器Wrapper,用于将一个类的接口转换成客户希望的另外的一个接口,从而解决因接口不兼容导致类之间不能工作的问题。Adapter模式是不兼容结构的协调者,犹如法官大人,给人们带来希望。生活中处处可见适配器模式的踪影,电源适配器,USB适配器,生活因为适配而美好!一、使用场景1、系统中已存在类的接口不满足现有需求,且一般无法改变现有类的接口,比如该类是第三方提供,无法修改原创 2014-01-04 02:57:38 · 2019 阅读 · 0 评论 -
设计模式初探-单例模式
Singleton模式,又称单例模式,它保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式在平常开发中经常用到,比如系统的全局配置属性,常用的工具类或工厂方法都可以实现为一个单例。单例模式概念很简单,实现起来也不麻烦,但一不小心还是有可能出错的。一、使用场景只要是要求实例唯一的都可以使用单例模式来实现,特别是耗资源的实例!二、UML图三、Java实现1、懒汉原创 2014-01-03 00:00:37 · 1654 阅读 · 0 评论 -
设计模式初探-装饰模式
装饰模式(DECORATOR模式),又称包装器Wrapper,属于对象结构型模式,用于动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更为灵活。它通过使用对象之间的关联关系取代类之间的继承关系,引入的装饰类既可以调用被装饰类的方法,还可以添加新的业务逻辑,以达到扩充被装饰类的功能。装饰模式和适配器模式虽然都称为包装器,但两者还是不同的。装饰模式只是在原有对象的基原创 2014-01-12 04:00:28 · 1703 阅读 · 0 评论 -
设计模式初探-访问者模式
访问者模式(VISITOR),提供一个作用于某对象结构中各元素的操作表示,并使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作,属于对象行为型模式。使用Visitor模式,必须定义两个类层次:一个对应于接受操作的元素(Element层次),另一个对应于定义对元素的操作的访问者(Visitor层次)。给访问者类层次增加一个新的子类即可创建一个新的操作,但如果新增一个接受操作的元素,则需要原创 2014-02-17 20:43:58 · 1505 阅读 · 0 评论 -
设计模式初探-模板方法模式
模板方法模式(TEMPLATE METHOD),用于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于类行为型模式。模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为原创 2014-02-16 15:40:46 · 2309 阅读 · 0 评论 -
设计模式初探-策略模式
策略模式(STRATEGY),别名政策(Policy),通过将一系列的算法封装成一个个的策略对象,使算法可以相互替换,并能独立于使用它们的客户而变化,属于对象行为型模式。软件开发过程中,通常要设计相应的算法,比如电子网站中经常有折扣活动,并且用户等级不同,享受的折扣也不一样。通过使用策略模式将折扣算法封装起来,不仅可以用于网商平台,还可以用于手持设备中折扣活动的实现。封装的特性确保了扩展算法和增加原创 2014-02-15 17:15:45 · 1655 阅读 · 0 评论 -
设计模式初探-观察者模式
观察者模式(OBSERVER),又称发布-订阅(Publish-Subscribe),依赖(Dependents),通过定义对象间的一对多的依赖关系,达到当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新,属于对象行为型模式。观察者模式在软件设计中很常用,比如经典的MVC模式,Model为目标类,View为观察者,Controller为更新管理器。首先更新管理器即控制器先将视图和模原创 2014-02-12 22:35:58 · 1801 阅读 · 0 评论 -
设计模式初探-状态模式
状态模式(STATE),别名状态对象(Objects for States),允许一个对象在其内部状态改变时改变它的行为,就起来就像修改了它的类,属于对象行为型模式。状态模式通过将所有与特定状态相关的行为封装到一个或多个状态对象中,当状态改变时,其行为也会随着改变,从而简化大量的条件判断,使代码逻辑更清晰,更易于维护。大千世界,可以看做各个状态的转换。人,生老病死;水,固液气三态转化;天气,阴晴不原创 2014-02-14 21:14:02 · 1740 阅读 · 1 评论 -
设计模式初探-备忘录模式
备忘录模式(MEMENTO),又称Token,通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以待需要时将该对象恢复到原先保存的状态。备忘录模式很适合实现软件中的撤销和重做功能,在字处理软件,图像编辑软件,数据库管理软件中十分常见。游戏里也常常可以使用备忘录模式来保存游戏的状态,如游戏失败前的状态,游戏暂停时的状态,以备玩家重新接着死亡前的关卡继续或从暂停状态恢复,原创 2014-02-10 22:30:46 · 1388 阅读 · 0 评论 -
redis学习笔记二之数据类型
转自:http://www.cnblogs.com/xhan/archive/2011/02/02/1948891.html本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash 1. keysredis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中转载 2013-08-25 18:57:12 · 1073 阅读 · 0 评论 -
使用JMS在集群应用程序中分配任务
使用JMS在集群应用程序中分配任务在请求驱动的环境中解耦合和延迟处理是创建健壮和可伸缩的分布式应用程序的关键战略之一。许多服务都单独依赖于集群来确保可伸缩性,但是当新发现的需求使应用程序的复杂性增长时,它们常常会遇到麻烦。 尽管服务器集群是推动可伸缩性的基本技术,但是当所有的处理都同步完成时,它可能变得很低效。吞吐量可能会增加,但是响应性却会变得不可救药。 在本转载 2013-08-08 14:03:36 · 2032 阅读 · 0 评论 -
实战低成本服务器搭建千万级数据采集系统
上一篇文章《社会化海量数据采集框架搭建》提到如何搭建一个社会化采集系统架构,讲架构一般都比较虚,这一篇讲一下如何实战用低成本服务器做到日流水千万级数据的分布式采集系统。有这样一个采集系统的需求,达成指标: 需要采集30万关键词的数据 、微博必须在一个小时采集到、覆盖四大微博(新浪微博、腾讯微博、网易微博、搜狐微博)。为了节约客户成本,硬件为普通服务器:E5200 双核 2.5G cpu,转载 2013-08-07 15:01:36 · 3145 阅读 · 0 评论 -
HBase技术介绍
HBase简介 HBase - Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;G转载 2013-08-02 09:12:49 · 811 阅读 · 0 评论 -
HBase 中LoadBalancer插件开发
HBase 中的LoadBalancer策略控制了如何在集群启动时Assign所有用户Region到各个RegionServer上,以及如何定期检查Region分布情况并重新调整Region位置的。这些工作在0.92之前的版本中都是在HBase Master内核中实现的,开发人员如果希望扩展自己的LoadBalancer插件,只能Hack源码,但这随着社区版本的升级,Hack工作必须移植到新的版本转载 2013-08-02 09:08:35 · 1270 阅读 · 0 评论 -
HBase性能优化方法总结
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客。1. 表的设计1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个r转载 2013-08-02 09:11:28 · 959 阅读 · 0 评论 -
社会化海量数据采集爬虫框架搭建
随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前。如何能够做到所见即所得的无阻拦式采集、如何快速把不规则页面结构化并存储、如何满足越来越多的数据采集还要在有限时间内采集。这篇文章结合我们自身项目经验谈一下。我们来看一下作为人是怎么获取网页数据的呢?1、打开浏览器,输入网址url访问页面内容。2、复制页面内容的标题、作者、内容。3、存转载 2013-07-30 14:22:44 · 1434 阅读 · 0 评论 -
又拍网架构中的数据库分库设计
又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万。5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的积累。相关厂商内容方兴:基于安全漏洞的攻防对抗技术陈良国:击败人类万事通的Watson AI系统架构剖析相关赞助商网络架构疑难杂症解析,百度网页搜索新技术研讨!8折转载 2013-07-02 22:55:52 · 1017 阅读 · 0 评论 -
支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃用户,系统日传输tweet更多达4亿条,并已完成了以服务为核心的系统架构蜕变。Twitter如今在世界范围内已拥有1.5亿的活跃用户,为了给用户生成timeline(时间轴)需支撑30万QPS,其firehose每秒同样生成22MB数据。整个系统每天传输tweet 4亿条,并且只需要5分钟就可以让一条twee转载 2013-07-17 22:38:20 · 1505 阅读 · 0 评论 -
新浪微博技术架构问题解析
你要问我新浪微博有什么技术压力。我觉得,本质上: 第一,如何快速共享数据,如何快速的将new message在网状社区中传递开来。 第二,长期大量积累下来的数据如何分布,分散储存,保证性能。数据库的横纵切分。 第三,机房的多备份,多备份机房之间的同步策略。 第四,业务上的转载 2013-07-02 23:18:20 · 935 阅读 · 0 评论 -
Amazon平台架构
http://www.linuxeye.com/architecture/1679.html一、系统概述1、Amazon平台概述 Amazon平台是一个由数百服务组成的面向服务的架构,其秉承高度去中心化、松散耦合、完全分布式的原则,具体架构参考下图1。图1 Amazon系统架构在这种环境中,尤其需要一个始终可用的存储系统,由此,Dynamo诞生了。转载 2013-07-17 23:53:59 · 6273 阅读 · 0 评论 -
多版本并发控制(MVCC)在分布式系统中的应用
问题 最近项目中遇到了一个分布式系统的并发控制问题。该问题可以抽象为:某分布式系统由一个数据中心D和若干业务处理中心L1,L2 … Ln组成;D本质上是一个key-value存储,它对外提供基于HTTP协议的CRUD操作接口。L的业务逻辑可以抽象为下面3个步骤:read: 根据keySet {k1, … kn}从D获取keyValueSet {k1:v1, … kn:vn}转载 2013-07-16 08:54:50 · 816 阅读 · 0 评论 -
CAS企业解决方案
关于CAS的原理就不在这里介绍了,用户发往系统的请求都会重定向到CAS服务器,由CAS来做一个认证,CAS支持多种数据获取方式基于JDBC/LDAP/WS等等。 JDBC就是直接在数据库中验证用户名的密码方式。 一般需要做SSO认证时,可以把权限/认证服务作为一个单独的工程部署,也可以单独提供一个独立的接口出来,这就是说身份的认证和权限的认证都是在我们用编码的方式来验证,这种方式比C转载 2013-08-24 12:56:52 · 1647 阅读 · 0 评论 -
redis学习笔记六之发布订阅
转自:http://www.cnblogs.com/xhan/archive/2011/02/06/1949473.html 发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server转载 2013-08-25 19:09:58 · 1136 阅读 · 0 评论 -
redis学习笔记五之pipeline
转自:http://www.cnblogs.com/xhan/archive/2011/02/05/1949276.htmlredis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常 会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给c转载 2013-08-25 19:06:56 · 1520 阅读 · 0 评论