阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

9 个用于构建容错系统的开源工具

  • 2019-04-18
  • 本文字数:2659 字

    阅读完需:约 9 分钟

9个用于构建容错系统的开源工具

我一直对 Web 开发和软件架构很感兴趣,因为我希望对一个可以工作的系统有一个整体的了解。无论你正在构建移动应用程序还是 Web 应用程序,它都必须连接到互联网,以便在不同的模块之间交换数据,这意味着你需要一个 Web 服务。


如果使用云系统作为应用程序的后端,则可以利用更强大的计算能力,因为后端服务可以横向和纵向伸缩,并编排不同的服务。但是,无论你是否使用云后端,构建一个容错系统都是非常重要的——一个有弹性、稳定、快速和安全的容错系统。


为了理解容错系统,让我们以 Facebook、Amazon、谷歌和 Netflix 为例。数以百万计的用户同时访问这些平台,同时通过点对点和用户服务器(user-to-server)网络传输大量数据,而且可以肯定,其中有恶意用户,比如黑客攻击或拒绝服务攻击(DoS)。即便如此,这些平台仍然可以一天 24 小时、一年 365 天不停机地运行。


尽管机器学习和智能算法是这些系统的核心,但它们能够在没有一分钟停机的情况下实现一致的服务,这一点值得称赞。它们昂贵的硬件和庞大的数据中心当然很重要,但支持这些服务的优雅的软件设计也同样重要。而容错系统正是构建这样一个优雅系统的原则之一。

两种导致生产问题的行为

这里有另一种考虑容错系统的方式。当你在本地运行应用程序服务时,一切似乎都很好。太棒了!但是,当你将你的服务推到生产环境时,一切都乱了套。在这种情况下,容错系统有助于解决两个问题:故障停止行为(Fail-stop behavior)和拜占庭行为(Byzantine behavior)。

故障停止行为

故障停止行为是指正在运行的系统突然停止或部分系统发生故障。服务器停机和数据库不可访问属于这一类。例如,在下面的图中,Service 1 不能与 Service 2 通信,因为 Service 2 是不可访问的:



但是,如果服务之间存在网络问题,也会出现这种问题,如下所示:


拜占庭行为

拜占庭行为是指系统持续运行,但没有产生预期的行为(例如,错误的数据或无效的值)。


如果 Service 2 损坏了数据或值,拜占庭式的故障就会发生,即使服务看起来运行得很好,就像在这个例子中:



或者,可能有一个恶意的中间人在服务之间拦截并注入不需要的数据:



无论是故障停止还是拜占庭行为都不是我们想要的情况,所以我们需要有方法可以防止或修复它们。这就是容错系统发挥作用的地方。以下 9 个开源工具可以帮助你解决这些问题。

构建容错系统的工具

尽管构建一个真正实用的容错系统涉及到深入的分布式计算理论和复杂的计算机科学原理,但是有许多软件工具——其中有许多是开源工具,如下面这些——可以通过构建容错系统来减轻不良影响。

断路器模式:Hystrix 和 Resilience4j

断路器模式是一种技术,在服务失败时帮助返回一个准备好的虚拟响应或简单响应:



Netflix 开源的Hystrix是最流行的断路器模式实现。


我以前工作过的许多公司都在使用这个很棒的工具。令人惊讶的是,Netflix 宣布将不再更新 Hystrix。(是的,我知道。)相反,Netflix 建议使用另一种解决方案,如支持 Java 8 和函数式编程的Resilence4j,或另一种方案Adaptive Concurrency Limit

负载均衡:Nginx 和 HaProxy

负载均衡是分布式系统中最基本的概念之一,必须提供一个高质量的生产环境。要理解负载均衡器,首先需要理解冗余的概念。每个生产质量的 Web 服务都有多个服务器以提供冗余,以便在服务器宕机时接管和保持服务。



想想现代飞机:它们的双引擎提供了冗余,即使引擎着火也能安全着陆。(大多数商用飞机拥有最先进的自动化系统,这也提供了帮助。)但是,拥有多个引擎(或服务器)意味着必须有某种调度机制,以便在发生故障时有效地路由系统。


负载均衡器是通过平衡多个服务器节点来优化高流量事务的设备或软件。例如,当数千个请求进来时,负载均衡器充当中间层,在不同的服务器之间路由和平均分配流量。如果服务器宕机,负载均衡器就将请求转发给运行良好的其他服务器。


有许多可用的负载均衡器,但最著名的两个是 Nginx 和 HaProxy。


Nginx不仅仅是一个负载均衡器。它还是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。Groupon、Capital One、Adobe 和 NASA 等公司都在使用它。


HaProxy也很受欢迎,因为它是一个免费的、非常快速和可靠的解决方案,为基于 TCP 和 HTTP 的应用程序提供高可用性、负载均衡和代理。许多大型互联网公司,包括 GitHub、Reddit、Twitter 和 Stack Overflow 都在使用 HaProxy。是的,Red Hat Enterprise Linux 也支持 HaProxy 配置。

Actor 模型:Akka

Actor模型是一种并发设计模式,当 actor(基本计算单元)接收到消息时,它将委托责任。一个 actor 可以创建更多的 actor 并将消息委托给它们。


Akka是实现了 Actor 模型的最著名的工具之一。该框架支持基于 JVM 的 Java 和 Scala。

使用消息队列实现异步、非阻塞 I/O:Kafka 和 RabbitMQ

多线程开发在过去一直很流行,但是这种实践被放弃,取而代之的是异步、非阻塞 I/O 模式。对于 Java,这在其Enterprise Java Bean(EJB)规范中有明确说明:


企业 Bean 不能使用线程同步原语来同步多个实例的执行。

企业 Bean 不能尝试管理线程。企业 Bean 不能尝试启动、停止、挂起或恢复线程,也不能更改线程的优先级或名称。企业 Bean 不能试图管理线程组。


现在,还有其他实践,如流 API 和 Actor 模型。但是,KafkaRabbitMQ等消息队列提供了对异步、非阻塞 IO 特性的开箱即用的支持,它们是功能强大的开源工具,可以通过处理并发进程替换线程。

其他选项:Eureka 和 Chaos Monkey

其他有用的容错系统工具包括监控工具,如 Netflix 的Eureka,压力测试工具,如Chaos Monkey。它们的目标是通过在较低级的环境(如集成(INT)、质量保证(QA)和用户验收测试(UAT))中进行测试,尽早发现潜在的问题,从而在转移到生产环境之前防止潜在的问题。


你使用什么开源工具来构建容错系统?请在评论中分享你的最爱。

关于作者

Bryant Son —— Bryant Jimin Son 是 Red Hat 的顾问。Red Hat 是一家以 Linux 服务器和开源贡献而闻名的技术公司。在工作中,他致力于利用 Red Hat 技术栈(如 BPM、PAM、Openshift、Ansible)为客户构建技术,并使用 Java、Spring Framework、AngularJS 和 Material Design 进行全栈开发。在加入 Red Hat 之前,Bryant 在花旗集团的花旗云团队工作,负责构建私有基础设施即服务(IaaS)云平台,为花旗各部门的 8000 多个团队提供服务。他还在美国航空公司、IBM 和家得宝奥斯汀技术中心工作过。Bryant 毕业于德克萨斯大学奥斯汀分校,获得计算机科学和航空航天工程学士学位,辅修商业。


查看英文原文:9 open source tools for building a fault-tolerant system


2019-04-18 08:005726
用户头像

发布了 687 篇内容, 共 396.9 次阅读, 收获喜欢 1498 次。

关注

评论 1 条评论

发布
用户头像
容错是很关键的,断路器是需要的,负载均衡是需要的
2019-04-22 10:31
回复
没有更多了
发现更多内容

支持国密浏览器的堡垒机叫什么?联系电话多少?

行云管家

网络安全 堡垒机 国密 国密浏览器 国密算法

灵魂三问之稳定性摸排

阿里技术

方法论 稳定性 底盘

智能客服的新方向

百度开发者中心

智能客服 #人工智能 千帆大模型平台

CodeArts Check代码检查服务用户声音反馈集锦(4)

华为云PaaS服务小智

云计算 华为云 代码检查

Studio One 6 Pro永久许可证 附Studio One for Mac安装教程

南屿

Studio One 许可证 音乐制作软件 Studio One 6下载 Studio One 6破解

简单好用的防火墙 Radio Silence for mac激活最新

胖墩儿不胖y

Mac 软件 防火墙软件 阻止网络连接软件

不断进化的e签宝,电子签普惠的新答案

ToB行业头条

不可不知的七个Docker优秀实践

树上有只程序猿

Docker 容器 镜像

数据探索神器:火山引擎DataLeap Notebook 揭秘

字节跳动数据平台

数据库 数据中台 数据治理 数据安全 企业号9月PK榜

PopClip for Mac(剪切板复制粘贴工具) v2023.9中文激活版

mac

苹果mac Windows软件 PopClip 文本操作工具

DHorse v1.4.0 发布,基于 k8s 的发布平台

tiandizhiguai

DevOps k8s kubernetes 运维

行云管家云管平台四大价值看这里!

行云管家

企业上云 云管平台 云资源 云管理

AI 编码助手 Codewhisperer 安装步骤和使用初体验

亚马逊云科技 (Amazon Web Services)

Java Python 人工智能 机器学习

平台运营,让数智底座更安全更稳定更高效

用友BIP

数智底座 2023全球商业创新大会

末流院校24届秋招逆袭之路!

王磊

Java java面试

数据库顶会 VLDB 2023 论文解读 - Krypton: 字节跳动实时服务分析 SQL 引擎设计

字节跳动云原生计算

sql 大数据 云原生

即时通讯技术文集(第21期):后端架构设计基础入门系列 [共15篇]

JackJiang

网络编程 即时通讯 即时通讯IM

美国站群服务器和香港站群服务器,哪一个更适合你的在线业务?

一只扑棱蛾子

站群服务器

HTTP代理IP在什么情况下会请求超时?

巨量HTTP

代理IP http代理

保持预测一致性,推动企业实现未来价值

智达方通

数据孤岛 全面预算管理系统 预测分析

实时数仓混沌演练实践

得物技术

实时数仓 混沌演练 业务混沌 数仓稳定性

引领智能对话革命的创新网络工程技术

百度开发者中心

智能对话 #人工智能 ChatGPT

22H2 中国边缘公有云服务市场 Top2,百度智能云构建让智算无处不在的分布式云

Baidu AICLOUD

边缘计算 分布式云 大模型

鞍钢集团∣共和国钢铁工业长子的财务转型之路

用友BIP

财务数智化

中文3D摄影棚布光软件 Set A Light 3D Studio 最新激活

mac大玩家j

Mac软件 灯光模拟软件

创新传媒行业的未来发展

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

好物周刊#1:提示工程师养成指南

村雨遥

软件 网站 项目 插件 资料

ARBT阿尔比特代币合约质押挖矿系统开发

l8l259l3365

利用ChatGPT实现快速网站模板构建

百度开发者中心

#人工智能 ChatGPT 千帆大模型平台

专家观点∣基于数据驱动的设备预测性维护

用友BIP

数据驱动 设备维护

Appilot发布:打造面向DevOps场景的开源AI助手

SEAL安全

AI DevOps 企业号9月PK榜 Appilot

9个用于构建容错系统的开源工具_开源_Bryant Son_InfoQ精选文章