在实际编写程序中大部他开发人员应用到队列的场景并不多,在数据结构层面来说队列是一个先过先出的存储机制;如果经常面向服务器并发应用编写的同学对队列机制应该不会陌生.基于队列的应用设计作为服务的性能和可靠性上起到非常重要的作用,对于刚入门的同学可能对这些东西不太理解,既然添加了一个处理环节为何还能提供性能.通过下面讲解可以让不了解队列机制的同学进一步认识到队列机制在服务器应用设计如何起到重要的作用. 性能提升和可靠性 使用队列机制真的能让代码性能提升吗?从代码角度来说不能,原因很简单因为要执行的代码多了.既然不能提高代码执行性能那为什么服务设计都会考虑队列机制呢?主要原因服务设计一 ...
由于MSMQ的消息交互都需要对磁盘进行读写操作,所以提高MSMQ的消息吞吐能力相对比较有效的方法就是提高磁盘读写能力.可以简单地把MSMQ的消息,日志等文件存储到不同的磁盘来降低MSMQ对一个磁盘IO依赖从而达到更高的读写效能.由于MSMQ一般都是存储流水数据,如果消息结构比较少和消费积累量不高的情况把MSMQ存储放到内存则是一个非常不错的选择,这样能够大大提高MSMQ的读写效能(缺点:断电部分数据存在丢失).下面针对MSMQ内存存储的一些实现和简单测试. 构建内存盘 首先要从内存中创建一个盘出来,这个可以通过一些工具就能实现,这里选择了Dataram RAMDisk(这款工具 ...
在使用MSMQ的时候一般只会使用默认的XML序列化来对消息进行存储,但XML存储的缺点是序列化体积相对比较大和效率上有点低.其实.net提供非常简单的方式让我们实现不同序列化方式来存储MSMQ信息,如json,protobuf等.为了能够让开发人员实现自定义序列化的消息存储,.NET提供了IMessageFormatter这样一个接口,只需要简单地实现这个接口就可以对MSMQ的消息进行处理.以下讲解如何实现json和protobuf的messageformater. IMessageFormater接口 // 摘要: // 从“消息队列”消息体序列化或反序列化对象 ...