您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 伪语义树 >

这样的高可用我不要!

发布时间:2019-06-27 02:38 来源:未知 编辑:admin

  前不久,朋友的公司,出现了比较大的故障。故障引起的原因也比较好解释,因为使用了ActiveMQ的高可用级别(M-S架构,双写完成ACK),结果在高峰期间,造成了生产端消息拥堵,诸多请求无法落地,数据错乱。

  据他说,他们的应用,级别比电信应用还要高(牛皮一定要吹),所以消息系统要求一条消息都不能丢。他做到了,但是服务不能用了。

  这个Case有何而来呢?据说是来自一次高管会议上,某位领导对其中的一个小问题情绪激动:他测试环境测试的某条数据,直接不见了,生产环境并未复现。矛头最终指向了消息系统,直接上升到断电后怎么办云云。

  领导发威,事情要特事特办。架构组扯蛋似的熬夜讨论了改进的方案,从Kafka到RocketMQ,从落盘DB到升级到StoreHA方案,不亦乐乎。最终的讨论结果,就是采用极高可用的方式。领导的条件满足了,消息系统也是高可用的,但整个业务不是。最终的MQ吞吐量,连个DB都不如。

  高可用是个伪命题,虽然有CAP等耳熟能详的理论支持,还是有很多人陷入了这个误区,包括技术决策人。架构作为全局把控人,能出现这样的错误,纯属低级。下面,是我自己对高可用的一点思考。

  拿消息队列来说,并不是说保证消息队列的存活和消息的可靠,就完成了工作。还需要考虑生产端和消费端的拓扑和高可用。比如,生产端异常关闭,缓冲区的处理,低吞吐环境下的消息过盛处理;消费端的消息积压,

  你要是没有提前对业务进行容量分析,也没有相应的扩容手段,更没有对容易发生问题的环节进行监控,那么锅就是你的,没得跑。

  业务都跑不下去了,你的服务端组件无论多么的可靠,也是废物。拿秒杀系统来说,你不会要求它先可靠的落地,反而会用一些次可靠的缓存系统进行缓冲,此所谓可用。只有保证了业务的正常流转,才能谈可靠性。

  这就是大家常说的熔断。比如一个收银系统,不会等着你的后台真正处理了各种记账逻辑才会返回成功。它的主要目的就是收款,先让你把钱花出去再说,你不能因为一个消息发送失败,就要求支付也一块失败。这个时候,消息就作为一个旁路应用存在,必须设置合理的超时,以至熔断。

  限流就是让用户在最外层就阻断,不让请求进来。用户虽然会看到失败的请求,但不会产生危害性的请求(逻辑交错执行的数据错乱)。撑不住就承认算了,请求导到后台,搞死了某个基础组件,更严重。

  分布式系统谈的最多的就是最终一致性,但鲜有人知,最终一致性包括人工环节,甚至客服的介入。一般,产生异常数据的概率还是比较小的,人工可以处理过来。另外,还有其他优化手段:

  谈高可用很牛逼么?并不见得。你要能分析提出方的品性和认知能力,分析各种技术手段的后果。并不是谁的权利大谁的观点就正确 ,很多领导挥舞完大棒,脑子里就已经忘掉了2/3,不是本质问题不用关心。

  分布式系统是个复杂的整体,不要以偏概全,搞定了某个组件并不等于搞定真个系统。领导会认为这样,你不能。

  一些反例总能引起有益的思考。分析身边的需求,哪些是枪杆子需求,哪些是传话筒需求,都可以说不,坚持自己的专业认知!如果你不知道怎么说,可以把小姐姐味道这篇文章转给他,让他瞧瞧后果。

  IAP升级功能编写初期的一些困惑与疑问---完成功能后的总结 一,网上下载的例程,跳转部分的代码有差异,尤其是用的汇编那句 二,关于跳转部分的代码的理解(转) 三,关于跳转时能否不用按键,用软件标志位...博文来自:Super_Demo的专栏

  现在的Win7系统中安装的一般都是32位的Office,因为微软推荐使用32位的Office,兼容性更强,稳定性更好。在使用Access作为数据库的时候,C#操作Access,如果Access是acc...博文来自:写代码的蜗牛

  转载请注明出处:     在上一篇blog中介绍过POI检索的使用,本篇blog主要介绍公交信息检索和线路规划的内容。 公交信息检索     实际上,公交信息检索与POI检索、在线建议检索非常相似,也...

  Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...

  u011860731的专栏C#实现开发windows服务实现自动从FTP服务器下载文件(自行设置分/时执行)

  最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的文件是否发生改变,如果改变就执行相应的操作,然后用timer...

  摘要 最近要发论文了,被知乎里人推荐使用论文编译软件(CTex、LaTex和Overleaf之类),瞬间感觉自己用Word简直Out了(书读少)。 学校里也听说过LaTex,不过因为当时没怎么写过...

  看到很多朋友配置vsftpd时不能使用匿名用户上传和下载(创建目录或删除、重命名文件夹),本文主要解决vsftpd的匿名用户权限配制问题。...

  一个例子高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一...

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...

  Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且...

  klkxxy的博客三菱FX系列PLC与PC通讯的实现之专有协议(计算机联接)的程序设计之一

  阅读内容为:FX系列微型可编程控制器用户手册(通讯篇)中计算机链接功能章节。 采用本方法通信,pc端的实现,其实就是,把操作按照协议(2种)翻译成相应的字符串,通过串口发送给plc。 编写一应用程...

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...

  u013268685的专栏(有一种幸福叫AC,有一种期待叫AK)简单linux字符设备驱动程序与编程小技巧(上)

  这几天开始研究linux下的驱动程序编写了,遇到的问题也挺多的,好在linux是开源的,很多高人编写的技巧和思路都会在他们的源代码中体现,我也在他们的源码中学到了很多好东西,我归纳了下贴出来,希望自己...

  苹果充值的刷单现象在游戏行业非常普遍,很多团队挖空心思寻找漏洞以非法获利。常见的手段主要有以下六种: 伪造充值凭据(receipt)以小额凭据骗取大额商品 凭据重复使用 凭据重复使用信用卡黑卡/...

  分享知识、分享进步jquery/js实现一个网页同时调用多个倒计时(最新的)

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...

  一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托...

  如下图所示,蜂窝小区,以1为中心,顺时针编号,编号最大限定为100000。求任意两编号之间的最短距离。两个相邻小区的距离为1 示例:19到30的最短距离为5 实现如下三个接口: /**********...

  NYS001的专栏魔兽争霸3冰封王座1.24e 多开联机补丁 信息发布与收集点

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...

http://lsm-systems.com/weiyuyishu/176.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有