稳定高效大型系统架构---集群中间件开发

那现在来说,稳定的中间件应该是什么样子呢?

       对于客户端请求,如果发现服务停止,可以实现服务无缝转移---这叫不丢失任何服务.

       对于多个客户端请求,可以讲请求轮巡到不同的服务器上---这样叫负荷平摊,如果再做到可以根据客户端数量方面地增减服务器数量,那就能很通过简单增加服务器,实现系统效率的提升。

       最牛的是,如果你再加上分布式程序设计。一个函数,根据服务器负荷平摊的特点,可以让多个服务器,同时为一个函数工作。

思考:

       第一:客户端请求,实现轮巡。

                   知道了请求,需要轮巡。就要先知道有那些服务器---》 设计服务器注册注销机制。

                   还要知道请求当前,每台服务器上有那些负荷---》客户端请求计算机制。

                   然后根据这些,计算当前请求由那个服务器来完成任务。

      第二:故障热切换

                  经试验验证,故障有三种情况

                 A)请求选择服务器前,有故障。

                 B)服务器选中后,准备开始要服务时,故障。

                 C)服务正在进行时,发生故障

为解决以上问题,我做出如下架构:

               

1、       在客户端,开发了安全访问机制,保证在有服务存在的情况,单次的访问异常,可以容错;同时若访问时发生故障,重新请求。

2、中间层开发了负荷平衡机制,其建立的集群,对客户端来说,是一个透明体。客户端只需要知道公布的服务集群IP地址,由负荷平衡自动分配请求;同时服务器发生故障时,自动从集群中移去,将请求切换至其它正常的服务器上。(中间层是一个无状态,多线程,分布式的应用程序服务,对任何一个请求,由哪台服务器提供服务都可以达到一致的目标)

转载于:https://www.cnblogs.com/lzjsky/archive/2011/06/28/2092367.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css实现web前端最美的loading加载动画!

这些好看的loading效果,你还只会用第三方库吗?CSS3教你实现 ​前言 loading效果在实际开发中是很常见的,尤其是在Ajax请求的时候,可以给用户一个很好的交互体验。 今天这篇文章我们一起来看看如何通过CSS3实现各种不同的loadin…

如何使用Hibernate从Play生成DDL脚本! 框架项目

好的,因此您一直在使用hibernate属性名称“ hibernate.hbm2ddl.auto ” value “ 更新 ”来不断更新数据库架构, 但是现在您需要一个完整的DDL脚本吗? 从您的Global Class onStart中使用此方法来导出DDL脚本。 只需为其提供实体的包名称&…

C# 设计模式,工厂方法

C#工厂方法 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 namespace 工厂方法 {8 class Program {9 static void Main(string[] args) { 10 IFacotry i new Fact…

javascript中令人迷惑的this

JS中的this很多时候会让人捉摸不透,不知道这个this到底指向的是什么。现在根据自己的理解写下这篇文章做一个总结。 我们知道this指向谁一般情况下是在运行时决定的,并且运行时决定this指向的因素又有很多,例如是不是被bind了,或…

容易忽视但是功能灰常强大的Java API(五. 二分查找)

五. 二分查找 二分查找是一个高效的查找算法,在java的集合对象中也提供了二分查找的算法,如下面的java api接口: java.util.Arrays.binarySearch(java.lang.Object,java.lang.Object,java.util.Comparator) java.util.Arrays.binarySear…

打印 PRINT

打印 PRINT 字符串和数值类型 可以直接输出。 print(1) #out:1 print(a) #out:a 变量 无论什么类型,数值,字符串,列表,字典...都可以直接输出 n 1 s a list_a [1,3,4] dict_c {a:3,b:4} print(n) #out&…

css3帮你轻松实现圆角效果,不一样的前端页面。

在Web前端页面实现圆角效果,CSS3帮你轻松实现,一个人人皆知的属性 圆角边框的绘制是Web页面和Web应用程序中经常用来美化页面效果的手法之一。今天,小编为大家介绍CSS3提供的可以将矩形变为圆角矩形的一个属性 技术等级:中级 | 适…

使用Vysper,TomEE和PrimeFaces将XMPP服务器嵌入JSF Web应用程序内部

我有一个需要在完成某些工作时通知用户的应用程序。 它使用JSF和Primefaces,因此可以使用大气 (也称为Push)来实现这种通知。 但是另一个有趣的方法是使用嵌入在Java Web应用程序中的XMPP服务器。 好的,好的,您不必嵌…

appium和selenium不同与相同之处

原文来自: https://www.cnblogs.com/zhengshuheng/p/6370398.html selenium是web端的自动化,appium是app端的自动化,它继承了webdriver(也就是selenium 2) 转载于:https://www.cnblogs.com/lv-lxz/p/11118862.html

Mockito 101

Mockito是一个模拟框架,可让您使用简洁的API编写漂亮的测试。 它偏向于最低规格,使不同的行为看起来有所不同,并显示清晰的错误消息。 创造嘲弄 要使用Mockito创建模拟,只需使用Mock注释模拟,然后调用MockitoAnnotati…

前端开发常用代码片段(下篇)

二十二、正则表达式 //验证邮箱/^\w ([0-9a-zA-Z] [.]) [a-z]{2,4}$///验证手机号/^1[3|5|8|7]\d{9}$///验证URL/^http:\/\/. \.///验证身份证号码/(^\d{15}$)|(^\d{17}([0-9]|X|x)$)///匹配字母、数字、中文字符/^([A-Za-z0-9]|[\u4e00-\u9fa5])*$///匹配中文字符/[\u4e00-\u9…

使用 Visual Studio 编译 wget 为库文件

添加代码与预编译指令与上一篇使用 Visual Studio 编译 wget 为可执行文件一致,区别在于这回建的是静态库工程(编译为动态库过程类似:)) 从wget的main函数开始读下来,发现问题不少,程序可能基于效率或者编码方便的因素…

动态规划(0-1背包)--- 改变一组数的正负号使得它们的和为一给定数

改变一组数的正负号使得它们的和为一给定数 494. Target Sum (Medium) Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5 Explanation:-11111 3 1-1111 3 11-111 3 111-11 3 1111-1 3There are 5 ways to assign symbols to make the sum of nums be target 3. 题目描述…

关于设计模式的胡思乱想

设计模式是一个指导,并不强制。有很多地方并不需要设计模式介入,因为设计模式是分离变化,很多代码是一次性的,不会变。如果我们一开始写程序的时候就加入设计模式,这样就显得过度设计,既耗时又费力。 并且…

JSR 310新日期/时间API的自定义JSR 303 Bean验证约束

借助JSR 310,Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人(例如我目前在我的当前项目中),有很好的反向移植,请访问www.threeten.org了解更多详细信息。 但是,由于有关该主题的…

H5之audio标签放音兼容所有浏览器方法

前端交流群&#xff0c;群文件提供大量文档、书籍和资料。期待你的加入&#xff01;群号&#xff1a;127768464 由于项目需要&#xff0c;最近刚做了一个网页放音的功能&#xff0c;使用到了H5新标签<audio></audio>&#xff0c;但是audio只能支持IE8以上的浏…

VisualStudio2010 SP1 SP1 SDK SQLServer 2008 SP3 下载地址

SP1:http://go.microsoft.com/fwlink/?LinkId210710 SP1 SDK:http://www.microsoft.com/download/en/details.aspx?id21835 SQLServer2008 sp3:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid757bca07-7b52-46fb-ab92-476be9339442&displaylangzh-cn …

python高级特性:迭代器与生成器

前言 有一个列表 l [a,b,c,d,e] 我想取列表中的内容&#xff0c;有几种方式&#xff1f; # 1.最简单的方法用for循环。 for i in l:print(i,end" ") # 2.用列表内置的方法。 while 1:if l:print(l.pop(),end" ") 这是用常见的方式取出列表中的数据。 …

webpack中实现按需加载

当页面中一个文件过大并且还不一定用到的时候&#xff0c;我们希望在使用到的时候才开始加载这个文件俗称按需加载。这样可以减少页面的响应时间&#xff0c;提高访问速度。 使用webpack打包的出来的文件要实现以上的要求有两种方式&#xff0c;一个是webpack特有的require.en…

H5各种头部meta标签的功能

<!DOCTYPE html> H5标准声明&#xff0c;使用 HTML5 doctype&#xff0c;不区分大小写 <head lang”en”> 标准的 lang 属性写法 <meta charset’utf-8′> 声明文档使用的字符编码 <meta http-equiv”X-UA-Compatible” content”IEedge,chrome1″…