.NET开发框架(三)-高可用服务器端设计
我们对框架功能作了简述,演示视频请点击 这里查看 ,若需要查看更多此框架的技术文章,请关注.NET框架学苑公众号!
本章节,我们专门讲解一下,如何在Window服务器下,设计高可用的框架。
我们的框架设计采用的是Window版本的服务端设计:
整体框架图如下,
为什么我们需要如此设计?
本文仅简述NLB与ARR的利与弊,更多技术文章往后推出。

我们引入NLB,相对于ARR来说,ARR是应用级别的负载均衡方案,ARR只能做请求入口的分发服务,而NLB则是服务器级别的负载均衡方案。
如果微软的这两款方案我们结合起来使用,即可搭建高可用网站方案。
Application Request Route与NLB高可用方案的演进
1、Application Request Route方案,如下图

缺点:
ARR可以检测到你的iis应用是否可用,并对用户的请求实施负载均衡方案,根据我们配置的负载均衡算法,把用户的请求分发到应用服务器中。
但是,如果我们的ARR服务器down掉之后,我们的整个应用程序就无法使用,达不到24*7用不宕机的高可用要求。
2、NLB的网路负载平衡方案

缺点:
NLB可以最多可以配置32台服务器,这32台服务器通过拥有自己的独立ip之外,还共有一个虚拟IP,用户访问虚拟ip,nlb集群根据配置的负载算法来确定把用户的请求分发给那台应用服务器,如果一台NLB服务器down掉,则不会影响消息的分发可达到7*24小时不down机的高可用方案。
但是,NLB不能检测应用你的iis网站是否down掉,只能检测服务器是否down掉,这样一来,如果你的iis网站已经停止啦,nlb还给分发用户请求,那样麻烦可就来啦。
那么我们使用微软的技术怎么样做到网站的高可用呢?对,就是NLB+Application Request Route .
3、NLB+Application Request Route 方案

优点:用户请求虚拟ip,接入nlb,nlb检测一台可用的服务器,请求转发给arr,arr检测可用的网站把用户请求给分派处理,形成高可用方案。
框架设计预研中,灵感来源参考文献:https://cnblogs.com/knowledgesea/p/5157565.html
经过综合分析后,我们最终采用了NLB+ARR的结合,形成如下设计图

对于此框架的设计(优点与缺点),元芳,您怎么看?欢迎扫右上方二维码,关注公众号,留言吐槽。
.NET开发框架(三)-高可用服务器端设计的更多相关文章
- 高可用服务设计之二:Rate limiting 限流与降级
<高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...
- 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...
- Docker Kubernetes 高可用架构设计
Docker Kubernetes 高可用架构设计 官方方案:保证master端不发生单点故障. 官方使用一台Load Balancer负载均衡代理3台master端,终端与etcd与work Nod ...
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- Redis 高可用架构设计(转载)
转载自:https://mp.weixin.qq.com/s?__biz=MzA3NDcyMTQyNQ==&mid=2649263292&idx=1&sn=b170390684 ...
- 【MySQL高可用架构设计】(一)-- mysql复制功能介绍
一. 介绍 Mysql的复制功能是构建基于SQL数据库的大规模高性能应用的基础,主要用于分担主数据库的读负载,同时也为高可用.灾难恢复.备份等工作提供了更多的选择. 二.为什么要使用mysql复制功能 ...
- Redis的高并发、持久化、高可用架构设计
就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...
- ZEGO音视频服务的高可用架构设计与运营
前言: ZEGO 即构科技作为一家实时音视频的提供商,系统稳定性直接影响用户的主观体验,如何保障服务高可用且用户体验最优是行业面临的挑战,本文结合实际业务场景进行思考,介绍 ZEGO 即构在高可用架构 ...
随机推荐
- Project Euler:Problem 28 Number spiral diagonals
Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is forme ...
- Opencv 张正友相机标定傻瓜教程
注: 程序所用的OpenCV版本是 2.4.10 ,3.0以上的版本可能会有不同 先贴一下完整的工程代码: #include "opencv2/core/core.hpp" #in ...
- wxWidgets编译和在VC 6.0中的配置
1. 安装 运行wxMSW-2.8.3-Setup1.exe,将之安装到不带空格符号的目录中,本例为C:/wxWidgets-2.8.3: 2. 编译和配置 (1) 用VC6.0编译 进入C: ...
- Ajax打开三种页面的请求
xmlhttprequest对象可以打开两种方式的页面请求 1,.asmx格式的webservice页面. 2,.aspx格式的web窗体 其中web窗体可以是调用一新建的web窗体,同时调用和被调用 ...
- WPF“天狗食月”效果
原文:WPF"天狗食月"效果 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/deta ...
- typescript调用javascript && URI.js
URI.js URI.js是一个用于处理URL的JavaScript库它提供了一个“jQuery风格”的API(Fluent接口,方法链接)来读写所有常规组件和许多便利方法,如.directory() ...
- IOS开发之iOS深浅拷贝
这里主要侧重于集合类的深浅拷贝,主要事因为工作的时候遇到这个问题. 有不足的地方欢迎指正 首先我们需要有这样的一个前提: [array addObject:obj]; 这样obj的引用计数会增加1,如 ...
- HTTP协议-请求报文
- Lambda表达式的参数捕获
以常用的Action委托为例: 有如下3个无参数的方法: public void Function() { //Do something } public void Function2() { //D ...
- Android项目实战(一): SpannableString与SpannableStringBuilder
原文:Android项目实战(一): SpannableString与SpannableStringBuilder 前言: 曾经在一些APP中的一些类似“帮助”“关于”的界面看过一行文字显示不同的颜色 ...