Net分布式系统整体框架
Net分布式系统之一:系统整体框架介绍
一、设计目的
从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构。基于window平台搭建的大型分布式系统不多,之前了解过myspace、stackoverflow等大型网站。搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等。由于现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架构,能支持横向扩展,具有高可用、伸缩性、稳定性等特点。结合本人这些年的开发和设计经验,搭建如下系统架构。
二、系统软件结构
系统软件结构示意图
系统基于SOA架构设计,系统整体划分为不同组件或者应用服务,支持分布式的部署及扩展,并通过Nginx组件实现负载均衡。根据逻辑关联划分为:表现层、应用层和数据层。表现层负责系统与用户或者外部系统交互;应用层是服务于表现层,主要实现业务逻辑处理满足表现层的需求;数据层是负责系统数据的存储。
(1)表现层
主要负责与用户和外部系统交互,具体提供系统可操作WEB功能、数据交换程序或者数据接口。满足不同的场景使用。Web Layer主要用asp.net mvc5技术实现;Data Exchange根据需求实现数据交换程序;Data Interface主要基于http协议,用Web API技术实现。
(2)应用层
主要负责系统逻辑计算的实现,提供服务接口给展现层使用。此两层之间通信基于系统内部局域网tcp/ip协议,为了提高数据传输效率。根据应用服务职责不同,将分两大类,分别为业务应用服务和基础应用服务。业务应用服务实现业务需求的功能服务,比如用户订单、某类商品的管理功能等。基础应用服务实现系统基础公用的功能服务,比如:日志服务、缓存服务、用户认证服务功能等。本系统应用服务一般使用.NET平台的通信框架WCF技术实现,个别其他组件除外,比如MQ组件、Redis缓存组件。
(3)数据层
主要负责系统数据存储、同步、缓存和备份管理。本系统数据分为结构化数据和非结构化数据。对于结构化数据使用MSSQL2008以上数据库存储,基于MSSQL复制同步的机制,可以进行数据读写分离的实现,提升数据层面的优化。对于本系统业务日志数据的存储选型,由于考虑到业务日志数据结构多样化、数据量较大,所以选用MongoDB的NoSQL技术,同时系统面对着高并发的访问,采取了缓存的机制提升性能,选用Redis缓存组件实现数据缓存存储。对于非结构化数据存储,比如文档、图片等数据,本系统基于Windows平台NTFS文件系统实现文档存储和读写功能。
三、系统物理结构
系统物理结构示意图
本系统网络分为:内部局域网和互联网。服务器位于内部局域网,通过反向代理服务器对互联网公布系统,用户通过互联网访问系统。从网络层面安全进行隔离。用户访问系统基于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异步传输日志数据、文件服务实现。后续逐步介绍。
Net分布式系统整体框架的更多相关文章
- Duilib源码分析(一)整体框架
Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...
- Java集合系列:-----------01集合的整体框架
内容来自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映 ...
- 初识cocos2d-x-从环境配置到整体框架
前言 ACM生涯在带着些许遗憾中结束了.春招的时候找了一份游戏开发的工作,现在学习cocos2dx中. 从ACM竞赛到实际项目开发的学习,第一感觉就是不适应,虽然感觉实际项目的确要比ACM简单的多.最 ...
- [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码
这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥, 只 ...
- iOS学习——iOS 整体框架及类继承框架图
整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...
- 关系型数据库工作原理-数据库整体框架(翻译自Coding-Geek文章)
本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...
- 项目的整体框架,以及Topology的设计
一:说明 1.项目的整体框架 2.Topology的设计 3.记录 0. 89.201.10.122 - - [1528033390201] "GET /edit.php HTTP/1.1& ...
- jQuery源码分析之整体框架
之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总 ...
- zeptojs库解读1之整体框架
首先看的是整体框架, // zepto骨骼,这个函数的作用使得Zepto(slector, context)使用很多$.fn里面的方法 var Zepto = (function(){ // zept ...
随机推荐
- IOS8-人机界面指南
[ISUX转译]iOS 8人机界面指南(一):UI设计基础 糖箔糊2014.09.23 文章索引 1.1 为iOS而设计(Designing for iOS) 1.1.1 以内容为核心(Defer t ...
- (转)RocketMQ源码学习--消息存储篇
http://www.tuicool.com/articles/umQfMzA 1.序言 今天来和大家探讨一下RocketMQ在消息存储方面所作出的努力,在介绍RocketMQ的存储模型之前,可以先探 ...
- 071——VUE中vuex之使用getters计算每一件购物车中商品的总价
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
<?php /**文件处理flock 文件锁定 pathinfo realpath tmpfile tempname */ /*$arr=pathinfo('ab.txt');//获取文件路径的 ...
- POJ 3259 Bellman_Ford算法
额.关键是读题.反正我是看了解题报告才知道意思的.给你n个点.m条路.双向的.耗费时间.w个虫洞.单向的.时间为负值.问你是否可以从某一点返回看到之前的自己.即为判断是不是有负环.用Bellman_F ...
- bzoj1677
题解: 背包 每一个1<<i都是无限量 代码: #include<bits/stdc++.h> using namespace std; ,M=1e9; int n,dp[N] ...
- How to pass string parameters to an TADOQuery?
http://4byte.cn/question/1130217/how-to-pass-string-parameters-to-an-tadoquery.html 从2个答案看,如果TADOQue ...
- DevExpress v18.1新版亮点——Windows 10 UWP篇
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Windows 10 UWP v18.1 的新功能,快来下载 ...
- DevExpress v17.2新版亮点——CodeRush篇(一)
用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush v17.2 的新功能,快来下载试用新版本! Unit Test ...
- MyEclipse移动开发教程:迁移HTML5移动项目到PhoneGap(二)
MyEclipse开年钜惠 在线购买低至75折!立即开抢>> [MyEclipse最新版下载] 二.将文件从HTML5项目复制到PhoneGap项目中 1. 在HTML5 app项目的ww ...