摘要:
FileSync是一款文件同步更新工具,它提供了对一个或多个应用的文件进行管理和同步更并功能,基于MD5的文件对比方式可以使管理者轻易地发布需要更新应用文件.FileSync主要模块包括:服务端,CLI管理,应用更新和服务端部署应用更新;主要功能是提供服务端应用(WCF,IIS应用)完全自动化更新而设计的,它提供了应用停止,应用更新和应用启动等功能.用户只需要向服务端post新版本的文件即可分发到各台服务器的服务应用中.同样FileSync也提供桌面应用自成动更新模块,可以简单实现.net程序桌面应用自动更新功能.服务端配置 在启动服务端的时候先配置一些基础信息,... 阅读全文
摘要:
在TCP下进行大文件传输不象小文件那样直接打包个BUFFER发送出去,因为文件比较大所以不可能把文件读到一个BUFFER发送出去.主要有些文件的大小可能是1G,2G或更大,分配这么大的BUFFER对内存来说显然是不现实的事情;针对服务端的设计来说就更需要严紧些,BUFFER大小的限制也是变得很重要.下面介绍使用Beetle简单地实现大文件在TCP的传输应用.协议制定既然需要把文件分块来处理,那在TCP传输的过程需要制定一些协议来规范数据有效性,数据协议主要有三个:告诉服务器需要上传文件,文件块上传和返回每个环节处理的结果.1)上传文件指令public class Upload:ObjectMe 阅读全文
摘要:
由于MSMQ的消息交互都需要对磁盘进行读写操作,所以提高MSMQ的消息吞吐能力相对比较有效的方法就是提高磁盘读写能力.可以简单地把MSMQ的消息,日志等文件存储到不同的磁盘来降低MSMQ对一个磁盘IO依赖从而达到更高的读写效能.由于MSMQ一般都是存储流水数据,如果消息结构比较少和消费积累量不高的情况把MSMQ存储放到内存则是一个非常不错的选择,这样能够大大提高MSMQ的读写效能(缺点:断电部分数据存在丢失).下面针对MSMQ内存存储的一些实现和简单测试.构建内存盘首先要从内存中创建一个盘出来,这个可以通过一些工具就能实现,这里选择了Dataram RAMDisk(这款工具如果的虚拟4G以下的 阅读全文
摘要:
在使用MSMQ的时候一般只会使用默认的XML序列化来对消息进行存储,但XML存储的缺点是序列化体积相对比较大和效率上有点低.其实.net提供非常简单的方式让我们实现不同序列化方式来存储MSMQ信息,如json,protobuf等.为了能够让开发人员实现自定义序列化的消息存储,.NET提供了IMessageFormatter这样一个接口,只需要简单地实现这个接口就可以对MSMQ的消息进行处理.以下讲解如何实现json和protobuf的messageformater.IMessageFormatter// 摘要: // 从“消息队列”消息体序列化或反序列化对象。 [TypeC... 阅读全文
摘要:
Stream是.net数据流操作的一个封装,它提供统一的流读写规则,为后期开发这方面的功能提供了很大的便利性.有些场景下是直接操作byte[]比较灵活所以Stream派生出MemoryStream从byte[]构建一个stream来方便开发人员使用.但在使用的时候碰到了一个非常坑爹事情.一个非常意想不到的结果...应用代码string value = "111111111"; string value1 = "2222222222222222222222"; System.IO.MemoryStream stream = new System.IO... 阅读全文
摘要:
使用ServiceStack.Redis的连接池在操作多台Redis的时候并不会对出现故障的Redis进行排除切换,这样就会导致应用会还是会分配到故障的Redis服务中导致应用处理错误.这次对ServiceStack.Redis连接池的改造主要实现两个功能:1)对故障的Redis服务在轮循的时候排除,2)定期检测故障的Redis服务,如果服务正常则恢复到轮盾环节中.(ServiceStack.Redis的代码结构还是很不错修改起来也很方便)增加基于Host的连接池功能ServiceStack.Redis连接池的连接存储结构相对简单,只是用一些简单的数组进行处理也没有明确按Host划分,所以修改 阅读全文
摘要:
PooledRedisClientManager是ServiceStack.Redis的连接池管理类,通过连接池可以实现更高效的Redis操作.但PooledRedisClientManager相关GetClient的设计似乎存在一些问题,如果你只Pool只指向一台Redis这倒不会有什么问题,但如果指向多台Redis那就可能产生悲剧的事情.下面解释一下指向多台Redis存在的一些问题.具体代码 1 /// <summary> 2 /// Called within a lock 3 /// </summary> 4 /// <returns><... 阅读全文
摘要:
IIS可以对ASP.NET站点进行一个资源控制,包括使用的CPU,处理进程数等.但如果想对某些动态页面进行一个资源限制,只允许固定线程数量来处理某些动态请求,而不至于在某些情况个别的动态请求把整个站的资源都占光了.对于这么小的粒度控制显然不适合由IIS来做,这个时候就可以通过asp.net提供IHttpAsyncHandler来解决这种事情.处理结构由于Asp.net提供了异步处理Handler,所以可以在Handler的Begin处理方法中把具体对象存放到队列中,然后根据实际业务的需要来配置1-N个线程来处理相关请求.IHttpAsyncHandlerpublic interface IHt 阅读全文
摘要:
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测试的时候也会占用了大量的资源导致测试效果不理想.为了让在win下对web压力测试变得更简单方便所以用.net写了一个小工具来完成这个事情功能介绍这个小工具提供了一系列的参数设置,主要包换测试的类型,并发用户数和是否保持长连接状态等.KeepAlive是否保持连接状态,如果选择是则省下了连接创建的损耗从而达到更高的吞吐测试效能并发用户数这个值是指同时请求的用户数,如果是局域网测试此值一般在100以内 阅读全文
摘要:
在大并发数据应用处理过程中,往主需要消息队列这样的应用把信息分发到不同服务器上进行数据处理,目的是把流程数据拆分成N个环节分布到不同的服务器上运行,从而提高整体数据处理能力.前段时间在做MSMQ的负载和故意处理,在测试的过程中发现让我非常困扰的问题,就是通过.net 操作远程MQ的时候当对方挡机了.NET并不会报错,而是会写入本地转出队列这样就很难实时有效地把消息转移到别的MQ服务器.另一方面.NET操作远程MQ本机也必须装上MQ服务,还有一个就是.NET操作远程MQ的损耗也非常高.为了解决以上问题的,所以打算实现一个MSMQ代理组件,组件分为两大部分别是服务端和CLIENT,服务端的功能主要 阅读全文