常用架构模式优缺点

很多介绍设计优缺点都是先从有点讲起,那是为了宣传,为了让别人用,我觉得对于开发者自己而言,缺点反正是最需要知道的。

个人认为:对于架构的选择,如果不能看见最直白的好处,那么就绝对不要使用,至于没有看到好处是因为真的没有好处,还是因为你的资历不够没法抓住,这都都不重要。

毕竟架构的使用因人而异,因业务而异,在选择问题上,不仅要适应公司业务发展,更需要适合自己,最后的执行人是自己,不是理论也不是别人,自己的思维能力才是自己做工作的基础,别的东西都是参考。

一 事件溯源——ES

缺点:

1 肯定需要增加更多的存储空间来容难历史数据

2 从历史数据恢复到最新状态,肯定会造成性能损失,(折衷方案)----可以使用快照

3 肯定不适合领域专家对业务事件几乎没有关注点的系统,如果使用了此架构,必然就是浪费劳动力

4 没有好的IDE和框架来支持,必须自己从头设计或者人使用别人写的类库

优点:

1 能够轻易的跟踪系统内发生的一切,事件并没有固定的结构或格式,只是一组属性,将会以某种方式持久化。

2 支持无限的业务场景可扩展性,理论上来讲,不管何时,只要领域专家提出想要关注任何事件,系统都能够轻松实现。

3 支持假设场景,通过事件存储和处理事件,你可以在任何需要的时候构建某个时间的状态,这个概念被称为事件回放,通过事件回放,业务可以知道假设场景下的状态

4 没有强制要求的技术,事件和事件溯源是架构概念,具体实现细节,由你自己来定

 二 CQRS

不同于DDD,CQRS不是设计企业级系统的全面方案,只是一个模式指导你架构更大系统的特定绑定上下文。

缺点:

1 增加学习成本、和初期分析成本

优点:

1简化设计,业务的实现进行读写分离,防止不想要的操作出现在读取或写入的过程里。

2 增强可伸缩性的潜能,实现可伸缩性取决于最常执行的操作。如果是读取,就引入缓存,减少数据库访问次数;如果是吸入,可以考虑从同步写入换到异步写入甚至命令队列。

3 必须在深入理解你的应用程序读取什么和写入什么,对查询和命令的考虑,引导你按照任务和基于任务的界面进行分析,这对于最终用户来说非常友好

4  非常适合协作系统(是指那些多多用户并发访问,并应用了复杂和不断变化的业务规则)

时间: 2024-11-29 07:09:32

常用架构模式优缺点的相关文章

三高系统常用架构模式

总结一下三高(高性能.高并发.高可用)系统在架构时常见的模式及技术. 面向互联网的三高系统,最关注的软件质量属性是:性能.可用性.伸缩性.扩展性.安全性. 而构建此类系统,最常见的架构模式有:横向分层.纵向分割.分布式化.集群化.使用缓存.使用异步模式.使用冗余.自动化(发布.部署.监控). 具体来说,可以在不同层次常用的技术有: 前端架构 浏览器优化技术:合理布局,页面缓存,减少http请求数,页面压缩,减少 cookie 传输. CDN DNS负载均衡 动静分离,静态资源独立部署 动态图片独

分层与架构模式

1 企业应用计算的演变 这个我们应该是在学HTML的时候就已经学习了一部分了,现在再来回忆一些理论知识! •主机/哑终端的集中计算模式 大型主机管理和控制应用程序的所有方面,包括业务处理.数据管理和屏幕显示.使用者一般通过只有一个屏幕.一个键盘和一根主机连接线的“哑终端”与主机的应用程序进行交互. 缺点: 一台计算机中进行全部的处理. 应用程序非常难于维护. 专用特性使得它们非常难于集成其他平台上的其他应用程序 •客户机/服务器计算模式 –分布式客户/服务器 (Client/Server,简称C

DDD CQRS架构和传统架构的优缺点比较

明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概念.我个人也写了一个ENode框架,专门用来实现这个架构.CQRS架构本身的思想其实非常简单,就是读写分离.是一个很好理解的思想.就像我们用MySQL数据库的主备,数据写到主,然后查询从备来查,主备数据的同步由MySQL数据库自己负责,这是一种数据库层面的读写分离.关于CQRS架构的介绍其实已经非常

端游及手游服务端的常用架构

这篇文章还是讲的不错的: http://www.cocoachina.com/game/20150924/13545.html <开发者详解:端游及手游服务端的常用架构> 整理自知乎,文/韦易笑 开始的部分讲的比较简略.讲到后面大型MMO以及战网游戏,就比较入流了. 开宗明义,手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单

基础入门_Python-模块和包.深入Celery之常用架构/方案选型/必知必会?

简单介绍: 说明: 此模块是一个专注于分布式消息传递的异步任务队列,所谓任务就是消息,消息中的有效载荷中包含要执行的任务需要的全部数据 几大特性: 1. Celery易于使用和维护,且不需要配置文件,默认配置启动时自动写入消息代理. 2. Celery高可用,连接丢失或失败时客户端或消费者会自动重试,并且可通过消息代理的双主/主从模式来提高高可用性 3. Celery快速,单个进程每分钟可处理百万任务,且优化后可保持往返延迟在亚毫秒级别 4. Celery灵活,几乎所有部分都支持扩展或单独使用,

Hibernate(1)——数据访问层的架构模式&lt;转&gt;

数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设计目标 数据映射器架构模式 JDBC的缺点 Hibernate简介 迅速使用Hibernate开发的例子 Hibernate的核心类和接口,以及他们的关系 POJO和JavaBean的比较 之前的一篇总结文章: 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型 简单来说,就是在软件开发领域,可以用模型表示真实世界的实体.针对数据库就分为: 概念模型(

大型网站架构模式

一.前言 为了解决大型网站面临的高并发访问.海量数据处理.高可靠运行等一系列问题与挑战,大型互联网公司在时间中提出了许多解决方案,以实现网站高性能.高可用.易伸缩性.可扩展.安全等各种技术架构目标. 二.分层 最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责.然后通过上层对下层的依赖和调用组成一个完成的系统.网站一般分为三个层次:应用层.服务层和数据层,其具体结构如下图所示: 通过分层,一个庞大系统切分成不同部分,便于分工合作和维护.各层之间具有一定的独立性,只要维持调用接口

大型网站技术架构(二)--架构模式

大型网站技术架构(一)--大型网站架构演化 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠运行灯一系列问题与挑战.为此,在实践中提出了许多解决方案,以实现网站高性能.高可靠性.易伸缩.可扩展.安全等各种技术架构目标. 1.分层 分词是企业应用系统中最常见的一种架构牧师,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后

移动APP架构模式

移动APP架构模式 本文主要总结了几种常用的架构模式, 基本是层层递进的, 转载请注名出处: http://blog.csdn.net/uxyheaven 在一个app的不同生命周期采用不同的架构模式可以有效的提高开发效率 基本的MVC 移动app一般都是采用经典的mvc架构 层次 作用 设计原则 模型层(model) 封装了应用的一系列数据, 并定义了操作, 处理这些数据的逻辑和计算规则. 通过C:Notification,KVO对控制器进行反馈 视图层(view) 视图对象是一个应用中, 用