多服务器文件负载WCF处理 1
很久没有写博客了,因为一直忙于项目,实在是抽不出时间来写.也不知道要写什么.去年做了一个WCF的文件负载系统,就拿出来献丑一下,今年进行了优化,采用了EF 框架 用的是MVC3.
大型业务逻辑中对服务器的负载都有自己的构架,自己也研究过部分.因为是MS迷,所以想用现成的技术做一套属于自己的简单负载均衡,对于文件的均衡系统.
要实现的目标:
1.文件多服务器,多网站共享.
2.实现动态配置服务器环境
3.架设简单.
当然到目前部分算法还需要点优化,等空了再来.
业务逻辑分析:
客户端需要访问文件系统,那么需要通过配置的FilesManager项目进行,FilesManager项目只有只读权限.该项目负责均衡各个服务器,并向服务器传输数据.针对于只有只读权限那么该项目构建为MVC 的web应用.
针对于server 1到server 6甚至更多服务器,他们相互之间并不知情,也互不通讯.所有任务交由Wcf的一个windows service来负责.当然这里考虑到了web的负载量,如果FilesManager这个网站并发达到最大数目
时,我们怎么办.当然最简单的办法就是交个windows server 2008的web负载均衡去处理吧,自己能少写点代码就少写点,感谢微软.
构架逻辑分析:
客户端多个这里用IClientClient标示客户端访问接口,公开服务器端这里用IServerClient标示,其目的是向外部公开一个服务器用于文件交互用,他负责把文件交到每台内部服务器进行处理.这两个Client都可以用win 2008
服务器的负载均衡让其分流,也可以用IP的方式运用多台服务器来承载.IServerServer 是内部服务器,负责接收文件并存储,并且负责接收命令读取文件,这里申明,所有文件均以byte[]类型进行传输,当然wcf支持直接传输stream
为了多程序结合就直接传输byte了,对于速度上我没有做测试,如果感兴趣的朋友可以测试一下.
逻辑流程分析:
客户端和服务器的客户端进行先2次握手,然后获取到能访问文件的Client对象,然后通过代理进行文件访问,当然中间还有些小故事,我们慢慢道来.
设计思路:
把对文件的操作封装成windows service,安装在serverclient和serverserver端,上面已经说了serverclient是公开给用户的一个接口,用户可以通过该接口对文件进行操作.serverclient负责接收和读取文件数据传输给用户
并且负责分配文件将他转交给符合状态的服务器进行处理.他就好比是个超市的零时存放箱的管理员,自己不负责保管物品,但他能把物品保管到当前正常并有空位的存放箱里,在客户需要的时候通过条件查找并取出物品交给客户.
实际保管(save)这个动作不是他来做的.
serverclient需要具备2个能力:1 知道当前有多少太服务器,并且每台服务器的状态,2 文件的相对位置(方便查找文件).
serverserver 他就是具体保管物品的存物箱.他只负责保管和读取文件,至于文件是谁的,为什么要存放,他不必担心.
今天就写到这里,明天继续写程序接口的设计.