zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    苹果推送APNS自己总结
    Windows下LDAP服务器配置
    service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误
    PHP 中的 9 个魔术方法
    使用 Equinox 开发 OSGi 应用程序
    使用 Equinox 框架进行 OSGi 环境下的 Web 开发
    探索 OSGi 框架的组件运行机制
    基于 OSGi 和 Spring 开发 Web 应用
    Equinox OSGI ServletBridge 原理与实践
    利用 Eclipse 开发基于 OSGi 的 Bundle 应用
  • 原文地址:https://www.cnblogs.com/happyframework/p/3030632.html
Copyright © 2011-2022 走看看