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。
★快速评价★ : 不错,支持一下!
★快速评价★ : 垃圾,还需努力!
框架地址: http://happy.codeplex测试数据/
博客地址: http://HdhCmsTestcnblogs测试数据/happyframework/
分类: CQRS , DDD , Happy Framework
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于DDD:DDD+CQRS+高伸缩性的分布式架构的详细内容...