TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Erlang: Making reliable distributed systems in the presence of software errors [pdf] (2003)

3 点作者 andrelaszlo大约 1 年前

1 comment

andrelaszlo大约 1 年前
While reading The Server Chose Violence (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40178652">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40178652</a>) I kept drawing parallels to Erlang, and it&#x27;s even mentioned in a footnote. Anyway, I thought I should share Joe Armstrong&#x27;s paper on Erlang, it&#x27;s a great read!<p>Fault isolation:<p>Biffle: &quot;Hubris uses a small, application-independent kernel, and puts most of the code — drivers, application logic, network stack, etc. — in separately compiled isolated tasks. These tasks can communicate with each other using a cross-task messaging system (inter-process communication, or IPC).&quot;<p>Armstrong (2.3 Philosophy): &quot;We need to isolate all the code that runs in order to achieve a goal in such a way that we can detect if any errors occurred when trying to achieve a goal. Also, when we are trying to simultaneously achieve multiple goals we do not want a sodware error occurring in one part of the system to propagate to another part of the system. [...] Our applications are structured using large numbers of communicating parallel processes.&quot;<p>Error handling:<p>Armstrong (4.4 Let it crash): &quot;The defensive code detracts from the pure case and confuses the reader—the diagnostic is often no better than the diagnostic which the compiler supplies automatically&quot;<p>Biffle: &quot;Early in the system’s design, I decided not to permit recoverable&#x2F;resumable faults. That is, when a program takes a fault — whether it’s hardware or synthetic — the task is dead. It can run no further instructions. There is no way to “fix” the problem and resume the task. This was a conscious choice to avoid some subtle failure modes and simplify reasoning about the system.&quot;