当前位置: 首页 > news >正文

Azure 软件架构选择

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


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


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


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



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




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



相关文章:

  • Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)
  • 简单说说什么是Restful
  • Flex与.NET互操作(十三):FluorineFx.Net实现视频录制与视频回放
  • Swift中的本地化实现
  • Azure .Net应用架构原型
  • Nebula3中的委托(Delegate)
  • 使用微软T4 template进行代码生成
  • ora-12537教训
  • Asp.Net MVC webAPI Token based authentication
  • Asp.Net 2.0 TreeView的Checkbox级联操作
  • azure最佳实践系列1-自我修复的设计
  • Nebula3 RTTI 小技巧
  • azure 最佳实践 -- 保持冗余
  • Swift 3 打印功能
  • 还需要编写DAO代码吗?SQL+接口就足够了!(Part 1)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【RocksDB】TransactionDB源码分析
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CSS相对定位
  • Java程序员幽默爆笑锦集
  • Java面向对象及其三大特征
  • node和express搭建代理服务器(源码)
  • socket.io+express实现聊天室的思考(三)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue-cli3搭建项目
  • WePY 在小程序性能调优上做出的探究
  • 初探 Vue 生命周期和钩子函数
  • 仿天猫超市收藏抛物线动画工具库
  • 浮现式设计
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于游标的分页接口实现
  • 模型微调
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 网络应用优化——时延与带宽
  • # 飞书APP集成平台-数字化落地
  • #NOIP 2014# day.2 T2 寻找道路
  • (3)(3.5) 遥测无线电区域条例
  • (C++17) optional的使用
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)c52学习之旅-简单了解单片机
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net对接阿里云CSB服务
  • .NET连接数据库方式
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .考试倒计时43天!来提分啦!
  • :O)修改linux硬件时间
  • @RestController注解的使用
  • [BZOJ2208][Jsoi2010]连通数
  • [C#][DevPress]事件委托的使用
  • [C#]winform部署yolov5-onnx模型
  • [CF226E]Noble Knight's Path