高并发场景之RabbitMQ篇

上一章大家周全了服务层的安排,传送门:项目架构开发:服务层(下)

上次大家介绍了在单机、集群下高并发场景可以选取的某些方案,传送门:高并发场景之一般化解方案

此次大家来完结项指标单机安排与集群安插,大家来看看单机安顿与登录

可是也意识了部分难题,比如集群下采用ConcurrentQueue或加锁都不可能化解问题,后来应用Redis队列也不能够一心缓解难题,

 

因为运用Redis要和谐完结分布式锁

单机铺排很简短,那里就不演示了,要留心的是我们用的是session来保存登录消息

 

就算如此Session不安全,比如sessionid被缴获那就能够在另内地方用你的账号登录;

此番大家来打听一下3个特别处理队列的零件:RabbitMQ,那几个东西自然帮助分布式队列。

可是抢先三分之壹合营社内部系统都无需那么高的安全级别,所以这几个毫无太担心;

上边我们来用RabbitMQ来兑现上一篇的场景

近期大家开头安插五个一律的应用,让他署集群运营,从而增强系统天性;

 

 

一、新建RabbitMQ.Receive

private static ConnectionFactory factory = new ConnectionFactory 
{ HostName = "192.168.1.109", UserName = "ljr", Password = "root", VirtualHost = "/" };

 1         static void Main(string[] args)
 2         {
 3             using (var connection = factory.CreateConnection())
 4             {
 5                 using (var channel = connection.CreateModel())
 6                 {
 7                     var consumer = new EventingBasicConsumer();
 8                     consumer.Received += (model, ea) =>
 9                     {
10                         var body = ea.Body;
11                         var message = Encoding.UTF8.GetString(body);
12                         Console.WriteLine(" [x] Received {0}", message);
13 
14                         var total = DbHelper.ExecuteScalar("Select Total from ConCurrency where Id = 1", null).ToString();
15                         var value = int.Parse(total) + 1;
16 
17                         DbHelper.ExecuteNonQuery(string.Format("Update ConCurrency Set Total = {0} where Id = 1", value.ToString()), null);
18                     };
19 
20                     channel.QueueDeclare(queue: "queueName", durable: false, exclusive: false, autoDelete: false, arguments: null);
21                     channel.BasicConsume(queue: "queueName", noAck: true, consumer: consumer);
22 
23                     Console.WriteLine(" Press [enter] to exit.");
24                     Console.ReadLine();
25                 }
26             }
27         }

1、Application Request Route

既然选择asp.net,那集群当然首要采取A索罗德纳瓦拉咯;至于Linux的nginx,小编觉得依然不要让他再Windows下运作

设若有A景逸SUVCRUISER要首先 Web Platform installer
V五.0;安装完后会现出2个赫色的图标,如下

图片 1

 

二、新建RabbitMQ.Send  

 1         static void Main(string[] args)
 2         {
 3             for (int i = 1; i <= 500; i++)
 4             {
 5                 Task.Run(async () =>
 6                 {
 7                     await Produce();
 8                 });
 9 
10                 Console.WriteLine(i);
11             }
12 
13             Console.ReadKey();
14         }
15 
16         public static Task Produce()
17         {
18             return Task.Factory.StartNew(() =>
19             {
20                 using (var connection = factory.CreateConnection())
21                 {
22                     using (var channel = connection.CreateModel())
23                     {
24                         var body = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString());
25                         channel.QueueDeclare(queue: "queueName", durable: false, exclusive: false, autoDelete: false, arguments: null);
26                         channel.BasicPublish(exchange: "", routingKey: "queueName", basicProperties: null, body: body);
27                     }
28                 }
29             });
30         }

 

此间是仿照500个用户请求,符合规律的话最终Total就等于500

我们来说试试看,运维程序

2.一、打开接收端

图片 2

2.2 运行客户端

图片 3

2.3、能够见见二边差不多是实时的,再去探访数据库

图片 4

二、然后双击它,再根据上面多少个零件

Web Deploy V3.0

Applicaiton Request Router 3 for IIS

Url Rewriter 2

约莫那多少个就够了,安装好后从新开拓IIS,可以见见 Server Farms

图片 5

 

这么些就是集群需求用的事物了,右键 Create Server Farms

图片 6

 图片 7

 

3、大家在集群里实行 

图片 8图片 9

 

谈到底数据是一千

图片 10

 

 完全未有抵触,好了,便是这般 、。

 

3、把节点加进去

谈起底创立好后如下,192.16八.6三.128/12九是二台虚拟机地址,localhost是本机转载Web站点

图片 11

 

四、好了,大家开辟虚拟机

图片 12

 

五、再倒回IIS中,大家在Health Test中新建2个测试

图片 13

图片 14

 

点击 Verify U奥迪Q三L Test 提醒PASS,表明子站点都联通了

 

6、我们再外边的地头主机上访问站点(localhost)看看

localhost什么都不曾的啊,只是八个转载站点,看图

图片 15

 

7、访问localhost,登录用户

图片 16

捌、看到连接到的是128虚拟机

 图片 17

九、大家刷新多五次,就足以阅览此外的节点,Session也一路过去了

图片 18

 

利落这一篇,项目架构体系就写完了,除了UI层的HTML与JS的宏图,别的层都有讲到,大家再来看看整个目录

 

一、阅读目录

 

贰、分层架构1览

图片 19

 

好累啊。。。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注