.Net架构设计(十)你是怎样搭建.net架构

有关面试问你如何搭建.net互联网架构?

1、根据项目情况-搭建不同架构。

      设么是项目的性质,具体就是项目设计满足什么样的需求。

       具体有以下指标:

       项目可用性(这个比较虚,什么是可以的项目,这样就要预估计项目上线后大概的 PV,IP,UV(PV,IP,UV观念)

       项目的安全性(具体就是数据的保密,敏感性,如果涉及到钱应该充分考虑其安全性)

       下面给出笔者总结的一般设计标准。

           超大型:日均pv1以上,IP/UV 3000万 ,均每秒pv1157,峰值PV每秒5000

             大型:日均PV1000万,IP/UV 250万,每秒pv100,峰值PV每秒pv500

             中型日均pv100万,IP/UV 25万   ,每秒pv10,峰值PV每秒 50

             小型日均pv10万,IP/UV 1.5万    ,每秒pv1 峰值PV每秒5

          通常情况下动态网页的相应要在0.6s以下.否则用户会感到很慢.理想的情况是0.3s以内项目开发完成后测试一下pv请参考:如何估算网站日承受最大访问PV 

  •  对于小型的网站不用说,也用不着架构,web服务器和DB服务器。各用一台机器,或用一台机器都ok.
  •  对于中型网站,瓶颈大都在数据库;Web服务器+数据库集群,如果存在大量文件存储和获取,建议单独将文件Web服务+mogodb集群
  •  对于大型网站,Nginx+IIS集群 +Redis/Memechaed 缓存 +文件Web服务+mogodb集群+SqlServer数据库读写集群+(js+css,样式图片)样式web服务器。
  • 超大型网站,笔者没做过,应该是综合引用各种技术,充分应用缓存技术,和NoSql技术的介入。

        其实一般的网站,都是从小中型网站发展起来的,随着用户数和pv和数据量不断的增加,架构这逐步分析瓶颈所在并逐步优化重构网站。

        具体问题具体分析。

        一般来讲,我做.Netweb架构

          一、DB首先层考虑 Sqlserver 主从集群(双机热备)

                 这样有效的保证了数据库的灾难容错。

                 如果预计这个产品会产生很多数据。会在程序设计初期就考虑读写分离。(在web.config里面配置两个数据链接串,一个读,一个写前期两个配置成一样的如果后期数据库压力凸显,可以做sqlserver的读写分离)

          二、如果产品中设计到文件管理这块内容。

                 我会单独建立一个专门访问文件的Web服务器。文件的存储用现在最流行的mogodb进行存储。(mogodb水平扩展很容易)

          三、web服务器,通常是一个,如果由于Web服务器解析动态网页解析产出了瓶颈,立刻增加web服务器用Nginx做负载均衡。

                 单在初期建站的时候,会考虑后期扩展,会做2件事情。第一不用Session,我会用Redis/memechaed 来缓存用户数据。

                 任何引用 css,javascript,样式图片 都要加一个资源系统配置的前缀(如果:http://xxxx.com/  前期配置成当前网站,后期可以增加 静态文件web服务器,专门处理js,css,样式图片这类请求)。

         四、考虑用Redis服务来缓存用户登录信息。(这样即使扩展到IIs集群也不会有问题)而且Redis也可以做集群的水平扩展。

                考虑把一些很少更改但是又经常使用的数据放在Redis里面进行缓存。

         五、如果有搜索引擎需求,会选用Elasicsearch.

               有关搜索引擎的选择:搜索引擎的选择

         六、如果业务涉及到多数据库,数据源协调,会选用一款成熟的ETL工具进行同步。

         七、如果产品涉及到手机端,会单独为手机搭建手机访问接口。

          有手机时应该考虑,数据的传输的数据量 要尽量小。

          2下面是几种技术:

  •            图片要尽量压缩,必要时候采取,缩略图和+原图的方式。
  •            对于接口返回的数据形式 采用 Json,(不要采用Xml)。必要时可以采用BSON.

二、下面就是.net 项目组件选取。

  •           我现在建立的web项目一般都是MVC4.5的,很少用WebForm了。
  •           使用Jquery 为项目javascript类库
  •           选用ORM工具。
  •           使用自己多年积累的公共方法组件CommToos


你可能感兴趣的:(C#【高级】互联网架构)