DotNetMultiServerUploadマルチファイルアップロード、マルチサーババックアッププログラム
4559 ワード
GIT管理アドレスDotNetMultiServerUpload
DotNetMultiServerUpload
ピクチャサーバ(マスター) 画像バックアップサーバ 両サーバーはwindows 2008 r 2 iisである.Netframework 4.5環境 導入環境
【第一歩】
プライマリ・サーバとバックアップ・サーバにそれぞれ1つのサイトを作成
ドメイン名i-1をバインドする.xx.comはサイトをi-1と命名する.xx.com(必要に応じて自分のドメイン名をバインド)
同時にプライマリサーバサイトi-1において.xx.comにドメイン名s 1をもう1つバインドする.i-1.xx.com
バックアップサーバサイトi-1.xx.comにドメイン名s 2をもう1つバインドする.i-1.xx.com
ドメイン名管理システムでドメイン名を対応サーバに解析する
s1.i-1.xx.comはプライマリサーバs 2にバインドする.i-1.xx.comはバックアップサーバi-1にバインドする.xx.comをプライマリサーバにバインド
プライマリ・サーバに障害が発生した場合は、ドメイン名(i-1.xx.com)をバックアップ・サーバに解析します.
【ステップ2】
2台のサーバサイトi-1にプログラムを配置する.xx.com以下、プロファイル/webを変更する.configと/servers.xml
/web.config
/servers.xml
プログラム全体をいくつかの部分に分けるバックグラウンドマルチマップアップロードプログラム/.m/upload.aspx コアプログラム/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は、上記のような問題が発生して同期に失敗した場合、
プログラムはログファイルを作成し、アップロードに失敗したファイル情報とサーバ情報を記録します.
サーバ側で計画タスクを作成し、定期的にエラーを処理できます.
この2つのアドレスを定期的に実行すると、アップロードに失敗したファイルを他のサーバに再同期できます.
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#コード実装の場合:
DotNetMultiServerUpload
概要
このプログラムは画像アップロードプログラムで、windows IISが必要です.Net運転環境
windows server 2008 r2
.net framework 4.5
iis 7.5
マルチピクチャアップロード、マルチサーババックアップをサポート
シーンの操作
画像サーバーには数十GBの画像があります
サーバには多くの不安定な要因があり、
次のようになります.
ハードディスク(HDD)が壊れる
機械室の電源が切れる
ホワイトリストが失われます
……
このような場合にサーバを移行するのは困難です
これらの問題は、画像サーバにアクセスできないという窮地を招く可能性があります.
ユーザー体験を向上させるためには、上記の問題を考慮して、画像をリアルタイムでバックアップする必要があります.
DotNetMultiServerUploadは、これらの問題を解決するために誕生したものです.
使用方法の説明
必要なハードウェア環境
【第一歩】
プライマリ・サーバとバックアップ・サーバにそれぞれ1つのサイトを作成
ドメイン名i-1をバインドする.xx.comはサイトをi-1と命名する.xx.com(必要に応じて自分のドメイン名をバインド)
同時にプライマリサーバサイトi-1において.xx.comにドメイン名s 1をもう1つバインドする.i-1.xx.com
バックアップサーバサイトi-1.xx.comにドメイン名s 2をもう1つバインドする.i-1.xx.com
ドメイン名管理システムでドメイン名を対応サーバに解析する
s1.i-1.xx.comはプライマリサーバs 2にバインドする.i-1.xx.comはバックアップサーバi-1にバインドする.xx.comをプライマリサーバにバインド
プライマリ・サーバに障害が発生した場合は、ドメイン名(i-1.xx.com)をバックアップ・サーバに解析します.
【ステップ2】
2台のサーバサイト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>
プログラムの説明
プログラム全体をいくつかの部分に分ける
プログラムを配備したら、アドレスを通じて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は、上記のような問題が発生して同期に失敗した場合、
プログラムはログファイルを作成し、アップロードに失敗したファイル情報とサーバ情報を記録します.
サーバ側で計画タスクを作成し、定期的にエラーを処理できます.
この2つのアドレスを定期的に実行すると、アップロードに失敗したファイルを他のサーバに再同期できます.
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"}}
*/