From 270b25b86cf6627a3605f8545951aadf3db925ee Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Fri, 21 Aug 2015 19:53:04 +0800 Subject: [PATCH] reformat markdown --- .../part1-what-is-a-log.md | 2 +- .../part2-data-integration.md | 4 ++-- .../the-end.md | 20 +++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md index ff75679..201b123 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md @@ -17,7 +17,7 @@ 把次序直接看成是时间概念,刚开始你会觉得有点怪异,但是这样的做法有个便利的性质:解耦了 时间 和 任一特定的物理时钟(`physical clock`)。 引入分布式系统后,这会成为一个必不可少的性质。 -**_【译注】_** 分布式系统的 时间、次序、时钟是个最基础根本的问题,详见被引用最多的**_Leslie Lamport_**的论文**_Time Clocks and the Ordering of Events in a Distributed System_**([中文翻译](http://duanple.blog.163.com/blog/static/709717672012920101343237/)),现在先 **_不要_** 去看,除非读完本文后你还是有很兴趣要探个明白! +**_【译注】_** 分布式系统的 时间、次序、时钟是个最基础根本的问题,详见被引用最多的_Leslie Lamport_的论文**_Time Clocks and the Ordering of Events in a Distributed System_**([中文翻译](http://duanple.blog.163.com/blog/static/709717672012920101343237/)),现在先 **_不要_** 去看,除非读完本文后你还是有很兴趣要探个明白! 日志记录的内容和格式是什么对于本文讨论并不重要。另外,不可能一直给日志添加记录,因为总会耗尽存储空间。稍后我们会再回来讨论这个问题。 diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md index 850cdd1..b098e01 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md @@ -59,7 +59,7 @@ ### 专用的数据系统(`specialized data systems`)的爆发 第二个趋势来自于专用的数据系统的[爆发](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.68.9136),这些数据系统在最近五年开始流行并且可以免费获得。 -专门用于[`OLAP`](https://github.com/metamx/druid/wiki)、[搜索](http://www.elasticsearch.org/)、[简单](http://www.rethinkdb.com/) [在线](http://www.slideshare.net/amywtang/espresso-20952131) [存储](http://hadoop.apache.org/)、 [批处理](http://hadoop.apache.org/)、[图分析`graph analysis`](http://graphlab.org/) [等](http://redis.io/) [等](http://spark.incubator.apache.org/) 的数据系统已经出现。 +专门用于[`OLAP`](https://github.com/metamx/druid/wiki)、[搜索](http://www.elasticsearch.org/)、[简单](http://www.rethinkdb.com/) [在线](http://www.slideshare.net/amywtang/espresso-20952131) [存储](http://hadoop.apache.org/)、 [批处理](http://hadoop.apache.org/)、[图分析(`graph analysis`)](http://graphlab.org/) [等](http://redis.io/) [等](http://spark.incubator.apache.org/) 的数据系统已经出现。 更加多样化的数据同时变成更加大量,而且这些数据期望放到更多的系统中,这些需求同时要解决,导致了一个巨大的数据集成问题。 @@ -97,7 +97,7 @@ > > [『每个工作的数据管道要设计得像是一个日志;每个损坏的数据管道都以其自己的方式损坏。』 -> —— **_Count Leo Tolstoy_** (由作者翻译)](http://en.wikipedia.org/wiki/Anna_Karenina_principle) +> —— _Count Leo Tolstoy_ (由作者翻译)](http://en.wikipedia.org/wiki/Anna_Karenina_principle) 这里我使用术语『日志』取代了『消息系统』或者『发布-订阅』,因为在语义上明确得多,并且准确得多地描述了在实际实现中支持数据复制时你所要做的事。 我发现『发布订阅』只是表达出了消息的间接寻址(`indirect addressing of messages`) —— diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md index 594b87d..ff07cc8 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md @@ -13,25 +13,25 @@ - 关于[状态机](http://www.cs.cornell.edu/fbs/publications/smsurvey.pdf%E2%80%8E)和[主备份](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.5896)复制的概述。 - [`PacificA`](http://research.microsoft.com/apps/pubs/default.aspx?id=66814)是实施微软基于日志的分布式存储系统的通用架构。 - [`Spanner`](http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/archive/spanner-osdi2012.pdf) —— 并不是每个人都支持把逻辑时间用于他们的日志,`Google`最新的数据库就尝试使用物理时间,并通过把时间戳直接做为区间来直接建时钟迁移的不确定性。 -- [`Datanomic`](http://www.datomic.com/):[解构数据库](https://www.youtube.com/watch?v=Cym4TZwTCNU)是**_Rich Hickey_**(`Clojure`的创建者)在它的首个数据库产品中的的重要陈述之一。 +- [`Datanomic`](http://www.datomic.com/):[解构数据库](https://www.youtube.com/watch?v=Cym4TZwTCNU)是_Rich Hickey_(`Clojure`的创建者)在它的首个数据库产品中的重要陈述之一。 - [在消息传递系统中回滚恢复协议的调查](http://www.cs.utexas.edu/~lorenzo/papers/SurveyFinal.pdf)。 我发现这是有关容错处理和通过日志在数据库之外完成恢复的实际应用的很不错的介绍。 -- [Reactive Manifesto](http://www.reactivemanifesto.org/) —— +- [反应式宣言(`Reactive Manifesto`)](http://www.reactivemanifesto.org/) —— 我其实并不清楚反应式编程(`reactive programming`)的确切涵义,但是我想它和『事件驱动』指的是同一件事。 - 这个链接并没有太多的讯息,但**_Martin Odersky_**(`Scala`名家)讲授的[这个课程](https://www.coursera.org/course/reactive)是很有吸引力的。 + 这个链接并没有太多的讯息,但_Martin Odersky_(`Scala`名家)讲授的[这个课程](https://www.coursera.org/course/reactive)是很有吸引力的。 - `Paxos`! 1. 原论文在[这里](http://research.microsoft.com/en-us/um/people/lamport/pubs/lamport-paxos.pdf)。 - **_Leslie Lamport_** 有一个有趣的历史:在80年代算法是如何发现的,但是直到1998年才发表了,因为评审组不喜欢论文中的希腊寓言,而作者又不愿修改。 - 2. 甚至于论文发布以后,它还是不被人们理解。**_Lamport_** 再次尝试,这次它包含了一些并不有趣的小细节,这些细节是关于如何使用这些新式的自动化的计算机的。 + _Leslie Lamport_ 有一个有趣的历史:在80年代算法是如何发现的,但是直到1998年才发表了,因为评审组不喜欢论文中的希腊寓言,而作者又不愿修改。 + 2. 甚至于论文发布以后,它还是不被人们理解。_Lamport_ 再次尝试,这次它包含了一些并不有趣的小细节,这些细节是关于如何使用这些新式的自动化的计算机的。 它仍然没有得到广泛的认可。 - 3. [**_Fred Schneider_**](http://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf)和[**_Butler Lampson_**](http://research.microsoft.com/en-us/um/people/blampson/58-consensus/Abstract.html)分别给出了更多细节关于在实时系统中如何应用`Paxos`。 + 3. [_Fred Schneider_](http://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf)和[_Butler Lampson_](http://research.microsoft.com/en-us/um/people/blampson/58-consensus/Abstract.html)分别给出了更多细节关于在实时系统中如何应用`Paxos`。 4. 一些`Google`的工程师总结了他们在`Chubby`中实施`Paxos`的[经验](http://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/paper2-1.pdf)。 - 5. 我发现所有关于`Paxos`的论文理解起来很痛苦,但是值得我们费大力气弄懂。你不必忍受这样的痛苦了,因为日志结构的文件系统的大师[**_John Ousterhout_**](http://www.stanford.edu/~ouster/cgi-bin/papers/lfs.pdf)的[这个视频](https://www.youtube.com/watch?v=JEpsBg0AO6o) 让这一切变得相当的容易。这些一致性算法用展开的通信图表述的更好,而不是在论文中通过静态的描述来说明。颇为讽刺的是,这个视频录制的初衷是告诉人们`Paxos`很难理解。 - 6. [使用`Paxos`来构造规模一致的数据存储](http://arxiv.org/pdf/1103.2408.pdf)。这是一篇很棒的介绍使用日志来构造数据存储的文章,**_Jun_** 是文章的共同作者之一,他也是`Kafka`最早期的工程师之一。 + 5. 我发现所有关于`Paxos`的论文理解起来很痛苦,但是值得我们费大力气弄懂。你不必忍受这样的痛苦了,因为日志结构的文件系统的大师[_John Ousterhout_](http://www.stanford.edu/~ouster/cgi-bin/papers/lfs.pdf)的[这个视频](https://www.youtube.com/watch?v=JEpsBg0AO6o) 让这一切变得相当的容易。这些一致性算法用展开的通信图表述的更好,而不是在论文中通过静态的描述来说明。颇为讽刺的是,这个视频录制的初衷是告诉人们`Paxos`很难理解。 + 6. [使用`Paxos`来构造规模一致的数据存储](http://arxiv.org/pdf/1103.2408.pdf)。这是一篇很棒的介绍使用日志来构造数据存储的文章,_Jun_ 是文章的共同作者之一,他也是`Kafka`最早期的工程师之一。 - `Paxos`有很多的竞争者。如下诸项可以更进一步的映射到日志的实施,更适合于实用性的实施。 - 1. 由**_Barbara Liskov_**提出的[视图戳复现](http://pmg.csail.mit.edu/papers/vr-revisited.pdf)是直接进行日志复现建模的较早的算法。 + 1. 由_Barbara Liskov_提出的[视图戳复现](http://pmg.csail.mit.edu/papers/vr-revisited.pdf)是直接进行日志复现建模的较早的算法。 2. [`Zab`](http://www.stanford.edu/class/cs347/reading/zab.pdf)是`Zookeeper`所使用的算法。 - 3. [`RAFT`](https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf)是易于理解的一致性算法之一。由**_John Ousterhout_**讲授的这个[视频](https://www.youtube.com/watch?v=YbZ3zDzDnrw)非常的棒。 + 3. [`RAFT`](https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf)是易于理解的一致性算法之一。由_John Ousterhout_讲授的这个[视频](https://www.youtube.com/watch?v=YbZ3zDzDnrw)非常的棒。 - 你可以的看到在不同的实时分布式数据库中动作日志角色: 1. [`PNUTS`](https://www.youtube.com/watch?v=YbZ3zDzDnrw)是探索在大规模的传统的分布式数据库系统中实施以日志为中心设计理念的系统。 2. [`Hbase`](http://hbase.apache.org/)和`Bigtable`都是在目前的数据库系统中使用日志的样例。