面对软件错误构建可靠的分布式系统_笔记05

Agent工程实战:构建高可靠非确定性系统的三大支柱 大语言模型驱动的智能体(Agent)本质上是高度非确定性的系统,其输出受温度参数、上下文长度与提示词微小变化等多重因素影响,无法沿用传统软件‘输入-状态-输出’的确定性验证范式。理解非确定性是Agent工程的起点,而生产即实验和闭环精炼则构成了应对该特性的核心方法论——通过将可观测性、实时评估与用户反馈深度嵌入生产环境,实现从功能交付向可靠性交付的跃迁。本文聚焦真实产线中已验证的工程实践,涵盖任务可靠性定义、七层防护架构、多智能体协同设计及LangGraph+LangSmith落地组合,为金融、电商、Saa 阅读详情

3.5错误处理
3.5.1异常
包括6类异常
(1)值错误value error: 类似除0错误
(2)类型错误type error:函数的参数错误
(3)模式匹配错误pattern-matching error:在case/receive/if中无法匹配
 
(4)显示调用exit:相当于主动抛出异常, exit(Why)抛出Why异常

(5)错误传播error propagation:进程收到一个exit信号,可以选择停掉自己,并把exit传递给所有连接的其它进程

(6)系统错误system exception:内存耗尽等

 

3.5.2catch原语

像其它函数一样处理异常,防止异常扩散,并记住异常的值

如果没有catch,会导致出现异常的进程死掉,并传播所有连接的进程

eg:

    X = 1/0. //会抛出异常,X是未绑定值,

    Y = (catch 1/0). //处理异常,且Y绑定了"异常值"

    => {'EXIT', {badarith, [........}.

 

3.5.3exit原语

调用exit/1显示的生成异常

eg:

    sqrt(X) when X < 0 ->

            exit({sqrt,X});

    sqrt(X) -> ...

 

3.5.4throw原语

用于改变异常的语法形式

    exit(P)产生异常,则(catch F)的结果是{'EXIT',P}

    throw(P)产生异常,则(catch F)的结果是P

 

3.5.5已修正错误和未修正错误

eg:

    g(X) ->

        case (catch h(X)) of

            {'EXIT', _} -> 10;

            Val -> Val

        end.

    h(cat) -> exit(dog);

    h(N) -> 10*N.

如果g(cat)则h(cat)直接调用exit(dog)抛出异常,

如果g(cats)则h(cats)调用10*cats,而乘法抛出异常,

都被catch处理,最后返回10

 

从SLI/SLO到混沌工程:构建高可用系统的可靠性工程实践指南 在分布式系统与微服务架构中,系统可靠性是保障业务连续性的技术基石。其核心原理在于通过可度量的服务等级指标(SLI)与目标(SLO)来量化可用性,并运用错误预算机制在创新与稳定间取得平衡。从技术价值看,这不仅能减少故障损失,更是构建弹性架构、提升团队工程效能的关键。在应用场景上,无论是电商秒杀、金融交易还是在线协作,都需要通过冗余设计、断路器模式与混沌工程等实践来主动防御风险。本文将以可靠性工程实践手册为蓝本,深入探讨如何系统化地设计、度量和运维高可靠系统,其中重点解析了SLO的设定艺术与混沌工程在验证系统韧 阅读详情

相关推荐

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

面对软件错误构建可靠的分布式系统_笔记01

作为erlang的入门教材,《面对软件错误构建可靠的分布式系统》这篇博士论文很值得好好研究。学习笔记,就是有话则多,无话则少 2.6语言需求并行和可容错的编程语言要求(1)并发性: 轻量级的并行机制,在进程间发送消息。(2)错误封装:一个进程中的错误,不能破坏其它进程(3)故障检测:可以检测本地和远端进程中的异常(4)故障识别:可以识别报告异常原因(5)代码升级:可以动态替换运行的系统

cpusoft 617

【错误处理】C++ 编码规范 之错误处理篇

在软件开发中,错误处理是确保程序稳定性和可靠性的关键部分。尤其在C++中,由于其低级别的内存管理和高性能要求,错误处理显得尤为重要。如果没有恰当的错误处理机制,轻微的错误可能会导致严重的后果,如内存泄漏、程序崩溃,甚至是数据损坏。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1158

面对软件错误构建可靠的分布式系统_笔记02

3.3 Erlang顺序化编程3.3.1 数据结构:8种原始的数据类型+2扩展类型(1)整数integer:(2)浮点数float:(3)原子atom: 字母打头的小写字符串,类似枚举类型。如果单引号包括,则可以有空格:a atom(4)二进制数binary: 二进制存储空间, >(5)字符串:双引号包括的字符串 "cat",实质是ASCII码。比如"cat"实质为[97,99,116](6)

cpusoft 468

面对软件错误构建可靠的分布式系统

系统存在不完善的环节,但是我们希望我们的系统可靠,矛盾的要求,满足的条件两种解决方案,语言本身或者是方法库 在ERLANG中,对于上述的问题的解决方式采用语言+库一起作用的方式来解决,满足在程序有错误的情况下,我们的代码依旧会按照合理的方式运行 本文不关注算法细节、硬件假设、软件工程方面的要求 而是关注与软件的容错性在语言、库、操作系统方面的要求,纯消息传递式的语言,其它语言可能会存在共享内存的方式来解决这样的问题 速错进程的概念,现成的错误存在互相传递的隐患,会破坏掉系统内部的坚固性

面向软件错误构建可靠的分布式系统

面向软件错误构建可靠的分布式系统 Making reliable distributed systems in the presence of software errors Joe Armstrong 译者: 段先德 Joe Armstrong的博士论文

面对软件错误构建可靠的分布式系统-3架构模型

 架构模型 对于软件架构这个术语来说,没有一个标准的、被普遍 接受的定义,因为它还是一门年幼的学科,……虽然没 有标准的定义,却也不乏定义…… 卡内基·梅隆大学软件工程学院 本章提出了一个用于构建容错系统的软件架构。虽然每个人对于架构一词都有一个模糊的概念,但是这个词却几乎没有一个广为接受的定义,这就导致了很多误解。我认为如下定义对软件架构进行了比较全面的总结: 架构是

zhunj80的专栏 732

保姆级教程:在CentOS 8上用libvirt + QEMU/KVM搭建ARM64虚拟机(含UEFI配置与常见坑点)

本文提供在CentOS 8上使用libvirt + QEMU/KVM搭建ARM64虚拟机的详细教程,涵盖UEFI配置与常见问题解决方案。通过环境准备、特殊配置要点、UEFI固件安装等步骤,帮助用户在x86架构服务器上高效运行ARM64虚拟化环境,特别适合开发测试与跨平台应用场景。

weixin_30292745的博客 130

面对软件错误构建可靠的分布式系统-1摘要

面对软件错误构建可靠的 分布式系统 (瑞典)Joe Armstrong 撰 段先德 译 邓 辉 审 声明:本文版权属原文作者所有,译文仅用于个人学习和交流,不得用于任何商业目的。> 原文链接:http://www.erlang.org/download/armstrong_thesis_2003.pdf 译 感 近年来,“多核”、“分布式计算”、

zhunj80的专栏 971

请叫我鱼拆,2024扫地机器人的第一次拆机

从背面可以看出,这个机器人是两轮差速模型,两个驱动轮,一个万向轮,驱动轮位于机器人中心位置,这样原地旋转的圆心就是机器人的中心。可以看到设备已经连接,但是没有办法进shell,厂家应该有做了安全保护之类的,有知道从这个口可以登录系统办法的小伙伴可以后台留言。但这台机器人一直报警说,机器人轮子离地,小鱼 估计是防跌落模块有问题,误触发了,所以打算先拆机看看。接着小鱼试了下,机器可以开机,然后给他重新配置wifi,连上 米家。Allwinner,全志的片子,不知道哪个型号的,看产品id,应该支持adb。

生活不止眼前的苟且 3930

抖音用户评论和ID的采集方法

随着5G时代的普及,各大运营商的套餐纷纷推出,使得流量成本进一步降低。同时5G线路高宽带、低延迟的技术特性和手机普及,让视频用户访问量快速增加。 由于大量的视频工具和拍摄APP的提供,让短视频的拍摄、制作包括发行都变得更加简单便捷,越来越多的普通人可以投入视频创作,创造了更丰富的互联网内容,视频作者从视频推广中能获取粉丝和推广收益。 目前抖音就是目前最重要的短视频平台之一,要及时获取上面的用户评论和ID,需要结合爬虫代理实现采集方案,下面的代码就能快速采集相关信息: package htmlunit; i

ssbt_2020的博客 6787

面对软件错误构建可靠的分布式系统_笔记08

4.2 Erlang世界观一切皆进程web服务器的架构server(Client) ->    receive        {Client, close} ->            true;        {Client, Request} ->            Response = generate_response(Request),      

cpusoft 468

RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU等)

本文记录的是改进RT-DETR的损失函数,将其替换成。现有研究通过利用边界框之间的几何关系来提高回归性能,但忽略了困难样本和简单样本分布对边界框回归的影响。不同检测任务中困难样本和简单样本的分布不同,对于简单样本占主导的检测任务,关注简单样本的边界框回归有助于提高检测性能;对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。,提高检测器在不同检测任务中的性能。实现的。

Limiiiing的博客 1922

分布式 | 对分布式系统的错误认知

20 多年前,Peter Deutsch 和 James Gosling 定义了分布式计算的 8 个谬误。这些是许多开发人员对分布式系统做出的错误假设。从长远来看,这些通常被证明是错误的。让我们来看看每个谬误,讨论问题和潜在的解决方案。

大厂小码农的博客 548

爬虫不宕机!2026自愈式爬虫开发(Python+AI自动应对页面改版)

传统爬虫最大的痛点是"页面一改就宕机":前端布局调整、CSS选择器失效、数据结构变化,都会导致爬虫瘫痪,需要人工逐行修改代码。2026年,基于AI的自愈式爬虫成为行业标配:通过大模型自动识别页面结构变化、适配新的元素定位规则、修复数据提取逻辑,实现"页面改版不宕机,AI自动自愈"的企业级效果。本文从零讲解如何用Python+AI构建自愈式爬虫,聚焦页面改版自适应、故障自动修复、规则动态更新三大核心能力,附带可直接落地的生产级代码。问题场景解决方案LLM生成规则格式错误。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1215

SCADA|KingSCADA通过组合框选择修改变量的值

《SCADA项目中组合框控件的使用方法》 本文详细介绍了SCADA系统中组合框(下拉框)控件的应用方法。通过具体示例演示如何实现:当选择"雷工笔记"时变量值为100,选择"雷工杂谈"时为200,选择"小李食代"时为300的功能。主要实现步骤包括:1)创建项目并添加组合框控件;2)设置Items选项及对应数值;3)创建内存变量;4)使用GetCurrentIndex()和GetItemData()方法;5)在选项变化事件中编写脚本。该控件在SCADA

做有价值的事,积累有价值的笔记! 864

2024全网最全分布式系统的8个谬误专题(25秋招走起~)

设计分布式系统很难这些谬论发表于20多年前。但他们今天仍然坚持,其中一些比其他人更多。我认为今天许多开发人员都知道它们,但我们编写的代码并没有显示出来。我们必须接受这些事实:网络不可靠,不安全并且需要花钱。带宽有限。网络的拓扑结构将发生变化。其组件的配置方式不同。意识到这些限制将有助于我们设计更好的分布式系统。

Wangzc_1116的博客 742

Python调用CANoe

我们可以创建CANoe应用程序对象,打开配置文件,启动模拟,发送和接收消息,并在完成后关闭CANoe应用程序。这使得我们能够使用Python自动化执行测试任务,并集成CANoe的功能到我们的Python应用程序中。CANoe是一款功能强大的汽车网络仿真和测试工具,它能够模拟和分析汽车网络通信,并提供丰富的测试功能。通过Python编程语言,我们可以方便地调用CANoe的API,实现自动化测试和集成CANoe的功能到我们的Python应用程序中。在CANoe中,我们可以为不同的汽车网络创建配置文件。

AzqLinux的博客 1287

标题:深入掌握Postman进行分布式系统API测试:构建高弹性架构的全面指南

分布式系统由多个相互协作的节点组成,每个节点承担不同的功能。可扩展性:系统可以通过增加节点来提高处理能力。容错性:系统能够容忍部分节点的故障,继续提供服务。一致性:尽管数据分散在多个节点上,系统依然需要保证数据的一致性。分布式系统由多个相互协作的节点组成,每个节点承担不同的功能。可扩展性:分布式系统通过增加节点来提高处理能力,可以根据需求的增长动态扩展。容错性:分布式系统能够容忍部分节点的故障,继续提供服务,确保系统的高可用性。一致性。

weixin_65409651的博客 484

ABAP CDS 视图的 SAP 缓冲全解析:从 DDIC-based 到 View Entity Buffer 的最佳实践与可运行示例

本文深入探讨了SAP ABAP CDS视图中的缓冲机制,重点介绍了在DDIC-based CDS视图中使用@AbapCatalog.buffering.*注解以及在CDS View Entity中使用独立缓冲对象两种配置方式。文章首先阐述了SAP缓冲的价值,特别适用于读多写少的业务场景(如主数据访问),能够显著降低数据库负载和响应延迟。核心内容分为三部分:1)DDIC-based CDS视图中的三个关键注解(缓冲状态、缓冲类型和通用缓冲键字段数)及其使用限制;2)新一代CDS View Entity中通过独

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 187

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2021-05-05

消息中间件 引言 一般在分布式架构中使用较多,分布式架构容易产生沟通协同的问题,沟通协同会产生中间件去解决系统中的复杂性,让我们的框架变得更加灵活,让我们的选择也不局限某一种语言, 架构 单体式架构 单体架构(Monolithic Architecture)是一种将所有功能打包在一个容器中运行的设计风格,一个实例中集成了一个系统的所有功能。通过负载均衡软件/设备实现多实例调用。在互联网早期,这种架构非常流行,时至今日单体架构以其开发、调试、部署简单的特性在一些特定场景下任然有着无可比拟的.

qq_49749755的博客 127

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

2024全网最全分布式系统 - 理论基础专题(25秋招走起~)

一个分布式系统是一些独立的计算机集合,但是对这个系统的用户来说,系统就像一台计算机一样。分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。

Wangzc_1116的博客 706

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深入解析GZIP解压缩异常:从错误日志到解决方案

在分布式系统开发中,数据传输的压缩与解压缩是常见的优化手段,尤其是使用 GZIP 压缩可以显著减少网络传输的数据量。然而,如果客户端和服务端在压缩/解压缩的处理上不一致,就可能引发各种异常,例如日志中出现的 `java.util.zip.ZipException: Not in GZIP format`。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

2024年软件测试工具总结 —— 性能测试工具

Pinpoint提供了一个解决方案,帮助分析系统的总体结构,以及通过跟踪分布式应用程序中的事务,分析系统中的组件如何相互连接,用于大型分布式系统的全链路监控,可以获取不同服务之间,服务与数据库,以及服务内部的方法的调用关系,还可以监控方法调用时长、可用率和内存等。WebLOAD是一款针对Web应用程序的企业级负载和性能测试工具,提供性能、完整性和可伸缩性测试等功能,能够同时模拟数千个用户,因此您可以测试重流量负载,并报告应用程序中的弱点、约束和性能瓶颈。软件性能测试的目标是识别应用程序中的所有性能瓶颈。

yjt2045263063的博客 1689
上一篇: 面对软件错误构建可靠的分布式系统_笔记04
下一篇: 面对软件错误构建可靠的分布式系统_笔记06
cpusoft
博客等级 码龄22年 8粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值