Windows平台分布式架构实践

  • 时间:
  • 浏览:0
  • 来源:大发大发彩神app—大发彩神下载苹果

  本文中所有的测试结果都没人取第一次的结果,EF也前要预热,同样的查询在EF中也是有缓存的,什么都有第一次的结果会与后面 的测试结果有很大的区别,后面 的几只(在相同参数下)基本差别就不大了。

  

  我们歌词 都都使用的轻量级的ab来做压力测试,或者 太满再太熟悉ab的能不到点这里,下面是测试的结果:

  ab -n10000 -c1000 http://192.168.1.131

  

  注意:图中的Load balancer实际上是不指在的,或者 若果我们歌词 都都2台Web服务器安装了网络负载平衡组件,在其中任意一台上建立群集就能不到了,图是为了方便我们歌词 都都理解。 

  

  在网站架构的不断演变中,负载均衡起着非常重要的位置,不仅仅为我们歌词 都都提升可靠性和可扩展性,有一点比较强大的硬件设备还能提供缓存,以及session机制。今天我们歌词 都都用到的负载均衡是Windows Server自带的一有一个 组件,它是最简单实现负载均衡的法律土方式,或者 功能都会一阵一阵完善,或者 一旦NLB某种 指在错误没人将因为所有的网站都会能访问,我们歌词 都都后面 就来通过引入APR(Application Request Router)来处理某种 问題图片,要我 真正了解大型网站的架构实现,而都会仅仅知道负载均衡,分布式缓存,数据库分离那此名词么?那就来跟我一齐学习吧!另外我们歌词 都都今天而是我用一有一个 简单的页面做了压力测试,不到读数据的操作,还没人写的操作,也没人任何繁杂的事务,或者 别担心,我们歌词 都都一步一步来 :) 。

  最近.NET的世界之后结束闹腾了,微软官方终于加入到了对.NET跨平台的支持,或者 在不久的将来,我们歌词 都都在VS后面 写的代码或者 就能不到通过Mono直接在Linux和Mac上运行。没人我们歌词 都都(开发者和企业)为那此没人的迫切的希望.NET跨平台呢?第一有一个 理由是便宜,淘宝号称4万多台服务器详细运行在Linux,Linux平台下还有免费的MySql,那此都会免费的,那此省下来直接而是我利润呀,做企业的成本能不到降低又没人任何损失,何乐而不为呢?第有一个理由是在Linux系统下还有什么都有非常优秀的构架(当然同样也是免费的),分布式缓存Memcached, 大数据处理构架Hadoop等等,那此都为一点大型的分布式系统提供了很好的支撑,当然还有诸如Liniux系统某种 的一点安全和网络方面的优势,等等。 什么都有也难怪大佬们都纷纷不约而同的没人确定.NET。 

  

  通过测试发现,我们歌词 都都这单个服务器的吞吐率接近在110~11000之间,而一旦并发数达到1000之后,每个请求的处理时间就达到1.5s多了,1000个并发用户的之后每个请求要花上3s多的时间。或者 在真实的网络环境中或者 会更差。由本我们歌词 都都能不到得出我们歌词 都都某种 服务器或者 最大支持120人左右一齐访问。 

  

  

  在我们歌词 都都为后面 2台WEB服务器安装NLB之后,我们歌词 都都在其中任意一台上来新建群集,或者 将另外一台加入到某种 群集中即可,我们歌词 都都就在web-01(192.168.1.11000)上来新建某种 群集。在建立群集之后,我们歌词 都前要确保这2台服务器都会使用的静态IP,或者 无法将我们歌词 都都加入到群集中。

  现在我们歌词 都都来做一有一个 花费都会很大,又空间做的扩展,而是我前要改任何架构,我们歌词 都都而是我加在一台专门的数据库服务器。

   测试之后结束! 

  

   在加入第三台WEB服务器之后,我们歌词 都都的吞吐率(每秒处理请求数)再次得到提升从21000升至31000,并发处理能力再次提升56%,或者 我们歌词 都都能不到都看,1000并发以下的平均每请求处理时间都会1s以内,可喜可贺啊!

   最后上两图给我们歌词 都都更直观的看一下那此性能的变化:

  国内什么都有大型的网站的响应时间基本上都控制在1000ms以内,基本达到那种一输入地址敲回车,眨眼之间页面就出来了。当然这并都会光有个负载均衡加几台web服务器就能处理的,我们歌词 都都之后再来一步一步的实践下去。 话说回来,我们歌词 都都后面 的测试结果基本上不到并发为10的之后响应时间是在1000ms以内的, 看来我们歌词 都都还有很长的一段路要走啊。

  能不到都看现在我们歌词 都都的吞吐率至少平均在21000左右,与一台WEB服务器+一台DB服务器相比,处理能力又提高了1000%,为那此都会1000%呢?一台WEB服务器能处理1000的并发,那两台应该是1000才对呀?我想够想到以下因为:

  

原文:

  用户体验黄金法则之一: 网站加载时间 = 用户体验,别说3S,或者 等个2S你页面还没人来,用户准备背叛了,下面是淘宝购物车页面的加载时间 。

  后面 我们歌词 都都一台独立的Web服务器和一台独立的数据库服务器的组合或者 能不到处理1000左右的并发了,现在我们歌词 都都假想一下或者 网站的的知名度没人大,或者 一齐有1000个用户来访问为啥办? 从后面 的图中我们歌词 都都能不到都看1000个并发的之后服务器的处理时间为2582.637ms(实现上这是拿到响应的时间,或者 我们歌词 都都是一台机器上的不同虚拟机,我是在主机上做测试,什么都有我们歌词 都都就忽略网络传输的时间,假设某种 而是我我们歌词 都都的服务器处理时间),某种 服务器响应时间也而是我我们歌词 都都通过F12->网络 中都看的等候时间 。



  页面那此之后能 拿到某种 响应前要加在网络传输的时间,也而是我Receiving。1ms的传输时间堪称神速啊!来家用的长城宽带10M,老是早上网络出奇的好,一到晚上就挂掉了,还有或者 而是我我们歌词 都都现在都没人上博客园 :)

  在我的机器上有一台虚拟机配置如下:

  测试页面没人那此繁杂的逻辑,利用ASP.NET MVC4 + Entityframework 6.0 + SQL 10008 + IIS8.5来实现, 我们歌词 都都的页面也而是我一有一个 简单的列表页,列出系统后面 所有的商品。

  下面我们歌词 都都再来看一下测试结果:

  

  我们歌词 都都能不到都看,这里我们歌词 都都的吞吐率(每秒处理请求数或者 提升到了1000左右),并发处理能力提升了1000%,或者 1000和1000并发的之后响应时间也比后面 的架构要好一点。 

  现在我们歌词 都都就能不到到我们歌词 都都的真实机器上去访问192.168.1.254了,也而是我说马上我们歌词 都都就进入测试环节了。

  所有的请求首先详细到达Load balancer,再由它转发到具体的Web服务器,转发的法律土方式分为以下几种:

  Home Controller 代码 

 

  或者 ,是都会Windows平台下就不到实现那此大型的分布式系统呢?我相信某种 问題图片或者 被广泛讨论过,或者 至少我没人都看比较清晰的,详细的案例。带着那此问題图片,我决定升级我的机器,其他人 从头到尾在windows平台下搭建一有一个 高可扩展性的分布式网站出来。我经验尚浅,什么都有的东西还指在摸索阶段,什么都有或者 有错误,还请大师多多指点。

  负载均衡能不到帮我们歌词 都都处理有一个 方面的问題图片,第一有一个 即提高可用性。这后面 的可用性主而是我从WEB服务器,的波特率来讲的,或者 说我们歌词 都都不到一台Web服务器,而它遇到了某种 未知的错误因为IIS无法启动,没人我们歌词 都都的网站就无法访问了,这而是我某种 比较低的可用性。没人利用负载均衡,中放我们歌词 都都Web服务器的前面,由它来采集所有的请求,或者 转发给我们歌词 都都的Web服务器, 这之后我们歌词 都都就能不到加在两台Web服务器,或者 其暗含一台坏了,至少还有另一台在工作,而是我至于因为我们歌词 都都的网络无法访问。

  以上数据均来自其他人 机器上的测试,虚拟机详细采用与第一台服务器同样的配置。

  CPU: Intel Core I5- 4570, 3.19GHz,

  内存: 4G

  硬盘:20G (ShineDisk 固态硬盘)

  在数据库初始化的之后插入10000条测试数据

  

  连接字符串就使用本地连接就能不到了。

    我们歌词 都都能不到从一有一个 网站的最初级版本之后结束说起,最之后结束的之后我们歌词 都都决定搭建一有一个 网站,或者 我们歌词 都都也我想知道效果会为啥样,光键是那之后,我们歌词 都都很穷,于是我们歌词 都都租用了一台托管主机,它或者 承担了至少有一个 或以上的角色:WEB服务器、静态资源服务器,以及数据库服务器。我们歌词 都都能不到用ASP.NET MVC4 + SQL 10008来做一有一个 基本的电子商务网站,基本够用了。或者 也能承载多大的访问量呢?下面我们歌词 都都来做一有一个 简单的测试(注意:本文之后本系列所面所有的测试都会在虚拟机上进行的,忽略网络的因素,以及多台虚拟机一齐运行时CPU资源的因素,什么都有测试结果而是我一有一个 参考)。

  我们歌词 都都还能不到根据负载均衡器所使用的技术将它们分为以下几类:

  为了验证一下,我再扩展了一台WEB服务器,我们歌词 都都使用3台WEB服务器+1台DB服务器看看是那此效果。

  

  我们歌词 都都新建一台虚拟机web-03,或者 将它也加入到我们歌词 都都的群集中。

  

  从前说说我们歌词 都都的服务器架构就成了下面某种 样子:

  

  192.168.1.254 而是我我们歌词 都都暴露的內部IP地址,访问192.168.1.254的请求就会转发给后面 的两台WEB服务器。

  或者 或者 .NET也支持跨平台之后,那从前的格局或者 就要指在变化了。后面 所有的优势依然能不到保留,或者 加在它语法的优越性,以及快速的开发波特率等,还是会为其争得一席之地的。

  Index.cshtml 代码 

  

  正所谓“最好的架构是进化而来的,而都会设计出来的” ,面对我们歌词 都都现在的瓶颈暂时通过负载均衡加在多台Web服务器就能不到了。我们歌词 都都后面 讲到负载均衡器类型的之后有某种 Microsoft负载均衡,我们歌词 都都能不到很轻松的通过服务器管理器来将那此组件安放入 我们歌词 都都的服务器中。 安装我们歌词 都都就不讲了,而是我通过服务器管理-> 加在角色和功能->在功能中确定“网络负载均衡” 或者 安装就能不到了。

配置网络负载均衡

  当然,有人或者 会问,或者 那台Load balancer坏了为啥办?那都会还是访问不了网站么?我们歌词 都都这里讨论的是提高可用性,在做到36四天*24小时不间断的服务,前要有另外的组件来支撑,我们歌词 都都留在后面 讨论。除了可用性以外,负载均衡还能不到帮助我们歌词 都都提高可扩展性,当然某种 可扩展性同样是指的Web服务器层面。从网站性能的波特率来讲,好几只程序员花上好几天的时间做了一点优化所带来的效果有之后或者 还没人直接加一条内存条来的快。内存加完了没那此影响,我们歌词 都都还能不到换更好的CPU,CPU换完了,我们歌词 都都还能不到用固态硬盘,甚至什么都有公司或者 之后结束直接把数据中放内存中了(注:具体场景具体对待)。 或者 那此都会能不到加在了呢?那就加在机器吧,一台服务器能不到处理10000个并发,没人两台理论上是10000了,什么都有这都会了我们歌词 都都的横向扩展。

  您还能不到查看本篇的续篇: Windows平台下利用APM来做负载均衡方案 - 处理Session同步问題图片,以及彻底提高可用性。