`
文章列表
本文介绍的  SmugMug   是一家提供付费图片托管服务的站点,在 2002 年由 Chris MacAskill 与 Don MacAskill 父子二人创建,最初提供面向游戏的视频服务,随后转型为现在的模式。网站流量现在是全球 1800 多,盈利能力自称良好。 在 MySQL Conf 2009 上,SmugMug 的  Don MacAskill   做了一次关于SmugMug 网站架构 的分享。 SmugMug 整个网站采用 LAMP 架构(其实也有 OpenSolaris),300 多台 4 核(或更多)的服务器(大多是 AMD 的 CPU) ,分散在四个机房 ...
日前参加了一场淘宝网 架构师黄裳带来的技术分享,在最后他总计了淘宝这几年来的架构经验,这里和大家分享一下: 1、适当放弃一致性 2、备份和隔离解决稳定性问题 3、分割和异步解决性能问题(类似 eBay 的 Asynchrony Everywhere) 4、自动化降低人力成本(类似 eBay 的 Automate Everything) 5、产品化管理 在这里不妨对比一下 eBay 的架构经验: 1、 Partition Everything 2、 Asynchrony Everywhere 3、 Automate Everything 4、 Remember Ev ...
异步 同步调用使得组件和组件之间紧密耦合起来,这样就使得要想伸缩应用就需要伸缩所有的组件,这不仅带来使得伸缩的成本增加,而且这种高度耦合性使得伸缩变得更加困难。因此我们需要从应用角度划分出,哪些业务操作是紧密关联的,哪些是可以异步 执行的,划分出那些可以异步 执行的操作,然后将其进行异步 化处理(比如通过JMS,事件队列,多播消息等或者线程池等),这样划分的好处就是系统可以应对更大的访问量,消弱访问峰值,比如在同步的时候A调用了B,那么用户能接受响应时间就是A处理时间+B处理的时间,而采用异步 以后,当访问量增大的时候,因为A和B异步,那么A很快返回,用户体会不到延 ...
这篇文章讲了伸缩性 和可用性方面的反模式,也按照自己的理解翻译了一下,欢迎各位探讨。1 单点失败(Single Point of Failure) 大部分的人都坚持在单一的设备上部署我们的应用,因为这样部署的费用会比较低,但是我们要清楚任何的硬件设备都会有失败的风险的,这种单点失败会严重的影响用户体验甚至是拖垮你的应用,因此除非你的应用能容忍失败带来的损失,否则得话应该尽量的避免单点风险,比如做冗余,热备等。2 同步调用 同步调用在任何软件系统中都是不可避免的,但是我们软件工程师必须明白同步调用给软件系统带来的问题。如果我们将应用程序串接起来,那么系统的可用性就会低于任何一个单 ...
我曾经DCI架构是什么? 在一文中提到Qi4j框架实现DCI 架构比较好,dzone今天就有一篇文章专门谈Implementing  DCI   in Qi4j。 DCI是一种新的构建面向对象应用的方法途径,DCI: Data数据, Context场景, Interaction交互。该文谈了如何使用DCI 构建一个REST   API。Roles DCI核心思想是:对象不是由单个类如POJO组成的,而是使用Roles角色来组合组装功能,再具体一点,当我们在这里说“对象Object”,是指
DCI是数据Data 场景Context 交互Interactions的简称,DCI是一种特别关注行为的模式(可以对应GoF行为模式),而MVC模式是一种结构性模式,MVC模式由于结构化,而可能忽视了行为事件。我在javascript事件总线 一文中也谈过这个问题,Javascript这种函数式functional语言能够帮助我们更加注重行为事件。 DCI可以说是函数式functional编程比如Scala带来的一个理念,The  DCI   Architecture: A New Vision of Object-Oriented Programming一文(以下简称DCI ...
如今,异步 EDA是一个潮流,滚滚而来,让我们看看主流框架Spring 3.0新版本有没有顺应这新趋势,Asynchronous method invocation in Spring 3.0 介绍了异步 使用。 @Async让方法能够被异步 调用,以及定时运行。如下:    @Component public class MailUtility { @Async public void sendMail(String name){     System.out.println(” I Will be formatting html mail and send ...
当设计并发策略时,要将 "what做什么"和 "how怎么做"进行分离,Prefer Futures to Baked-In "Async APIs" 一文介绍了如何使用语言的并行API通过异步 来实现这点。 普通同步性质的方法如下: RetType DoSomething( InParameters ins, OutParameters outs ); 如果DoSomething 将花费很长时间执行,无论它是否耗费CPU,比如从数据库中加载一个数据就是很耗费时间的,那么是不是在DoSom ...
asyn4j 是一个java异步方法调用框架,包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring. 让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力. 使用说明详见:http://code.google.com/p/asyn4j/wiki/user_guide  
Everyone loves client side templates. They are a great way to create html which is something JavaScript apps do all the time. In February, a jQuery templating system was proposed and resulted in a tremendous amount of discussion , followed by an official templating engine for jQu ...
Thursday 11 November, 2010 by justinbmeyer Earlier this week, I realized that every organizing-a-jQuery-application blog, article, and conference talk misses the most important lesson on how to organize a jQuery app. They talk about how to organize an individual widget or piece of functional ...
This post is part of our ReadWriteHack channel, which is a resource and guide for developers. The channel is sponsored by the Intel AppUp Developer Program . As you're exploring these resources, check out this helpful resource from our sponsors: AIR for AppUp: What You Need To Know Jupiter ...
你应该听过或读过不少关于测试驱动开发的讨论,测试驱动开发往往被比喻为神奇的独角兽,它能帮你照看你的软件,让大家乐得其所。于是,在写了18.000行“神奇独角兽”代码后,我想把我们的体验从整体的角度阐述一下。 ...
Git 是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius 和Merb 在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano 和Vlad the Deployer 这样的部署工具所使用。  如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。 GitHub 可以托管各种git库,并提供一个web界面,但与其它像 So ...
his post is part of our ReadWriteHack channel, which is a resource and guide for developers. The channel is sponsored by the Intel AppUp Developer Program . As you're exploring these resources, check out this helpful resource from our sponsors: AIR for AppUp: What You Need To Know There's a ...
Global site tag (gtag.js) - Google Analytics