1. 传统的分层结构+message broker + worker
传统的层结构老生常谈了: UI 层,service,业务逻辑,数据层。就不赘述了
与worker形成producer-consumer模式,可自由控制worker的数量
业务上异步
使用不同队列管理不同业务请求,业务上可横向扩展

优势: 开发效率比较高,业务和应用扩展性都还可以。
劣势: 运维监控以及上线部署流程不适用于互联网应用。
适用: 中小型项目,大型项目如果不对业务分离部署也可考虑使用。


2. CQRS
从业务上划分读写请求model,也就是query和command。
读请求一般直接读缓存。而缓存和主库之间采用单向同步,有些应用也会考虑在写的时候同时更新缓存。
写请求会进入event source,然后更新主库。

优势: 架构简单,开发速度快。
劣势: 没有消息中间件,使得业务上很难分离也无法独立扩展,靠纯异步提高并发能力导致数据库压力大(相比于上面一种架构)
适用: 短平快项目


3. Microservice
最近流行的一种架构,特征是服务间完全分离。程序入口会有一个api gateway来做对接。
优势: 业务和应用的扩展性,性能,运维监控,以及上线都不是问题。
劣势: 搭建环境和开发的难度较大,需要大量人力资源来完成。
适用: 大型应用。


总结: 没有一成不变的架构,可以说是因公司业务,团队而异,架构一旦确定,也是一个演化的过程。就拿微服务来说,对于业务简单的软件项目而言,根本没有必要,盲目跟风只会导致不必要的复杂度。Steve McConnell的《代码大全》中说过: 管理复杂度是程序员的首要使命。对于设计而言,也是一样。

Azure 软件架构选择的更多相关文章

  1. azure 架构选择

    在azure中主要有以下3种不同的托管环境. 平台即服务(PaaS)提供了可管理的托管环境,可以直接部署应用而不需要关心背后的虚拟机和网络资源.例如,当需要托管一个应用时,只需要指定实例的个数,azu ...

  2. 最全的Windows Azure学习教程汇总

    Windows Azure 是微软基于云计算的操作系统,能够为开发者提供一个平台,帮助开发可运行在云服务器.数据中心.Web 和 PC 上的应用程序. Azure 是一种灵活和支持互操作的平台,能够将 ...

  3. 跟我学Windows Azure 三 使用vs2013创建windows azure web site

    首先我们需要登陆我们的windows azure上,然后访问 https://manage.windowsazure.cn/publishsettings/index 他会让我们下载我们的订阅证书文件 ...

  4. Windows Azure Cloud Service (38) 微软IaaS与PaaS比较

    <Windows Azure Platform 系列文章目录> 最近一直想总结Azure IaaS和PaaS的区别与比较,写个博文详细说明一下.建议读者在阅读之前,先熟悉微软PaaS和Ia ...

  5. 将SQL Azure数据库备份到本地SQL Server 2012

    整个备份过程可以分为如下两大步骤进行: 一.通过“Export Data-tier Application”先将目标SQL Azure的数据库备份到本地,详细步骤如下: 1.启动SQL Server ...

  6. Azure上A/D系列虚拟机到DS系列迁移(2)

    11. 该脚本会检测环境,停止虚拟机,拷贝VHD文件,创建磁盘等等,知道出现如下类似画面,他会暂停等待用户操作: 后面这几个步骤非常重要,关系到你后续的创建是否成功: 12. 进入D:\migvm目录 ...

  7. 在Azure Cloud Service中部署Java Web App(2)

    接上文. 9.在进行发布之前,需要对我们的订阅做一些设置,因为默认情况下,Azure的service end指向的是Azure global的站点,如果我们要将服务发布在Azure的中国站点,需要做下 ...

  8. 初码-Azure系列-记一次MySQL数据库向Azure的迁移

    初码Azure系列文章目录 还在继续给客户迁移不同的系统到Azure,这一次是一个系统的MySQL数据库要迁移,将迁移过程记录一下 原系统环境 数据库版本:MySQL Community Editio ...

  9. Module 3 - Azure - Web Apps

     Module 3 - 微软云 Azure - Web Apps 1. Create new Web application in the Azure Portal Azure Portal -> ...

随机推荐

  1. 20145327 实验四 Andoid开发基础

    20145327 实验四 Andoid开发基础 安装Android Studio 安装过程出现未找到SDK的错误,只需在打开界面找到右下角的设置按钮,将路径设置为如下就可以运行.(默认安装路径) 设计 ...

  2. 20145331实验五 Java网络编程及安全

    20145331魏澍琛 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码 ...

  3. Android中C可执行程序编译问题

    make:进入目录'/opt/FriendlyARM/tiny4412/android/android-4.1.2'make: *** 没有规则可以创建“out/target/product/gene ...

  4. nxp的layerscape系列芯片中的rcw指定了一些什么信息

    答:指定了一些可以配置的硬件信息(如可以配置uart相关的引脚功能).引导镜像(uboot)的读取地址以及从何种介质(flash,sd)启动系统的信息

  5. ipvs+ldirectord实现高可用ipvs

    一.heartbeat准备 1.接上文 2. 安装heartbeat-ldirectord组件包 [root@node1 heartbeat]# -.el6.x86_64.rpm 3.ldirecto ...

  6. input[type="file"]的样式以及文件名的显示

    如何美化input[type="file"] 基本思路是: (1)首先在 input 外层套一个 div : (2)将 div 和 input 设置为一样大小(width和heig ...

  7. Pandas 数据分析基础

    Pandas 安装 anaconda 安装: conda list pandas 查看是否已经安装 conda install pandas conda update pandas pip 安装 pi ...

  8. 自学Java测试代码 - 简单地Student类

    2017-08-23  23:45:38 writer:pprp 写这个还蛮开心的 package test; public class Student { //创建成员变量 String name ...

  9. HDU 5773 The All-purpose Zero(O(nlgn)求LIS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5773 题意: 求LIS,其中的0可以看做任何数. 思路: 因为0可以看做任何数,所以我们可以先不管0,先求一遍L ...

  10. saga+.net core 分布式事务处理

    Apache ServiceComb Saga 是一个微服务应用的数据最终一致性解决方案 中文官方地址:https://github.com/apache/servicecomb-saga/blob/ ...