Nginx集群之WCF大文件上传及下载(5588葡京线路帮忙6G传输)

高家花园复线桥

7       Nginx集群配置搭建

由此自主义域名zhyongfeng.com:80端口举行负荷均衡集群访问,则访问C:\Windows\System32\drivers\etc\hosts,添加下列“本机IP
自定义的域名”:

10.93.85.66    zhyongfeng.com

应用Nginx匹配原则针对WCF部署的1台PC机配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream zhyongfeng.com {
        server    10.92.202.56:5600;
        server    10.92.202.57:5700; 
        server    10.92.202.58:5800;
    }
    server {
        listen       80;
        server_name  zhyongfeng.com;
        location / {
            proxy_pass   http://zhyongfeng.com;
            proxy_connect_timeout       10s;
        } 
    location /fileupload {
            proxy_pass   http://10.92.202.56:5600/fileupload;
            proxy_connect_timeout       10s;
        } 
    }
}

运行CMD:

D:\DTLDownLoads\nginx-1.10.2>start nginx

D:\DTLDownLoads\nginx-1.10.2>nginx -s reload

访问WCF服务端:http://zhyongfeng.com/fileupload,运行结果:

5588葡京线路 1

亚松森东站,定址南岸区茶园

 

高家花园段交通四通八达能力

目录

二零一七年1十月28日10号线开通试运营

1       大概思路… 1

地拉这西站投入使用后

9       总结… 13

开明未来有效提升了内环

4       编写WCF服务、客户端程序… 3

二〇一八年五月16日正规投入使用

1       大概思路

l  Nginx集群之WCF大文件上传及下载

l  BasicHttpBinding相关配置分析

transferMode、messageEncoding、maxReceivedMessageSize、receiveTimeout、sendTimeout

l  编写WCF服务、客户端程序

l  URL保留项

l  部署WCF服务程序到局域网内1台PC机

l  Nginx集群配置搭建

l  WCF客户端程序的周转结果

l  总结

—地拉这北站北广场站—民心佳园站

3       BasicHttpBinding相关配置解析… 2

等全国重要城市的航路

6       部署WCF服务程序到局域网内1台PC机… 8

都得以采取直飞巫山哦~

4       编写WCF服务、客户端程序

l  WCF服务程序

Program.cs

using System.ServiceModel;
using Service;
using System;

namespace FileTransferHosting
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(FileTransferOperation)))
            {
                host.Opened += delegate
                {
                    Console.WriteLine(host.Description.Endpoints[0].Address.Uri + "已经启动,按任意键终止服务!");
                };

                host.Open();
                Console.Read();
            }
        }
    }
}

FileTransferOperation.cs

using Service.Interface;
using System;
using System.IO;
using System.ServiceModel;

namespace Service
{
    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class FileTransferOperation : IFileTransferOperation
    {
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="remoteFile"></param>
        public void UploadLoad(RemoteFileInfo remoteFile)
        {
            StreamToFile(remoteFile);
        }

        /// <summary>
        /// 写文件
        /// </summary>
        /// <param name="remoteFile"></param>
        public void StreamToFile(RemoteFileInfo remoteFile)
        {
            string fileFullPath = Path.Combine(System.Environment.CurrentDirectory, remoteFile.FileName);
            Stream sourceStream = remoteFile.FileByteStream;
            if (sourceStream == null) { return; }
            if (!sourceStream.CanRead) { return; }
            //创建文件流,读取流中的数据生成文件
            using (FileStream fs = new FileStream(fileFullPath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                const int bufferLength = 4096;
                byte[] myBuffer = new byte[bufferLength];//数据缓冲区
                int count;
                while ((count = sourceStream.Read(myBuffer, 0, bufferLength)) > 0)
                {
                    fs.Write(myBuffer, 0, count);
                }
                fs.Close();
                sourceStream.Close();
            }
        }

        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public Stream DownLoad(string fileName)
        {
            string fileFullPath = Path.Combine(System.Environment.CurrentDirectory, fileName);
            if (!File.Exists(fileFullPath))//判断文件是否存在
            {
                return null;
            }
            try
            {
                Stream myStream = File.OpenRead(fileFullPath);
                return myStream;
            }
            catch { return null; }
        }
    }
}

服务端配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="FileTransferBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="FileTransferdBinding" receiveTimeout="00:30:00" sendTimeout="00:30:00" maxReceivedMessageSize="6442450944" transferMode="Streamed"
            messageEncoding="Mtom" />
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="FileTransferBehavior" name="Service.FileTransferOperation">
        <endpoint binding="basicHttpBinding" bindingConfiguration="FileTransferdBinding"
            contract="Service.Interface.IFileTransferOperation" />
        <host>
          <baseAddresses>
            <add baseAddress="http://127.0.0.1:5600/fileupload" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

l  客户端程序

Program.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using FileTransferClient.FileTransferService;

namespace FileTransferClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入文件完整路径:");
            string fullFilePath = Console.ReadLine().Trim();


            using (FileTransferOperationClient proxy=new FileTransferOperationClient())
            {
                DateTime datetime1 = DateTime.Now;
                byte[] buffer = System.IO.File.ReadAllBytes(fullFilePath);
                Stream streamBuffer= new MemoryStream(buffer);
                //上传文件
                proxy.UploadLoad(buffer.Length, System.IO.Path.GetFileName(fullFilePath), streamBuffer);
                OutPutDiffTime(DateTime.Now, datetime1, "上传成功");


                Console.WriteLine("开始下载文件:");
                DateTime datetime2 = DateTime.Now;
                string filename = System.IO.Path.GetFileName(fullFilePath);
                //下载文件
                Stream sourceStream = proxy.DownLoad(filename);
                if (sourceStream == null) { return; }
                if (!sourceStream.CanRead) { return; }
                //创建文件流,读取流中的数据生成文件
                using (FileStream fs = new FileStream(Path.Combine(System.Environment.CurrentDirectory, filename), FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    const int bufferLength = 4096;
                    //数据缓冲区
                    byte[] myBuffer = new byte[bufferLength];
                    int count;
                    while ((count = sourceStream.Read(myBuffer, 0, bufferLength)) > 0)
                    {
                        fs.Write(myBuffer, 0, count);
                    }
                    fs.Close();
                    sourceStream.Close();
                }
                OutPutDiffTime(DateTime.Now, datetime2, "下载成功");
                Console.Read();
            }
        }
        public static void OutPutDiffTime(DateTime datetime2,DateTime datetime1,string mesg)
        {
            TimeSpan ts = (datetime2 - datetime1);
            string dateDiff = ts.Hours.ToString() + "小时"
                    + ts.Minutes.ToString() + "分钟"
                    + ts.Seconds.ToString() + "秒";
            Console.WriteLine(String.Format("花费了{0},{1}", dateDiff, mesg));
        }
    }
}

客户端配置文件(注意这里客户端transferMode=”Streamed”要动用流式数据举办拍卖,并且将endpoint
address改为” http://zhyongfeng.com/fileupload”):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IFileTransferOperation" receiveTimeout="00:30:00"
          sendTimeout="00:30:00" maxReceivedMessageSize="6442450944" transferMode="Streamed"
          messageEncoding="Mtom" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://zhyongfeng.com/fileupload" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IFileTransferOperation"
        contract="FileTransferService.IFileTransferOperation" name="BasicHttpBinding_IFileTransferOperation" />
    </client>
  </system.serviceModel>
</configuration>

如下图所示:

5588葡京线路 2

5588葡京线路 3

止于杨公桥立交北侧

2       Nginx集群之WCF大文件上传及下载… 1

成都、重庆、西安、武汉、昆明

7       Nginx集群配置搭建… 9

10号线运用车型与5号线一样

6       部署WCF服务程序到局域网内1台PC机

长距离部署WCF服务端程序到PC机

5588葡京线路 4

5588葡京线路 5

出站全程需要4分钟

9       总结

Nginx的配合原则可以行得通的分配URL,将流式数据分发给相应的劳动处理,并且在局域网内能够帮助较大的上传下载效能。通过BasicHttpBinding的相关安排,可以控制流式数据上传大小,同时帮助流式数据的下载效率,达到WCF大文件上传及下载的意义。

当然,具体的使用场景,依旧要结成数据大小而谈话的,这里只是提供一个化解方案的参照。

比如有些甩卖视频文件每一日都是1TB,处理PB级的大数据文件,依旧提议采纳hadoop的HDFS实现相比较好。

一方面,数据大小达若干MB或几KB的发票、报表文件,那个文件着重在多而不在大,hadoop的MapReduce分明不怎么大材小用了,可以动用“业务领域-年-月-日”的不二法门,建立和谐一套数据结构存储情势。

 

源代码下载:

http://download.csdn.net/download/ruby_matlab/10131307

 

PDF下载:

Nginx集群之WCF大文件上传及下载(辅助6G传输).pdf

悦来站与6号线国博线换乘

3       BasicHttpBinding相关配置分析

basicHttpBinding相关配置,具体参考:

https://msdn.microsoft.com/zh-cn/library/system.servicemodel.basichttpbinding.aspx

以下是着重行使到的安排

transferMode

获取或设置一个值,该值指示是通过缓冲处理还是流处理来发送消息。(继承自 HttpBindingBase。)

messageEncoding

获取或设置是使用 MTOM 还是文本对 SOAP 消息进行编码。

maxReceivedMessageSize

获取或设置最大大小,以字节为单位,可以使用此绑定配置的通道上接收的消息。(继承自 HttpBindingBase。)

receiveTimeout

获取或设置连接在撤消之前保持非活动状态的最大时间间隔,在此时间间隔内未接收任何应用程序消息。(继承自 Binding。)

sendTimeout

获取或设置在传输引发异常之前可用于完成写入操作的时间间隔。(继承自 Binding。)

 

针对MTOM编码和异步调用的性质改革,能够参照杂谈:

拔取MTOM编码和异步调用革新流传输的性能.pdf

 

红土地站与6号线换乘

5       URL保留项… 8

路桥通行费

8        WCF客户端程序的运转结果

启航WCF客户端程序,直接上传Linux的ubuntu系统iso镜像,总大小为1.5G左右,上传时间局域网(服务器线路是10Gpbs)花费7分钟左右,下载时间大体是3秒钟。

客户端服务器的网络情况,运行效果如下图:

5588葡京线路 6

5588葡京线路 7

5588葡京线路 8

5588葡京线路 9

 5588葡京线路 10

 

地拉这东站铁路综合交通枢纽

8       WCF客户端程序的运行结果… 11

寸滩额尔齐斯河大桥、高家花园复线桥开通

5       URL保留项

详见:http://www.cnblogs.com/yongfeng/p/7851039.html

建成未来也会通过北碚区

2       Nginx集群之WCF大文件上传及下载

Nginx的配合规则,很容易帮助大家分开WCF服务的网段,从而实现公司数量音讯序列多区域划分,如小数目标微服务、传输数据文件的劳务、即时通信服务、或者邮件服务,相当于构建了一条公司中间音信化的多寡总线(DataBus)。

以下是本文讲述的紧要协会图:

客户端以BasicHttpBinding访问Nginx的域名zhyongfeng.com/fileupload,然后Nginx举办负荷均衡,将音信分发到后端任意一台WCF上传下载服务器的PC机,然后举行上传文件至“冷数据”处,又从“冷数据”处下载文件。

针对“冷数据”可以划分目录,建立独立的FTP服务器及WCF服务器,举行操作处理。如下图所示:

5588葡京线路 11

以下是WCF上传下载服务器的架构:

 5588葡京线路 12

寸滩大桥南引道工程为主线通车,剩余的腾龙立交各匝道和腾龙大道二期工程将于二零一八年四月建成

PS:

绝不担心有人背靠立柱

从内环高速盘龙立交

前瞻二零一八年初建成

加纳阿克拉-中山运行时刻缩小至2钟头

亚松森西站

轨道交通10号线(1期)

车子宽度为3米的AS山地A型车

5号线一期全线示意图

建成通车之后


沙坪坝站首要办理成渝高铁的客运工作

轨道交通5号线(1期北段)

内环凤中立交是第比尔y斯西站

2017年12月31日

连续内环神速路的机要通道

建成后将开展至上海、时尚之都、苏黎世

渝武高铁、渝西高铁、渝湘高铁

起于园博要旨站止于大龙山站

起于江北区石马河立交南侧

10号线增设行李“专属座位”

—长河站—江北机场T3航站楼站

展望二〇一八年岁末主桥建成

1、轨道10号线江北机场T3航站楼站位居机场航站楼下方。乘坐飞机的司乘人士从2、3号出入口出站后乘坐扶梯就可直达T3航站楼出发厅。下机换乘地铁的司乘人员,可从机场到达厅经4号出入口直接进站:

这二零一八年开挂的瓜达拉哈拉通行

—主旨公园西站—悦来站—王家庄站

车厢中间扩充吊环

用以地点综合交通利用和商贸开发

都林北站铁路综合交通枢纽

(万州至城口段、奥斯汀(Austen)东站至万州段)

江北机场T2航站楼站与3号线换乘

车站还加装空气净化器

上层通汽车,双向6车道

曾家岩雅砻江大桥

大连-维也纳抽水至6钟头

取消征收加纳阿克拉主城区路桥通行费

10号线还有让您一遍坐个够

(试运营期间开展18座)

5588葡京线路,PS:

沙坪坝站紧邻沙坪坝三峡广场

和枢纽东环线等路线的引入

轨道交通9号线设计在沙坪坝站

沿途设9座车站:园博中央站—丹鹤站

比1、6号线运用的B型(2.8米)

川黔等干线铁路的始发终到站

车型使用了都林独有的新车型

是地拉那机场专用迅速路的

辛辛这提-宿雾抽水至4.5刻钟

再就是地铁环线位于天陈路红尘

除去

车站站场上盖约4.9万平方米建筑

寸滩黄河大桥、寸滩桥梁南引道

假如说前年的第比尔(Bill)y斯

预测二零一八年开工建设

—人和站—幸福广场站

至江北国际机场T3航站楼

属于全国首例在高铁动车站场

下层为重庆轨道交通10号线

—湖霞街站—重光站—和睦路站

—连云港湾站—上湾路站—环山公园站

—江北机场T2航站楼站—渝北广场站

开通后阿比让到西雅图距离将收缩至1刻钟

巫山机场

经寸滩黑龙江大桥

下边加盖的铁路车站

真正会好根本

心急如焚上班打卡的伴儿

内环凤中立交、高家花园复线桥开通

坐落巫山、奉节交界处的巫山机场

鲤鱼池站—红土地站—龙头寺公园站

冉家坝站—大龙山站

重中之重组成部分

车厢中间立柱也改成了3合1

—鹿山站—中心公园东站—中心公园站

站东路、站西路下方

也有成千上万愿意

二零一八年三月1日零时起

渝东北的伴儿回家

最深站点——鲤鱼池

看着视频都很干净的

首班车07:30、末班车20:30

2017年12月28日轨道5号线

加纳阿克拉-夏洛特缩水至5钟头

沙坪坝高铁站

高家花园复线桥工程为主桥、引桥以及高家花园立交连接磁器口与内环互通通车,剩余的既有高家花园大桥加宽以及既有高家花园大桥与沙坪坝区沙正街倾向的匝道工程将于二〇一八年十月整个完工

(冉家坝、大龙山均可换乘6号线)

(1期北段共17公里)开通试运营

1期全场34公里.共设有19座车站

2、到加纳阿克拉北站北广场乘坐10号线,下车之后经过扶梯就可以到达铁路站房

南场改造工程开工建设

建成后将紧要承接

寸滩亚马逊河大桥及寸滩大桥南引道

2017年11月20日起

将改变着加纳阿克推人的生活

5号线车厢两侧扶手改为弧形

是渝黔、渝昆、兰渝、襄渝

二〇一八年渝昆高速铁路、渝西高速铁路

明朗在2018年春运前开展投用

轨道6号线调整行区间

从南岸到机场只需15分钟

异乡乘客想去游览多瑙河三峡

2018,生活在特古西加尔巴

渝湘高速铁路黔江至秀山段

属于“公路+轨道”两用桥

规则6号线支线2期也在建设中

因为一首《火锅底料》启动开挂形式

八方扶手的难堪局面了

由于连续机场和火车站

位居沙坪坝区

涨幅、载客量更大