面对软件错误构建可靠的分布式系统_笔记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

PID参数自整定实战解析:从继电反馈到智能调节的完整实现

本文深入解析PID参数自整定的实战应用,从继电反馈原理到智能调节算法的完整实现。通过详细讲解振荡波形特征提取、参数计算的工程化改进及工业场景调试技巧,帮助工程师快速掌握PID自整定技术,提升控制系统性能。特别针对嵌入式系统优化和噪声环境下的稳定策略提供了实用解决方案。

weixin_28731223的博客 461

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

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

zhunj80的专栏 971

AI代码标注专家Prompt指令的最佳实践

AI代码标注专家 Prompt 可作为项目级别提示词使用,专门负责为 AI 生成的代码添加特定的注释标记,然后基于 Node 脚本可以初步统计出 AI 代码占比。

💻 Code:TypeScript / Engineering 🤖 AI:Prompt Optimization / Context Memory / Coding Agents 615

SRAM vs RRAM:存算一体芯片选型指南(含最新技术对比)

本文深入对比了SRAM与RRAM在存算一体芯片设计中的核心差异,为硬件工程师和架构师提供实战选型指南。文章从技术本质、性能、功耗、成本及设计风险等多维度剖析,指出SRAM基于成熟CMOS工艺,适合高精度、低延迟场景;而RRAM凭借非易失性和高密度潜力,在超低功耗、固定模型应用中优势明显。决策需综合项目预算、上市时间及技术储备。

e4f5g6h的博客 939

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

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

cpusoft 468

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化

本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。

g5h6i的博客 1114

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

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

大厂小码农的博客 548

【开关电源】开关电源实战经验分享

开关电源原理设计、Layout设计经验分享

weixin_42098658的博客 4169

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。

热爱分享,热爱记录 2525

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

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

Wangzc_1116的博客 742

Vue3 - 详解实现网站接入钉钉扫码登录功能,钉钉授权生成登录二维码用户用手机扫描二维码登陆,支持弹框式、浏览器单独新开页显示,钉钉扫描二维码登录详细流程及示例代码,最新vue集成钉钉扫码授权登录!

vue3,nuxt3,钉钉,扫码登录,vue3钉钉扫码登陆,钉钉授权第三方WEB网站扫码登录功能,钉钉扫码登录第三方网站,单点登录,二维码不显示,报错,扫了没反应,出错,vue3钉钉扫码登录,内嵌,获取个人信息,pc网页钉钉登录,钉钉扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描钉钉二维码登录网站,页面弹出一个小窗口而不是打开一个页面,vue3中使用iframe实现另开小窗口扫码登

🏆 前端领域优质创作者 3695

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

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

weixin_65409651的博客 484

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践

摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字)

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2021-05-05

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

qq_49749755的博客 127

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

Wangzc_1116的博客 706

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深入解析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、付费专栏及课程。

余额充值