软件架构的scalability

两个方面

系统性能可扩展

algorithm

scale up - 计算密集应用,使用multithread;io密集应用,async io (reactive,for example,js node,c++ ace,java netty mina)

scale out - share no status,share little status(正例hadoop,反例 oracle rac),分布式ADT((probability)monoid etc.)

hybrid -  cache (与scale out的tradeoff), batch

系统功能可扩展

源码级 - design pattern ,oo (prefer composition to inheritance) , function combinator

系统级 - 解耦, message middleware,pipeline architecture,micro service

跨系统 - restful

时间: 2024-08-08 02:22:42

软件架构的scalability的相关文章

软件架构分类(转载)

思维导图: 作者:阮一峰(以下内容) 日期:2016年9月 3日 软件架构(software architecture)就是软件的基本结构. 合适的架构是软件成功的最重要因素之一.大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任. O'Reilly 出版过一本免费的小册子<Software Architecture Patterns>(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物.我读后受益匪浅,下面就是我的笔记. 一.分层架构 分层架构(lay

基于微服务的软件架构模式(转载)

转载:原文链接 基于微服务的软件架构模式 [编者的话]微服务只是最近提出的概念,实际上很多巨头公司(FB.Twitter.AWS等)已经在亲身实践.微服务并不是银弹,但是我们可以参考它的 思想来解决自己遇到的问题.对于已经找准市场,业务即将或者马上就要急剧发展的创业公司,适合使用基于微服务的软件架构. 今天阅读了两篇关于微服务的文章,总结一些笔记,简单翻译了一篇文章.说明:并没有严格按照原文一字语句翻译,有部分自己的理解,还有部分是意译. 微服务(micro services)这个概念不是新概念

软件架构分解

https://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/index.html 什么是软件架构 如果期望有一个权威统一的标准定义,那答案是没有,目前存在多种软件架构的定义,可以说百花齐放,百家争鸣.其中 IEEE1471-2000 的定义是这样的:系统的架构是系统组件的基本组织形式,它们之间的关系以及和环境之间的关系,以及指导其设计和演化的原则.该定义中的系统组件可以理解为架构元素,根据涉及到的系统范围和层次,架构元素可以是子

五种常见软件架构

一.分层架构 分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构.如果你不知道要用什么架构,那就用它. 这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节.层与层之间通过接口通信. 虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见. 表现层(presentation):用户界面,负责视觉和用户互动 业务层(business):实现业务逻辑 持久层(persistence):提供数据,SQL 语句就放在这一层 数

SoC嵌入式软件架构设计之四 :内存空间规划分配

本文继续阐述基于低端控制器CPU的SoC固件架构设计.第一节 SoC嵌入式软件架构设计之一:系统内存需求评估 讲述了系统内存需求的评估.这一节讲述内存空间的具体规划分配.CPU有两种体系结构:哈佛结构和冯诺依曼结构.哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如80251,代码空间与数据空间完全分开,独立编址:冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构,如MIPS,ARM等,其代码和数据空间是统一编址.这里就以冯诺依曼体系结构为例. 一.嵌入式系统软件分层

软件架构(一) 软件架构

本文主要阐述什么是软件架构.软件架构的重要性.什么时候软件架构尤其重要.什么是推定架构以及软件架构的三种使用方式. 1.什么是软件架构? 架构与详细设计 软件系统的设计由开发者的决策与意图组成.设计可以被划分为软件架构和详细设计. 专家们一致认同架构的主干,但是在细枝末节上却存在分歧,比如何时终止架构的设计而开始详细的设计. 在实践中,也很难将架构和详细设计区分开来. 卡内基·梅隆大学软件工程研究所(SEI)对软件架构的定义: 计算系统的软件架构时解释该系统所需的结构体的集合,其中包括:软件元素

软件架构设计的目的

软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割.但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等, 耦合可以分为以下几种,它们之间的耦合度由高到低排列如下: (1) 内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合. 若在程序

软件架构设计系列总结

架构引用维基百科:软件体系结构是构建计算机软件实践的基础.与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础.从和目的.主题.材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟.一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计.软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作.逻辑和流程.软件

SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则

上一节讲述了在没有MMU的CPU(如80251.MIPS M控制器系列.ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法,新设计的内存管理管理单元要实现虚拟内存管理还需要操作系统.代码分块(Bank)的支持,详见SoC嵌入式软件架构设计之二:没有MMU的CPU实现虚拟内存管理的设计方法.这里要阐述Bank设计的一些原则. Bank设计是为了实现不同时刻运行的Bank(代码块)运行在同一块内存上,所以在运行之前操作系统需要将已存在内存的代码/数据进行缓存处理,并加载将要运行的Ba