谷歌浏览器崩溃设置崩溃

“让它崩溃”是Erlang世界中的一个口号,在该上下文中具有非常特定的含义,但是如果脱离上下文可能会被严重误用。

在Erlang世界中,“崩溃”是指参与者在其特定上下文中的终止。 在精心设计的参与者系统中,参与者具有非常具体的工作,如果他们无法完成该工作,他们会立即失败。 对于在JVM领域工作的人们来说,这是一个问题,因为崩溃可能重载,意味着事物会改变事务系统的语义。

真实示例:假设您有一个分布式系统,该系统接受一条消息,将其写入数据存储,然后将新消息传递给其他三个组件。 进一步假设系统的事务语义是,直到所有四个操作都已经完成并且#1永久成功或#2永久失败之后,作业才“完成”。

这里重要的细节是,在执行转帐时,我们希望两个帐户的余额都作为一次交易进行更新并且我们不能处于钱已经离开一个帐户但还没有到达另一个帐户的状态。 为此,需要分布式事务的概念,但不使用“开箱即用”的分布式事务协调器。 为了明确起见,我们将假定所描述的组件是通过Web服务公开的,并且无法访问彼此的基础事务管理系统。

因此,为了进行此设计,简单的实现(将其称为同步模型)如下:

在此模型中,我们需要处理以下情况:如果嵌套事务中的任何一个失败,则请求者也可以回滚OTHER事务,并向客户端报告整个事务已失败。 我不会深入研究细节,但这相当复杂,我们将不理会这些细节。 这里的重要细节是整个事务都是同步且阻塞的。 这意味着客户端和请求者必须在其他组件上报告“成功”或“失败”之前在其他组件上报告“成功”或“失败”(通常在内存中),并且必须四处闲逛。 此外,这意味着任何组件最终故障都是“永久性”故障(从客户的角度来看),并且由客户决定重试交易是否重要。 尽管某些故障可能确实是永久的(一个或另一个帐户可能不存在或永远不会存在),而其他一些故障(与一个或另一个帐户更新者的连通性)可能只是短暂的和/或短暂的。

在很多方面,这将事情简化了,因为它将成功或失败的管理职责委派给了最左边的组件。 话虽这么说,例如,如果第一个更新程序成功,但是请求者死亡,并且无法回滚第一个事务,则仍有可能出错。

如此说来,很明显(我希望)是,如果请求处理器死亡,则需要一些中间管理来确定是否存在“部分”事务,如果发生故障,可以立即回滚部分事务。 例如,这可能是这样。

我们仍在回避一些内部事务管理内务处理,但是重要的细节是,在客户失去对请求者的跟踪(因为它死了)与主管的最终“交易失败”之间,客户不知道事务的状态是什么……确实可能是事务成功了,但是传输请求者和客户端之间的连接完全失败了。

因此,此模型中的问题有两个方面:#1“主要”是同步的(尽管“请求管理者”->“客户端消息传递”显然不是),并且“#2”假定传输请求者只要失败就可以“失败”。系统部分发生间歇性故障会导致发生部分更新。 显然,这可能取决于接受的业务规则,但可能是不可接受的,但这肯定是一种通用模型……即您不确定交易是否有效,因为随着客户的出现……您的网络中断了,因此您无法正常工作银行的请求主管发送的乐队电子邮件,确认确实没有失败。

尽管这是一个好方法,但是它确实会占用高度并发系统中的更多资源,不能很好地处理故障(您只能使用几种硬编码策略),并且可以扩展到数十个或数百个组件故障,单个故障的可能性变得如此之大,以致您永远不可能成功。

那有什么选择呢?

这里的细节(它可以提供更大的灵活性)是假设事情会间歇性地失败,并将事务语义设计到应用程序协议中。 这使您可以拥有“不够健壮”的单个组件,但会增加整个系统的事务管理复杂性。 一个可能如何工作的示例:

这里的重要细节是:#1事务细节在传输存储区中保持不变,#2传输主管对如何管理事务策略的语义负责,#3事务具有在短暂故障中变得持久的能力系统中的“大多数”组件,以及#4每个独立组件只需要更短的时间即可使用。 通常,这些都是理想的品质,但是…

细节决定成败

这种方法的一些负面影响是:#1作为系统的设计者,您现在明确负责事务行为的细节;#2如果系统要在组件故障时保持健壮,则操作必须是幂等的(在调用中没有副作用)。 作为此示例如何更健壮的示例,让我们看一下如何实现在瞬态故障中持久的行为:

在此模型中,当帐户请求者不可用时,转帐主管执行简单的重试策略。 尽管这可能使系统更健壮并以更大的灵活性解决故障,但很明显,帐户请求者(或商店)需要能够识别出有时它可能接收重复并能够妥善处理。 另外,了解使状态发生变化的事物与仅承认其与您对系统状态的观点相符的事物之间的区别变得更加重要。

更重要的是,后一种方法现在意味着我们必须考虑“永久性故障”与“暂时性故障”之间的区别,而且这通常不是一件容易的事……即,在不存在的帐户和真实帐户之间进行转移是一个暂时性问题还是不??如果您认为这是一个简单的答案,那么请考虑是否存在另一个异步过程会创建和销毁帐户的情况? 在1分钟内重试是否可以接受(如果您在初次尝试进行转帐时正在创建帐户)?

总而言之,尽管将交易分散成较小的部分可以增加强大的功能,但同时也具有很大的责任感。 这种设计系统的方法是Scala和Erlang助手所倡导的“让它崩溃”的口头禅。 “让它崩溃”并不一定意味着“放松您的事务语义”或“不处理错误”,它意味着您可以委派负责从同步过程中的故障中恢复的责任,并以更健壮和新颖的方式进行处理。

翻译自: https://www.javacodegeeks.com/2016/04/let-it-crash-3.html

谷歌浏览器崩溃设置崩溃

谷歌浏览器崩溃设置崩溃_让它崩溃相关推荐

  1. java app崩溃分析工具_[原创]App崩溃率统计工具推荐

    2016huasacm暑假集训训练三 F - Jungle Roads 题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在 ...

  2. 谷歌浏览器崩溃设置崩溃_用浏览器崩溃

    谷歌浏览器崩溃设置崩溃 à http://www.alistapart.com/stories/tohell/helltest.html àhttp ://www.alistapart.com/sto ...

  3. 谷歌浏览器崩溃设置崩溃_Google的广告业务开始崩溃了吗?

    谷歌浏览器崩溃设置崩溃 The prevailing wisdom at Google is that their ad-centric business model is recession pro ...

  4. windows 设置 java 程序开机启动 + 崩溃重启

    前言 有时我们需要把写好的 java 程序部署在 Windows 系统的服务器上,如果服务器被人为重启,或者程序由于未知原因自己崩溃了,程序不能自动重启,用户体验很不好.接下来介绍一种可行的解决方案: ...

  5. 计算机软件系统崩溃,系统崩溃了怎么办 如何快速还原崩溃的系统【步骤方法】...

    系统崩溃了怎么办? 如今的软件是越来越复杂.越来越庞大.由系统本身造成的崩溃即使是最简单的操作,比如关闭系统或者是对BIOS进行升级都可能会对PC合操作系统造成一定的影响.如果仔细研究的话就会发现软件 ...

  6. 制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件

    制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件 1,安装kernel-debuginfo$(uname -r).rpm和kernel-debuginfo-common-$(uname ...

  7. 使用崩溃服务,获取不到崩溃报告怎么办

    华为AGC推出的崩溃服务,零代码集成,只需要添加SDK即可.有时可能集成了SDK,在AGC页面获取不到崩溃报告,总结了一下可以排查以下几点: 1.首先确认下端侧有没有上报 执行"adb sh ...

  8. 谷歌浏览器怎么设置字体 chrome默认字体设置方法

    有些用户嫌弃谷歌浏览器的默认字体难看,想换字体,那么chrome默认字体怎么设置呢,小编来教教大家. 1.点击浏览器右上角的三条杠弹出菜单,在里面选择[设置]. 谷歌浏览器怎么设置字体 chrome默 ...

  9. 谷歌浏览器如何设置flash访问权限

    谷歌浏览器如何设置flash访问权限?最近有小伙伴向我询问谷歌浏览器中应该如何设置flash访问权限,今天小编就带给大家谷歌浏览器设置flash访问权限的操作步骤,让我们一起来看看吧. 方法/步骤 1 ...

最新文章

  1. 基于深度学习的花卉图像关键点检测
  2. 7、redis之使用spring集成commons-pool来操作常见数据类型
  3. [ZOJ 4014] Pretty Matrix
  4. XP系统和Sever2003系统现实定时开关机
  5. vs2010如何安装qt插件
  6. 怎样的销售能快速成交别人?
  7. 蓝桥杯 ALGO-42 算法训练 送分啦
  8. SQL Server树型结构数据处理的存储过程
  9. 程序员工作5年后,在管理通道和技术通道上,如何抉择?
  10. java 接口 回调_Java接口回调机制详解
  11. ajax帝国cms登录,帝国CMS7.5二次开发之制作Ajax版登陆注册二合一插件(不改系统文件)...
  12. License授权方案
  13. Charles cannot configure your proxy settings while it is on a read-only volume
  14. 33幅精美的拿铁图案摄影作品欣赏
  15. 关于入门Android studio的那些问题那些事
  16. 网络模拟器软件分享——Cisco Packet Tracer、华为eNSP、H3C Cloud Lab
  17. Round robin
  18. OC语言——基本语法和思想
  19. Python入门基础(2)——基本类型与字符串处理
  20. 日语N5级别所有一类动词原形

热门文章

  1. STGNN(www 2020)论文总结
  2. “诱饵效应”让用户产生“冲突”营销心理学十大效应 营销值得学
  3. 科技爱好者周刊(第 216 期):极简主义的胜利
  4. ps图案叠加怎么添加图案?Photoshop图案如何使用?
  5. 大学学计算机专业高中怎样选课,高中选课大学对应专业 选什么科目能学的专业多...
  6. SCI和EI的索引号查询方法
  7. python判断一个字符串在数组中的位置
  8. C#:实现Euclidean distance欧氏距离算法(附完整源码)
  9. 2.应用Android的UI框架
  10. How to make seperate debuginfo file