1、设计目的nginx
从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构。基于window平台搭建的大型分布式系统很少,以前了解过myspace、stackoverflow等大型网站。搭建一个大型平台须要综合考虑不少方面,不单纯是软件架构,还包括网络和硬件设备等。因为现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能知足需求,须要支持分布式软件架构,能支持横向扩展,具备高可用、伸缩性、稳定性等特色。结合本人这些年的开发和设计经验,搭建以下系统架构。web
2、系统软件结构redis
系统软件结构示意图sql
系统基于SOA架构设计,系统总体划分为不一样组件或者应用服务,支持分布式的部署及扩展,并经过Nginx组件实现负载均衡。根据逻辑关联划分为:表现层、应用层和数据层。表现层负责系统与用户或者外部系统交互;应用层是服务于表现层,主要实现业务逻辑处理知足表现层的需求;数据层是负责系统数据的存储。数据库
(1)表现层设计模式
主要负责与用户和外部系统交互,具体提供系统可操做WEB功能、数据交换程序或者数据接口。知足不一样的场景使用。Web Layer主要用asp.net mvc5技术实现;Data Exchange根据需求实现数据交换程序;Data Interface主要基于http协议,用Web API技术实现。api
(2)应用层缓存
主要负责系统逻辑计算的实现,提供服务接口给展示层使用。此两层之间通讯基于系统内部局域网tcp/ip协议,为了提升数据传输效率。根据应用服务职责不一样,将分两大类,分别为业务应用服务和基础应用服务。业务应用服务实现业务需求的功能服务,好比用户订单、某类商品的管理功能等。基础应用服务实现系统基础公用的功能服务,好比:日志服务、缓存服务、用户认证服务功能等。本系统应用服务通常使用.NET平台的通讯框架WCF技术实现,个别其余组件除外,好比MQ组件、Redis缓存组件。安全
(3)数据层服务器
主要负责系统数据存储、同步、缓存和备份管理。本系统数据分为结构化数据和非结构化数据。对于结构化数据使用MSSQL2008以上数据库存储,基于MSSQL复制同步的机制,能够进行数据读写分离的实现,提高数据层面的优化。对于本系统业务日志数据的存储选型,因为考虑到业务日志数据结构多样化、数据量较大,因此选用MongoDB的NoSQL技术,同时系统面对着高并发的访问,采起了缓存的机制提高性能,选用Redis缓存组件实现数据缓存存储。对于非结构化数据存储,好比文档、图片等数据,本系统基于Windows平台NTFS文件系统实现文档存储和读写功能。
3、系统物理结构
系统物理结构示意图
本系统网络分为:内部局域网和互联网。服务器位于内部局域网,经过反向代理服务器对互联网公布系统,用户经过互联网访问系统。从网络层面安全进行隔离。用户访问系统基于http协议,系统内部之间服务器通讯基于tcp/ip协议。根据部署应用的划分,将服务器分为负载均衡服务器、Web服务器、应用服务器、数据服务器四大类。
(1)负载均衡服务器
基于Linux之CentOS平台搭建Nginx服务,做Load Balance。
(2)Web服务器
基于window平台下IIS web服务器。部署基于asp.net mvc、web api技术实现的程序。
(3)应用服务器
部署基于.net平台通讯框架之WCF技术实现的服务接口,提供与展示层调用,其中部分公用组件,如MQ则根据组件的要求部署。
(4)数据服务器
本系统数据存储选用:mssql数据库、MongoDB、Redis缓存和文件存储。根据项目状况数据库可作读写分离,同时结合redis作缓存策略提升系统性能。
本章节先大体介绍系统框架及物理结构状况,因为涉及几个技术点,好比:nginx负载均衡搭建、asp.netmvc与WCF服务之间调用、redis分布式缓存使用、MongoDB存储日志、MQ异步传输日志数据、文件服务实现。后续逐步介绍。
微信号: