架构与模式
文章平均质量分 83
lylhelin
这个作者很懒,什么都没留下…
展开
-
Qi4j和NoSql运动
24日一篇Qi4j and the NoSQL movement文章开始谈Evans DDD和数据库的关系,指出如何使用对象替代关系数据库设计。JavaZone 2009 第二个介绍就是"På tide å kaste ut relasjonsdataben"(Is it time to throw out the relational database...原创 2010-11-16 23:00:06 · 154 阅读 · 0 评论 -
可伸缩性的最差实践
引言在扩展大量大型的分布式系统期间,我有机会观察(并实践)了一些最差实践。这些最差实践中的大部分在开始时都没有危害,但如果疏忽大意,它们就会对系统的发展和可伸缩性构成危害。很多文章都聚焦于最佳实践,以确保拥有一个易于维护和可伸缩的系统,但在本文中,我主要强调的则是一些应该规避的最差实践。技术没有任何一种技术或架构能实现所有的需求。了解何时该反思现有的方法、如何拓宽视野以超越局部范围、或...原创 2010-11-01 17:02:09 · 84 阅读 · 0 评论 -
可伸缩性,美妙的可伸缩性
可伸缩性带来的好处从理论上来说,我认为有两种基本方式可使得系统具有可伸缩性这种至关重要的属性。一种方式是,在设计级别逻辑优化系统。您可以独立于任何软件工具和基础结构元素来考虑系统,然后在物理上建立系统。在实践中,这就意味着最大限度地减少瓶颈和关键资源的影响,同时在尽可能充分利用任务的内在并行性。 另一种方式则截然相反。您主要依靠某种硬件和软件组合的内置特性,而您的解决方案和创造性只发挥次要...原创 2010-11-01 16:37:52 · 251 阅读 · 0 评论 -
大型门户网站架构设计的可伸缩性
我们知道,对于一个大型门户网站来说,可伸缩性是非常重要的,怎么样在纵向和横向有良好的可伸缩性,就需要在做架构设计的时候考虑到一个分的原则,我想在多个方面说一下怎么分:首先是横向的分:1. 大的网站化解为多个小网站:当我们一个网站有多个功能的时候,可以考虑把这个网站拆分成几个小模块,每一个模块可以是一个网站,这样的话我们到时候就可以很灵活地去把这些网站部署到不同的服务器上。2. ...原创 2010-11-01 16:34:49 · 63 阅读 · 0 评论 -
可伸缩性设计
好的设计是实现高度可伸缩的应用程序的基础。在应用程序的生存周期中,设计阶段所做的决策对应用程序可伸缩性的影响最大。可伸缩性金字塔正如可伸缩性金字塔所显示的,速度更快的硬件、软件和优化调整只是可伸缩性等式的一小部分。金字塔的底部是设计,它对可伸缩性的影响最大。沿着金字塔向上,因素的重要性逐渐降低,影响可伸缩性的能力也相应地减小。从金字塔可以看出,与硬件相比,好的设计能够为应用程序带来...原创 2010-11-01 16:27:12 · 322 阅读 · 0 评论 -
为性能和可伸缩性做架构和设计上的Review
部署和体系结构Use distributed architectures appropriately. Do not introduce distribution unnecessarily.适当的使用分布式架构,不要在不必要的时候使用分布式(译注:这个不好把握,主要靠经验,或者讲一些具体例子大家更容易明白)。Carefully select appropri...原创 2010-11-01 16:05:23 · 64 阅读 · 0 评论 -
可伸缩性原则
原文:http://www.infoq.com/cn/articles/scalability-principles从最简单的水平来看,可伸缩性就是做更多的事情。更多的事情可以是响应更多的用户请求,执行更多的工作,或处理更多的数据。设计软件这件事本身是复杂的,而让软件做更多的工作也有其特有的问题。这篇文章针对构建可伸缩软件系统提出了一些原则和方针。1. 减少处理时间...原创 2010-11-01 15:53:59 · 129 阅读 · 0 评论 -
可伸缩性最佳实践:来自eBay的经验
在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算----可伸缩性是生死交关的问题。 在一个可伸缩的架构中,资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量。如果说性能衡量的...原创 2010-11-01 15:49:46 · 130 阅读 · 0 评论 -
云计算的可伸缩性局限性探讨
云计算的可伸缩性 云计算服务因为它的按需付费模式而大获成功,它创造了一种可伸缩性模型: 如果有两个公司,它们正好在相反的时区里,白天都需要10台服务器,晚上只需要1台。那么一个云计算服务商只需要11台服务器就能同时为这两个公司提供服务——在任何一个时间点,拿出10台给一家公司用,1台给另一家。而如果这两家公司都使用自己的服务器,他们每家都要买10台(总共20台)。其中9台服务器会在...原创 2010-11-01 14:39:20 · 879 阅读 · 0 评论 -
云计算入门:云计算不等于分布式计算
云计算是时下十分热门的概念.它到底是个什么好东东呢?以下Gartner给出的定义已经成为经典而被大量引用: Cloud computing is“a style of computing where massively scalable IT-related capabilities are provided ‘as a service’ across the Internet to...原创 2010-11-01 12:37:04 · 150 阅读 · 0 评论 -
全面解析云存储的网格架构
云存储(cloud storage)这个概念一经提出,就得到了众多厂商的支持和关注。Amazon在两年前就推出的Elastic Compute Cloud(EC2:弹性计算云)云存储产品,旨在为用户提供互联网服务形式同时提供更强的存储和计算功能。内容分发网络服务提供商CDNetworks和业界著名的云存储平台服务商 Nirvanix发布了一项新的合作,并宣布结成战略伙伴关系,以提供业界...原创 2010-11-01 11:24:28 · 260 阅读 · 0 评论 -
Google App Engine的架构
在以提供物理资源为目的的IaaS (Infrastructure as a Service )领域里, Amazon EC2是当之无愧的领先者。而在以提供平台为目标的PaaS(Platform as a Service)领域里,Google App Engine 的美誉度是非常高的,我也对其非常关注和爱好,经历我长达一年的学习和钻研,已经对Go...原创 2010-11-01 11:15:29 · 797 阅读 · 0 评论 -
从技术角度剖析云计算的架构
在写《剖析云计算》(编者注:InfoQ中文站近期会推出该书电子版)一书的时候,我发现虽然云计算本身有三层之分,也就是SaaS,PaaS和IaaS,但这种分层本身主要是从用户体验的角度来而言,比如,SaaS主要将应用作为服务提供给客户,IaaS是主要是将虚拟机等资源作为服务提供给用户。而本文将从技术角度来分析和总结云计算的架构。 综述基于对现有的一些云计算产品的分析和我个人的一些经验...原创 2010-11-01 10:53:55 · 277 阅读 · 0 评论 -
构建的可伸缩性和达到的性能
实现伸缩性和性能调优的经验所保有的价值容易被低估。两者都是“晚些时候”或“我们真正流行起来时”所面临的难题。早期创业公司确实不应该立即花这份钱, 而大公司通常不能做出足够快速的反应以实现所需的改变。再加上这需要一个多学科的团队,它立刻就变成了一个需要解决的政治上和工程上的难题。但是它从来不会从我们的视线中消失——在过去的少数几个Qcon会议上,“Architectures You've A...原创 2010-11-01 17:19:39 · 198 阅读 · 0 评论 -
性能与可伸缩性的概念及其关键影响因素
性能与可伸缩性常常决定企业应用的成败,尤其在电信、金融、政府三大行业里,性能成了客户选择中间件平台的决定性因素。遇到性能问题的应用比比皆是,然而往往是等发现性能问题的时候,已经太迟。一个知名的电信合作伙伴的开发人员告诉我:“我们在性能方面,曾经有过血的代价。。。。” 有人说,性能问题是永恒的,看来一点也不夸张。作为中间件平台的提供商,尤其需要对性能有更深刻...原创 2010-11-01 17:22:17 · 338 阅读 · 0 评论 -
真正的线性可伸缩性需要新的模式和中间件架构吗?
在构建线性可收缩应用时,需要新的模式和中间件架构吗?GigaSpaces的CTO,Nati Shalom认为,现有中间件是为以分层为基础的方法而设计的,它们不适合真正的线性可伸缩架构。他提出了新的基于自给自足处理单元的中间件栈(middleware stack)作为替代,它支持分区/向外扩展(scale-out)模型。虽然Shalom提出了一个新的中间件栈,但是几年前,微软的Pat H...原创 2010-11-01 17:27:00 · 111 阅读 · 0 评论 -
Threaded vs Evented Servers
Threaded vs Evented Servers在服务器端,目前共有两种方法处理并发请求:(1)Threaded线程类服务器是使用多个并行线程来处理请求,每个线程处理一个客户端请求,典型的是J2EE或JavaEE服务器。(2)Evented事件类服务器则是循环运行一个事件,用来处理所有连接客户端信息。线程类服务器受限于CPU和线程界限,而事件类服务器并不受限于线程...原创 2010-11-16 22:48:57 · 110 阅读 · 0 评论 -
BASE: An Acid Alternative
In partitioned databases, trading some consistency for availability can lead to dramatic improvements in scalability.DAN PRITCHETT, EBAYWeb applications have grown in popularity over the past de...原创 2010-11-16 21:13:23 · 110 阅读 · 0 评论 -
eBay 的Scalability最佳实践
用什么来衡量一天没有白过? 可能看到一篇好文章能算做一个条件。infoQ 上的这篇 Scalability Best Practices: Lessons from eBay 会让每个架构师都比较激动的。过几天估计 infoQ 中文站就翻译这篇文章了,所以只记录一点自己的想法好了。在其中的 7 个实战经验中,每一条都值得写篇学习笔记,我比较关注面向 DB...原创 2010-11-16 20:52:57 · 80 阅读 · 0 评论 -
Scalability Best Practices: Lessons from eBay
At eBay, one of the primary architectural forces we contend with every day is scalability. It colors and drives every architectural and design decision we make. With hundreds of millions of users wo...原创 2010-11-16 20:45:46 · 95 阅读 · 0 评论 -
SmugMug 的架构介绍
本文介绍的 SmugMug 是一家提供付费图片托管服务的站点,在 2002 年由 Chris MacAskill 与 Don MacAskill 父子二人创建,最初提供面向游戏的视频服务,随后转型为现在的模式。网站流量现在是全球 1800 多,盈利能力自称良好。在 MySQL Conf 2009 上,SmugMug 的 Don MacAskill 做了一次关于Smu...原创 2010-11-16 20:36:35 · 155 阅读 · 0 评论 -
来自淘宝的架构经验
日前参加了一场淘宝网架构师黄裳带来的技术分享,在最后他总计了淘宝这几年来的架构经验,这里和大家分享一下:1、适当放弃一致性2、备份和隔离解决稳定性问题3、分割和异步解决性能问题(类似 eBay 的 Asynchrony Everywhere)4、自动化降低人力成本(类似 eBay 的 Automate Everything)5、产品化管理在这里不妨对比一下 eB...原创 2010-11-16 18:07:23 · 71 阅读 · 0 评论 -
可伸缩性最佳实战
异步同步调用使得组件和组件之间紧密耦合起来,这样就使得要想伸缩应用就需要伸缩所有的组件,这不仅带来使得伸缩的成本增加,而且这种高度耦合性使得伸缩变得更加困难。因此我们需要从应用角度划分出,哪些业务操作是紧密关联的,哪些是可以异步执行的,划分出那些可以异步执行的操作,然后将其进行异步化处理(比如通过JMS,事件队列,多播消息等或者线程池等),这样划分的好处就是系统可以...原创 2010-11-16 17:50:53 · 123 阅读 · 0 评论 -
伸缩性和可用性反模式
这篇文章讲了伸缩性和可用性方面的反模式,也按照自己的理解翻译了一下,欢迎各位探讨。1 单点失败(Single Point of Failure)大部分的人都坚持在单一的设备上部署我们的应用,因为这样部署的费用会比较低,但是我们要清楚任何的硬件设备都会有失败的风险的,这种单点失败会严重的影响用户体验甚至是拖垮你的应用,因此除非你的应用能容忍失败带来的损失,否则得话应该尽量的避免单点风...原创 2010-11-16 17:48:30 · 104 阅读 · 0 评论 -
使用qi4j实现DCI架构
我曾经DCI架构是什么?在一文中提到Qi4j框架实现DCI架构比较好,dzone今天就有一篇文章专门谈Implementing DCI in Qi4j。DCI是一种新的构建面向对象应用的方法途径,DCI: Data数据, Context场景, Interaction交互。该文谈了如何使用DCI构建一个REST API。RolesDCI...原创 2010-11-16 17:24:58 · 232 阅读 · 0 评论 -
DCI架构是什么?
DCI是数据Data 场景Context 交互Interactions的简称,DCI是一种特别关注行为的模式(可以对应GoF行为模式),而MVC模式是一种结构性模式,MVC模式由于结构化,而可能忽视了行为事件。我在javascript事件总线一文中也谈过这个问题,Javascript这种函数式functional语言能够帮助我们更加注重行为事件。DCI可以说是函数式functional编程...原创 2010-11-16 17:07:18 · 563 阅读 · 0 评论 -
纵向扩容 vs. 横向扩容
该文原版著作权属于Malcolm Davis,中文版翻译权属于田东山所有。引用、转载请注明来源为库吧网。这几年来,我经常跟一些程序员、数据库管理员、系统管理员讨论一个问题:想要获得更好的可伸缩性(scalability),我们到底是应该把硬件升级为一台性能更强大的服务器还是应该买多台性能差一些但是可以组装起来协同工作的服务器集群。系统的可伸缩性(scalability)可以定义...原创 2010-11-02 09:58:34 · 6723 阅读 · 0 评论 -
云计算在电信应用中的思考
云计算是在网格(Grid)、效用(Utility)和软件即服务(SaaS)计算的基础上发展起来的一种计算概念。因此,它与分布式、网格和效用计算在概念上有一定的重合处,同时又在适用情况下具有自己独特的含义。如今人们将云计算与更高级别的云抽象化关联起来。由于云计算是一种新兴的计算模式,使用户能够在任何地点、任何时间使用各种终端访问所需的应用。这些应用部署在地域分散的数据中心上,这些数据中心可...原创 2010-11-01 17:59:44 · 145 阅读 · 0 评论 -
超越设计模式
深入探讨超越设计模式之外的设计原则刘 旭进, 软件开发工程师, IBM 中国软件开发中心刘旭进,IBM 中国开发中心软件工程师,对开源软件、REST、Web Service、Open Search 有浓厚兴趣和深入研究。目前在 Lotus Connections Fils Team 从事 REST Service 开发相关的工作。简介: 可复用面向对象软件的基础 -- ...原创 2010-10-23 23:47:58 · 102 阅读 · 0 评论 -
视觉中国的NoSQL之路:从MySQL到MongoDB
文 / 潘凡起因视觉中国网站(www.chinavisual.com)是国内最大的创意人群的专业网站。2009年以前,同很多公司一样,我们的CMS和社区产品都构建于PHP+Nginx+MySQL之上;MySQL使用了Master+Master的部署方案;前端使用自己的PHP框架进行开发;Memcached作为缓存;Nginx进行Web服务和负载均衡;Gearman进行异步任务...原创 2010-10-22 09:28:33 · 115 阅读 · 0 评论 -
事件处理系统的概念模型
简介很多领域中的企业过去总是以一种事件驱动的方式经营,且必须每天处理不断增加的业务事件和交易。事件处理(Event Processing,EP)是一个新兴的领域,主要受到企业对这种大量业务和 IT 事件进行快速响应的需求所推动。它通过更有效地处理具有企业意义的事件来满足支持决策制定周期的需求,在面向服务架构(Service Oriented Architectures,SO...原创 2010-10-20 09:02:40 · 574 阅读 · 0 评论 -
企业架构师需要注意的五个重要趋势
原文:http://www.searchsoa.com.cn/showcontent_30594.htm 众所周知,互联网的结构正在影响着企业的架构。本文尝试着总结一些互联网领域的最新趋势,这些趋势似乎有着足够的能力来改变企业的结构。不用赘述,这几个趋势列举如下: 1、REST:表述性状态转移结构模型可以让互联网以全局扩展的基本元素为基础。详细的解释其基本原理和优势完全超...原创 2010-09-21 14:17:47 · 116 阅读 · 0 评论 -
西门子李伟:怎样才是真正的架构师
原文:http://www.searchsoa.com.cn/showcontent_36694.htm正在加载数据... 西门子中国中央研究院首席架构师、图书《架构之美——软件架构的艺术》作者李伟,从架构师的定义和内涵、能力和素质要求、成长途径等方面向您阐述成为一个真正的架构师需要经历的历程。 记者: 您认为具备哪些能力,才算是真正的架构师? 李伟:虽然业界有关...原创 2010-09-21 11:30:06 · 313 阅读 · 0 评论 -
支付宝蔡学镛:架构师最重视的文档
原文:http://www.searchsoa.com.cn/showcontent_39626.htm 技术文档很多,每种文档都有各自的目的。其中和架构师关系最密切的、甚至架构师应该亲自写的文档是技术白皮书与技术路线图,这两份文档是本次文章的重点。 技术白皮书 White Paper衍生自White Book(白皮书),一般也称为白皮书,但是内容更浓缩、更精华。Wh...原创 2010-09-21 11:25:43 · 195 阅读 · 0 评论 -
极端事务处理模式:Write-behind缓存(转)
原文:http://www.infoq.com/cn/articles/write-behind-caching 介绍应用程序通常使用数据缓存来提高性能,尤其针对那些大量应用只读事务的应用程序更是如此。当数据发生变化时,这些应用程序会直接更新数据库。问题在于随着负载的增加,响应时间将随着更新的增长而延长。数据库并不擅于执行大量处理少量记录的并发事务。相对而言,处理批量事务才是数据库的强项...原创 2010-09-20 22:26:40 · 1004 阅读 · 0 评论 -
每个应用程序都有一个恐怖地下室(转)
原文:http://www.aqee.net/2010/09/20/every-app-has-a-scary-basement/ 一个设计人员对于一个成熟的产品要花很长时间才能意识到这个应用程序的用户界面的各个部分并不是一致的稳定可靠。在应用程序不断改进的数年中,会有一些极其重要但又异常脆弱的组件被开发出来,很多其它功能依赖它们。我把程序里这样的一个特征描述为恐怖地下室:黑暗,陈旧,神秘,...原创 2010-09-20 21:16:55 · 143 阅读 · 0 评论 -
关于框架(转)
原文:http://www.cnblogs.com/zhuweisky/archive/2007/04/16/715019.html 框架和类库等概念的出现都是源于人们对复用的渴望。“不要重复发明轮子”,成了软件界的一句经典名言。从最初的单个函数源代码的复用,到面向对象中类的复用(通常以类库的形式体现),再到基于组件编程中二进制组件(.NET中是以IL程序集形式存在的)的复用,人们复...原创 2010-09-20 21:13:20 · 91 阅读 · 0 评论 -
我的架构经验小结-- 常用的架构模型(转)
原文:http://www.cnblogs.com/zhuweisky/archive/2006/12/23/601116.html 经过这几年的积累,在系统架构方面逐渐积累了一些自己的经验,到今天有必要对这些经验作个小结。在我的架构思维中,主要可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。一.三种架构模型1.3/N层架构 这是经典的多层...原创 2010-09-20 21:10:33 · 279 阅读 · 0 评论 -
软件的艺术之美源于权衡(Trade-off) (转)
原文:http://www.cnblogs.com/zhuweisky/archive/2005/09/11/234301.html软件架构师的主要职责是什么?是抉择、是权衡。把软件称为艺术一点都没有夸张,可以说软件是科学、工程、与艺术的结合体。软件的艺术体现在权衡上。在这一期的《程序员》杂志上看到了一篇“鱼与熊掌--完美主义架构师的梦魇”,其中关于权衡要素的论述正切合我之所想,现将主要部...原创 2010-09-20 18:24:49 · 106 阅读 · 0 评论 -
企业(分布式)计算十大谬误 (转)
企业(分布式)计算十大谬误 最初Peter Deutsch从J2EE的企业开发中总结了7大谬误,后来,James Gosling在其基础上增加了一条,再后来,Ted Neward又在其上增加了两条,总共为“十大谬误”。这段时间正在看两本书:《Effective Enterprise Java》和《J2EE AntiPatterns》,恰好两本书都提到了“分布式计算的*大谬误”,我在...原创 2010-09-20 18:17:52 · 99 阅读 · 0 评论