• DDD:DDD+CQRS+高伸缩性的分布式架构


    DDD:DDD+CQRS+高伸缩性的分布式架构

    物理架构

    物理架构优势

    • WEB服务器可以单独做负载平衡(独立伸缩)。
    • 应用服务可以单击做负载平衡(独立伸缩)。
    • 容易引入“后台任务服务器”(正在做这方面的支持)。
    • 支持混合部署(一部分业务逻辑运行在WEB服务器,一部分业务逻辑运行在应用服务器),部署方式对开发人员几乎透明。

    如何选择部署模型

    • 当用户数少(自己测试)的时候可以不用应用服务器,只做WEB负责平衡。
    • 当用户数多(自己测试)的时候,将频繁执行的业务逻辑分离部署到应用服务器上。
    • 对于那些长时间(自己测试)执行的任务,将它们部署到后台任务服务器上。

    示例代码

    项目结构

    WEB服务器代码

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.Mvc;
     6 
     7 using System.Diagnostics;
     8 
     9 using Microsoft.Practices.ServiceLocation;
    10 
    11 using Happy.Commands;
    12 using Happy.WCF.Demo.Commands;
    13 using Happy.WCF.Commands;
    14 
    15 namespace Happy.WCF.Demo.Mvc.Controllers
    16 {
    17     public class DefaultController : Controller
    18     {
    19         public ActionResult Index()
    20         {
    21             var watch = Stopwatch.StartNew();
    22 
    23             var localBus = ServiceLocator.Current.GetInstance<ICommandBus>();
    24             var localCommand = new TestCommand { X = 5, Y = 5 };
    25             localBus.Send(localCommand);
    26 
    27             watch.Stop();
    28 
    29             var localMessage = string.Format("本地命令:{0} + {1} = {2},执行时间:{3}", localCommand.X, localCommand.Y, localCommand.Result, watch.Elapsed);
    30 
    31 
    32             watch = Stopwatch.StartNew();
    33 
    34             var remoteBus = ServiceLocator.Current.GetInstance<ICommandBus>("Proxy");
    35             var remoteCommand = new TestCommand { X = 5, Y = 5 };
    36             remoteBus.Send(remoteCommand);
    37 
    38             watch.Stop();
    39 
    40             var remoteMessage = string.Format("远程命令:{0} + {1} = {2},执行时间:{3}", remoteCommand.X, remoteCommand.Y, remoteCommand.Result, watch.Elapsed);
    41 
    42 
    43             return this.Content(
    44                 localMessage
    45                 +
    46                 "<br/>"
    47                 +
    48                 remoteMessage
    49             );
    50         }
    51     }
    52 }
    复制代码

    代码下载

    下载地址

    为什么标题为“DDD+CQRS+高伸缩性的分布式架构”

    这个分布式部署模式的Demo是用HappyFramework这个开源框架开发的,而HappyFramework的目的就是为了支持DDD+CQRS。

    ★快速评价★不错,支持一下!
    ★快速评价★垃圾,还需努力!
     
    分类: CQRSDDDHappy Framework
  • 相关阅读:
    MINA源码阅读之ACP
    高性能考量
    Intel项目Java小记
    Java NIO之Selector
    中广核需求分析心得
    Excel下拉框选项切换行颜色切换
    推理与证明习题
    常用逻辑用语习题
    统计章节的几个难点
    正态分布
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3030789.html
Copyright © 2020-2023  润新知