`
talentluke
  • 浏览: 593333 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

应用架构设计的三个类型

 
阅读更多

转载http://www.jdon.com/43952

前段时间在论坛回答两个问题:事务和事件 ,这两个概念涉及到业务和技术架构的区分问题,合适的架构解决合适的业务,就像不同运输工具装载不同的运输物一样,人用客车装载,货物用卡车装载。

通过长期业务实践,我们会发现业务中隐约有一些通用共同的东西,如果我们能够总结出这些通用的业务功能应该使用什么技术架构解决,也就是解决了大部分软件系统的共性问题,可以避免初学者范方向性基本错误,特别是当前云计算 环境下的编程,云计算那些强大的技术服务应该适用怎样的业务,只有这些问题搞清楚了,才能更好地使用云计算

从我个人经验来看,业务中通用的东西提炼出来,分为三种模型:串行 星形和并行,见文后附图:

1.串行:这实际代表事务 处理,每次只能存在一个处理过程,在这个过程中调用多个函数,这是一个不可逆的过程,讲究前后顺序时序,每个环节都会产生结果数据。

2.星形:这实际代表一种操作共同数据的模型,比串行要灵活一些,允许多个过程操作一个数据,雅称称:并发计算concurrency computing

3.并行,这比星形更加自由,每个过程都独立于另外一个过程,互相不干扰,雅称并行计算Parallel Computing。

上面三个模型中都涉及两个基本元素:动态过程和静态数据,三个模型实际是这两个元素不同的组合结果,而过程和数据从哲学上讲可以说是抽象时空的两个基本要素,那么我们也许可以假定这三个模型已经涵括大部分需要软件实现的现实中业务系统。

再回到事件 事务 两个概念,很显然,串行模型特点和事务 特点非常吻合,因此,如果遇到业务中强调事务 实现的,如交易事务 等等应该是用严格的串行模型实现。

事件 概念一般是突发的,无法人为控制,如某地发生XX大事件 ,所以,事件发生的特点肯定是发散或同时的,很显然,星形模型和并行模型特点和事件 特点吻合。

既然这三个模型是业务和技术的接口模型,也就是说,业务人员和技术人员对这三个模型各有各的理解,通过这三个模型他们能够找到沟通点,也能找到业务功能对应的技术实现途径。

再从“同步”和“异步”来看三个模型,串行模型无疑属于“同步”;而另外两种模型无疑是异步的,或者可以说,不严格要求是同步,而通常异步能够带来高效率和高性能,因此,可以认为是“异步”的。

最 后再从“有状态stateful”和“无状态stateless”角度来看这三个模型,串行和星形属于有态的,而并行属于无态,这里状态实际就是静态数 据,有态表示不同过程需要共享同一个静态数据,从基本常识来看,为获得高性能,这种静态资源争夺必然会降低性能,因此,如果限制静态数据为不可变的,那么 就无需使用多线程锁进行独占式修改访问,应此也会提升性能。


[该贴被banq于2012-05-16 17:28修改过]


分享到:
评论

相关推荐

    微软应用架构指南(第2版)中文版

    本书分为四个部分:diyi部分“软件架构和设计篇”提供了对底层原则和模式的总结,第二部分“设计基础篇”提供了有关设计解决方案分层、组件及服务的指导原则,以及处理有关质量特性和横切关注点的一些指导原则,第三...

    UML和模式应用(架构师必备).part06.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    MySQL5.1性能调优与架构设计.mobi

    ●架构设计篇则主要以设计一个高可用可扩展的分布式企业级数据库集群环境为目标,分析介绍了通过MySQL实现这一目标的多种架构方式。主要包括可扩展和高可用两部分内容,可扩展部分包括设计原则、Replication的利用、...

    架构之美(中文清晰完整版)

    第3章 伸缩性架构设计 51 3.1 简介 51 3.2 背景 52 3.3 架构 56 3.4 关于架构的思考 61 第4章 记忆留存 67 4.1 功能和约束 68 4.2 工作流 69 4.3 架构关注点 70 4.4 用户反应 90 4.5 结论 90 参考文献 90...

    资源管理系统架构设计及开发-L1(入库).xlsx

    资源管理系统架构设计及开发-L1(入库 2051018 单选 以下哪个表空间不能设置为OFFLINE? 2051019 多选 资管系统基础功能批量导入数据,系统会对数据进行校验,校验内容是()。 2051020 多选 资管系统承载的家客驻地...

    PetShop4.0宠物商店+系统架构设计+中文注释源码+PDF中文详解

    16、 OrderInfo.cs文件:用于显示用户某一个订单具体信息的类,在此一个订单当中,可能包括多个商品种类,即包括多个LineItemInfo对象(实际上在OrderInfo类中也确实存在LineItemInfo类型对象的一个数组!...

    网络架构安全设计.pptx

    可以把一个网络系统中众多的网络设备分成若干个虚拟的工作组 安全作用 建立VLAN之间的访问机制,阻止蠕虫和恶意病毒的广泛传播 建立VLAN区域安全和资源保护,将受限制的应用程序和资源置于更为安全的VLAN中 8 网络...

    架构之美(中文版)

    第3章 伸缩性架构设计 51 3.1 简介 51 3.2 背景 52 3.3 架构 56 3.4 关于架构的思考 61 第4章 记忆留存 67 4.1 功能和约束 68 4.2 工作流 69 4.3 架构关注点 70 4.4 用户反应 90 4.5 结论 90 参考文献 90...

    LabVIEW Core3第三课创建应用程序架构 中英双语

    应用程序数据类型和通知程序,系统级测试对于评估应用程序的所有方面都很重要。 以下每种类型的测试: 配置测试用于在各种不同的软件配置中验证系统,例如不同的硬件配置不同的屏幕分辨率、 多个操作系统或其他系统...

    delphi三层架构框架

    MateyFrame是一款由Delphi开发的三层架构框架,经过多年的升级改进,版本由MateyFrame V1.0升级到了当前的MateyFrame V5.0版本。MateyFrame V5.0具有功能强大、负载量大、安全性高、可扩展性强、同时支持B/S与C/S...

    UML和模式应用(架构师必备).part02.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    Java高并发高性能分布式框架从无到有微服务架构设计(1).doc

    Java高并发高性能分布式框架从无到有微服务架构设计 微服务架构模式〔Microservice Architect Pattern〕.近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将...

    UML和模式应用(架构师必备).part01.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    UML和模式应用(架构师必备).part07.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    UML和模式应用(架构师必备).part03.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    UML和模式应用(架构师必备).part04.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    UML和模式应用(架构师必备).part05.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    UML和模式应用(架构师必备).part08.rar

    6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 ...

    09_高性能应用设计与开发技术.pptx

    高性能应用设计与开发技术Spring性能优化实践 尽量让spring来管理Java对象,尤其是业务服务,数据访问,资源,Web处理; 尽量避免对Spring Context的定制化; 如果应用启动过慢,可以尝试延迟加载Spring配置(风险:...

    微服务架构和基于容器参考应用程序eShopOnContainers.zip

    我们正在创造一个参考指南/电子书名为“构建和开发集装箱和微服务基于.NET应用程序”,其详细阐述了如何开发这种建筑风格(微服务,多克尔容器,领域驱动设计某些微服务)以及其他更简单的架构风格,如可以作为...

Global site tag (gtag.js) - Google Analytics