DotNetMultiServerUpload 多文件上傳,多服務器備份程序

GIT 託管地址 DotNetMultiServerUploadgit

#DotNetMultiServerUploadgithub

簡介

此程序爲圖片上傳程序,須要windows IIS .net 運行環境web

windows server 2008 r2json

.net framework 4.5windows

iis 7.5安全

支持多圖片上傳,多服務器備份服務器

使用場景

圖片服務器有幾十個GB的圖片網絡

服務器有不少不穩定因素,app

如:.net

硬盤會壞掉

機房會斷電

白名單會丟失

……

當發生上述狀況的時候再去遷移服務器,就很困難

這些問題均可能致使圖片服務器沒法訪問的窘境,

爲了加強用戶體驗,就要考慮到上述問題,對圖片作好實時備份

DotNetMultiServerUpload 就是專門爲解決這些問題而誕生

使用說明

須要的硬件環境

  • 一臺圖片服務器 (主)(master)
  • 一臺圖片備份服務器 (backup)
  • 兩臺服務器均爲 windows 2008 r2 iis .net framework 4.5 環境

部署環境

【第一步】

分別在 主服務器 和 備份服務器上創建 一個站點

並綁定域名 i-1.xx.com 把站點命名爲 i-1.xx.com (根據須要綁定你本身的域名)

同時 在主服務器 站點 i-1.xx.com 上再綁定一個域名 s1.i-1.xx.com

在備份服務器站點 i-1.xx.com 上再綁定一個域名 s2.i-1.xx.com

在域名管理系統裏面把域名解析至對應服務器

s1.i-1.xx.com 綁定至主服務器 s2.i-1.xx.com 綁定至備份服務器 i-1.xx.com 綁定至主服務器

若是主服務器出現故障,就把域名(i-1.xx.com)再解析至備份服務器

【第二步】

把程序放置在兩臺服務器 站點i-1.xx.com 下面,修改配置文件 /web.config 和 /servers.xml

/web.config

<?xml version="1.0"?>
<!--
  有關如何配置 ASP.NET 應用程序的詳細信息,請訪問
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <appSettings>

	<!--當前服務器名稱 對應 servers.xml-->
	<add key="ServerName" value="s1"/>
	
	
	<!--備份服務器列表配置文件-->
	<add key="Servers" value="/servers.xml"/>
	
	<!--當前服務器安全密鑰-->
	<add key="SecurityKey" value="asdfdsfsdf"/>
	
	<!--日誌所在目錄-->
	<add key="Log" value="/log"/>
	
  
	<!--當前服務器域名-->
	<add key="Domain" value="http://i-2.xx.com"/>
  </appSettings>
  <!--
	有關 .NET 4.5 的 web.config 更改的說明,請參見 http://go.microsoft.com/fwlink/?LinkId=235367。

	可在 <httpRuntime> 標記上設置如下特性。
	  <system.Web>
		<httpRuntime targetFramework="4.5" />
	  </system.Web>
  -->
  <system.web>
	<customErrors mode="Off"/>
	<compilation debug="true" targetFramework="4.5"/>
	<pages controlRenderingCompatibilityVersion="4.0"/>
  </system.web>
</configuration>

/servers.xml

<?xml version="1.0" encoding="utf-8" ?>

<Servers>
  <!--備份服務器1-->
  <Server Name="s1" Uri="http://s1.i-2.upload.xx.com/do.ashx" SecurityKey="asdfdsfsdf" />

  <!--備份服務器2-->
  <Server Name="s2" Uri="http://s2.i-2.upload.xx.com/do.ashx" SecurityKey="asdfdsfsdf" />
</Servers>

程序說明

整套程序分爲幾個部分

  1. 後臺多圖上傳程序 /.m/upload.aspx
  2. 核心程序 /do.ashx

部署好程序以後,就能夠經過地址 http://i-1.xx.com/.m/upload.aspx 去上傳圖片

http://s1.i-1.xx.com/.m/upload.aspx 上傳圖片 或 http://s2.i-1.xx.com/.m/upload.aspx 上傳圖片

不管使用哪一個地址,程序都會自動把圖片合併同步至另外的服務器上面

固然在合併同步另外的服務器的時候 也可能會遇到 網絡問題或服務器問題,致使同步失敗的可能

這種狀況 DotNetMultiServerUpload 是考慮到的,當出現上述問題致使同步失敗的時候,

程序就會建立 日誌文件,記錄上傳失敗的文件信息和服務器信息,

能夠在服務器端制定一個計劃任務,按期的去處理錯誤

按期去執行這兩個地址,就能夠把上傳失敗的文件再次同步至其餘服務器

http://s1.i-1.xx.com/do.ashx?action=uploaderrors&SecurityKey=asdfdsfsdf

http://s2.i-1.xx.com/do.ashx?action=uploaderrors&SecurityKey=asdfdsfsdf

第三方程序接口

上傳能夠經過 /.m/upload.aspx 去上傳

也能夠接入至其餘後臺中

只需把圖片上傳至

http://i-1.xx.com/do.ashx?action=upload&SecurityKey=asdfdsfsdf

便可

如C#代碼實現:

string SecurityKey = "asdfdsfsdf";
    string format = "xml"; //or json 

    WebClient wc = new WebClient();
    byte[] data = wc.UploadFile("http://i-1.xx.com/do.ashx?action=upload&format=" + format + "&SecurityKey=" + SecurityKey, @"D:\xx.jpg");
    wc.Dispose();

    string xml = System.Text.Encoding.GetEncoding("utf-8").GetString(data);
    /*
    返回成功結果:
    XML:
    <resp>
    <success>1</success>
    <link>http://i-1.xx.com/2014/4/15/5310bcaf-0f8a-45c5-9a61-9bf45b5e09c1.jpg</link>
    </resp>


    JSON:   
    {"resp":{"success":1,"link":"http://i-1.xx.com/2014/4/15/5310bcaf-0f8a-45c5-9a61-9bf45b5e09c1.jpg"}}         
    */
相關文章
相關標籤/搜索