<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>笔记 on 涯余的博客</title><link>https://hangyan.github.io/tags/%E7%AC%94%E8%AE%B0/</link><description>Recent content in 笔记 on 涯余的博客</description><generator>Hugo</generator><language>zh</language><managingEditor>hang.yan@hotmail.com (涯余)</managingEditor><webMaster>hang.yan@hotmail.com (涯余)</webMaster><lastBuildDate>Wed, 24 Jul 2019 17:22:10 +0000</lastBuildDate><atom:link href="https://hangyan.github.io/tags/%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>Sinfonia: a new paradigm for building scalable distributed systems</title><link>https://hangyan.github.io/post/2019-07-24-sinfonia-paper/</link><pubDate>Wed, 24 Jul 2019 17:22:10 +0000</pubDate><author>hang.yan@hotmail.com (涯余)</author><guid>https://hangyan.github.io/post/2019-07-24-sinfonia-paper/</guid><description>&lt;!-- toc --&gt;
&lt;p&gt;论文链接: &lt;a href="http://www.sosp2007.org/papers/sosp064-aguilera.pdf"&gt;Sinfonia: a new paradigm for building scalable distributed systems&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sinfornia 像是一个构建分布式系统的 SDK 。目前的市面上分布式系统已经非常多了，比如 etcd, zookeeper, ceph 等等。但他们都是分别实现的，彼此之间的代码并无太多借鉴。Sinfonia 的实践是很难得的，可以说比大部分的分布式软件都更有指导价值一些。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://hangyan.github.io/images/sinfonia/arc.png"&gt;&lt;/p&gt;
&lt;p&gt;这个图中展示了 Sinfonia 中关键的几部分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user library: SDK 部分，隐藏了分布式系统处理内部细节的 SDK。用户基于 user library 来开发分布式应用&lt;/li&gt;
&lt;li&gt;minitranscations: Sinfonia 的核心概念。一个分布式的事物机制&lt;/li&gt;
&lt;li&gt;application node: 应用节点&lt;/li&gt;
&lt;li&gt;memory node: 维持分布式系统内部状态的节点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;图中没有画出的有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;管理节点: 用于执行一些定期的 recover 任务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;directory node&lt;/code&gt;: Application Node 访问 Memory Node 使用的是逻辑 id, directory node 记录了逻辑 id 与 真实地址的映射。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="memory-node"&gt;Memory Node&lt;/h2&gt;
&lt;p&gt;Memory Node 存储了应用的状态数据，根据不同情况，可能是存在 RAM 中，也可能是在磁盘上。 user library 封装了操作 Memory Node 中数据的方式。Application Node 可以与 Memory Node 是同台机器也可以是不同机器(有些 Application 出于性能考虑会需要 Applicaiton Node 与 Memory Node 为同台机器，Sinfonia 会告知 Application 此种情况以便让其尽量把数据写在本机)。&lt;/p&gt;</description></item></channel></rss>