传说中的盟主 發表於 2016-4-5 00:03:00

Net分布式系统之一:系统整体框架介绍

<p>  <strong>一、设计目的</strong></p>
<p>  从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构。基于window平台搭建的大型分布式系统不多,之前了解过myspace、stackoverflow等大型网站。搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等。由于现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架构,能支持横向扩展,具有高可用、伸缩性、稳定性等特点。结合本人这些年的开发和设计经验,搭建如下系统架构。</p>
<hr>
<p>&nbsp;</p>
<p>  <strong>二、系统软件结构</strong></p>
<p>  <img style="display: block; margin-left: auto; margin-right: auto" src="https://images2015.cnblogs.com/blog/42248/201604/42248-20160404232308750-481994768.png" alt=""></p>
<p style="text-align: center">&nbsp;系统软件结构示意图</p>
<p>  系统基于SOA架构设计,系统整体划分为不同组件或者应用服务,支持分布式的部署及扩展,并通过Nginx组件实现负载均衡。根据逻辑关联划分为:表现层、应用层和数据层。表现层负责系统与用户或者外部系统交互;应用层是服务于表现层,主要实现业务逻辑处理满足表现层的需求;数据层是负责系统数据的存储。</p>
<p><strong>  (1)</strong><strong>表现层</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要负责与用户和外部系统交互,具体提供系统可操作WEB功能、数据交换程序或者数据接口。满足不同的场景使用。Web Layer主要用asp.net mvc5技术实现;Data Exchange根据需求实现数据交换程序;Data Interface主要基于http协议,用Web API技术实现。</p>
<p><strong>  (2)</strong><strong>应用层</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要负责系统逻辑计算的实现,提供服务接口给展现层使用。此两层之间通信基于系统内部局域网tcp/ip协议,为了提高数据传输效率。根据应用服务职责不同,将分两大类,分别为业务应用服务和基础应用服务。业务应用服务实现业务需求的功能服务,比如用户订单、某类商品的管理功能等。基础应用服务实现系统基础公用的功能服务,比如:日志服务、缓存服务、用户认证服务功能等。本系统应用服务一般使用.NET平台的通信框架WCF技术实现,个别其他组件除外,比如MQ组件、Redis缓存组件。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>(3</strong><strong>)数据层</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要负责系统数据存储、同步、缓存和备份管理。本系统数据分为结构化数据和非结构化数据。对于结构化数据使用MSSQL2008以上数据库存储,基于MSSQL复制同步的机制,可以进行数据读写分离的实现,提升数据层面的优化。对于本系统业务日志数据的存储选型,由于考虑到业务日志数据结构多样化、数据量较大,所以选用MongoDB的NoSQL技术,同时系统面对着高并发的访问,采取了缓存的机制提升性能,选用Redis缓存组件实现数据缓存存储。对于非结构化数据存储,比如文档、图片等数据,本系统基于Windows平台NTFS文件系统实现文档存储和读写功能。</p>
<hr>
<p>&nbsp;</p>
<p>  <strong>三、系统物理结构</strong></p>
<p>&nbsp;<img style="display: block; margin-left: auto; margin-right: auto" src="https://images2015.cnblogs.com/blog/42248/201604/42248-20160404233007312-192958087.png" alt=""></p>
<p style="text-align: center">&nbsp;系统物理结构示意图</p>
<p>  本系统网络分为:内部局域网和互联网。服务器位于内部局域网,通过反向代理服务器对互联网公布系统,用户通过互联网访问系统。从网络层面安全进行隔离。用户访问系统基于http协议,系统内部之间服务器通信基于tcp/ip协议。根据部署应用的划分,将服务器分为负载均衡服务器、Web服务器、应用服务器、数据服务器四大类。</p>
<p>  <strong>(1)负载均衡服务器</strong></p>
<p>    基于Linux之CentOS平台搭建Nginx服务,作Load Balance。</p>
<p>  <strong>(2)Web服务器</strong><strong><br></strong></p>
<p>    基于window平台下IIS web服务器。部署基于asp.net mvc、web api技术实现的程序。</p>
<p>  <strong>(3)应用服务器</strong><strong><br></strong></p>
<p>    部署基于.net平台通信框架之WCF技术实现的服务接口,提供与展现层调用,其中部分公用组件,如MQ则根据组件的要求部署。</p>
<p><strong>  (4)数据服务器</strong><strong><br></strong></p>
<p>  本系统数据存储选用:mssql数据库、MongoDB、Redis缓存和文件存储。根据项目情况数据库可做读写分离,同时结合redis做缓存策略提高系统性能。</p>
<p>本章节先大致介绍系统框架及物理结构情况,由于涉及几个技术点,比如:nginx负载均衡搭建、asp.netmvc与WCF服务之间调用、redis分布式缓存使用、MongoDB存储日志、MQ异步传输日志数据、文件服务实现。后续逐步介绍。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_Highlighter sh-gutter" style="background-color: rgba(245, 245, 245, 1); padding: 14px; border: 1px dotted">
作者:andon
<br>
出处:http://www.cnblogs.com/Andon_liu
<br>
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。
如有问题或建议,请一起学习讨论!
<br>
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
<br>
如有问题,可以邮件:568773262@qq.com 联系我,谢谢。</div>
<p>
<br>微信号:
<img src="https://images.cnblogs.com/cnblogs_com/Andon_liu/1001448/o_e.jpg" alt="" name="weixinhao"></p>
<p>&nbsp;</p>
<div>&nbsp;</div><br><br>
来源:https://www.cnblogs.com/Andon_liu/p/5353488.html
頁: [1]
查看完整版本: Net分布式系统之一:系统整体框架介绍