首先作为一个.net 程序员,多数情况你懒的整什么架构啊、框架啊、还有那命令行的linux,别说linux也有桌面,那个桌面用起来更让人抓狂,一直不明白居然有人说喜欢上linux的命令行,装B还是SB呢?好把不管是生活所迫还是兴趣爱好,或者什么别的动机,今天兄弟讲的结构绝对搞起来轻松用起来方便(当然装win2008好象不比装linux轻松多少,希望你那有个网管帮忙搞定)。

先上图

反向代理服务器的安装配置

1.首先是安装一台Win2008 带IIS7 的服务器,上面按装ARR(Application Request Route)
2.在IIS7上建立个站点,因为要所有请求需要通过这个站点转发的.
3.配置反向代理,把应用服务器都加进去(这些应用服务器上应该布置同一套程序)

应用服务器的配置
有几点需要注意,cookie由于是客户端的所以可以放心使用,Session最好别用虽然你可以配置成数据库或Session服务器但是还是碰到过不少状况。

因为在多台服务器中运行,需要进程或线程同控制时考虑使用数据库做锁定,或者专门提供一台服务起包装相应的服务并对外提供接口。

文件与图片服务器
使用windows共享盘的方式在应用服务器上建立同样的盘符映射。

其他服务器配置
缓存服务器使用windows系统,按装mamcached,数据库sql2005 企业版以上都可以有热备份功能,需要在完整日志下运行

 关于不海量图片的存储

1.上的结构可以通过增加共享盘来扩充容量,但是有限,好在图片不是很多.

2.采用ARR,使用Query String Hash方式将文件读写平滩到多台文件服务器上,具体作法是
上传图片时由客户端生产一个数字编号,一般是长整时间戳,上传地址看起来是这样的 xxx/xxx/postimg.ashx?rqid=141341234
由于采用query string hash那么只要你访问时带上rqid如 xx/adasd/xx.jpg?rqid=141341234   就可以保证反向代理把请求路由到保存图片的服务器了.
千万注意ARR的hash算法是一致性hash算法,你图片服务器发生增减后同样的rqid可能会被路由到不同的图片服务器上,切记你要一次规划好未来X年左右的存储量需求来一次性添加对应台数的服务器,同时每次上传文件时在数据库记录(RqId,Server,FileName,AddTime,refId)以免出现意外时找不到图片在那台服务器.

3.自己实现反向代理,参考上面的第2种方式,使用asp.net的地址重模块,根据文件时间戳将文件平滩到不同的服务器,当然需要采用集成模式来将jpg这样的地址重写,具体过程是这样的
首先安排了3台服务器运行了x年后来又加了5台服务器运行y年,后来又...(还有后来的话那么请直接采用分布式文件系统把,这里不适合你了)
我们需要根据时间戳(那个rqid)将x这些年的请求分配给那3台服务器,而针对这3台幅器的具体分配还是采用hash算法,后面处理类似,当然这样的过程经历两次应该就到你这个系统的使用寿命了,如果还要扩充,那还不如学习并使用HDFS,TFS这样的架构把(对了你转做网管了吗)

4.准备img1.xxx.com img2.xxx.com 多台对外的ip并帮定上面的域名把(好在二级域名不要钱IPv6早点普及把),代码里写把。

最新文章

  1. nginx负载均衡集群
  2. JQuery Jsonp 跨域
  3. 使用mysql profiling功能剖析单条查询
  4. 《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记
  5. Java基础知识强化之IO流笔记34:OutputStreamWriter(Writer字符流的子类)5种write数据方式
  6. Android SharedPreferences复杂的存储
  7. Swing入门
  8. TextField和TextView
  9. Python之日志处理(logging模块)
  10. 软件开发项目云端All-In-One体验
  11. 好用的sql
  12. 在linux环境下安装JDK并配置环境变量
  13. Chinese-Text-Classification:Tensorflow CNN 模型实现的中文文本分类器[不分词版]
  14. 在Jenkins管道中添加Webhook
  15. Windows计划任务实现MYSQL冷备份
  16. db2 报错 sqlcode=-420 自动类型转换的问题
  17. java 连接 hiveserver2 例子
  18. SpringMVC学习笔记:表单提交 参数的接收
  19. 如何在Linux下Redis安装
  20. 常用sql语法初级

热门文章

  1. QLoo graphql engine 学习一 基本试用(docker&&docker-compose)
  2. pthread线程初始化(pthread_once)
  3. postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
  4. HBase,region以及HFile概念
  5. linux 下 ifcfg-eth0 配置/CentOS_minimal安装和开发环境部署
  6. inline修饰虚函数的问题
  7. java 面向对象 — 继承
  8. log4net 极简配置
  9. bzo j4825 [Hnoi2017]单旋
  10. configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/