distributed - 如何设计和验证分布式系统?

标签 distributed protocols high-availability formal-verification

我一直在研究 a project ,它是应用服务器和对象数据库的组合,目前仅在单台机器上运行。前段时间看了a paper它描述了一个分布式关系数据库,并获得了一些关于如何将该论文中的想法应用到我的项目的想法,以便我可以使用 shared-nothing architecture 在集群上运行它的高可用性版本.

我的问题是,我没有设计分布式系统及其协议(protocol)的经验——我没有在大学学习关于分布式系统的高级 CS 类(class)。所以很担心能不能设计出一个协议(protocol),不会造成死锁,饿死,split brain和其他问题。

问题:我在哪里可以找到关于设计分布式系统的好资料?有哪些方法可以验证分布式协议(protocol)是否正常工作?欢迎推荐书籍、学术文章等。

最佳答案

学习分布式计算并不容易。它确实是一个非常广阔的领域,涵盖了通信、安全性、可靠性、并发性等领域,每个领域都需要数年时间才能掌握。理解最终会通过大量的阅读和实践经验来实现。你似乎有一个具有挑战性的项目开始,所以这是你的机会:)

我相信,关于分布式计算的两本最受欢迎的书是:

1) Distributed Systems: Concepts and Design - George Coulouris 等人。

2) Distributed Systems: Principles and Paradigms - A. S. Tanenbaum 和 M. Van Steen

这两本书都很好地介绍了当前用于构建成功的分布式系统的方法(包括通信协议(protocol))。我个人主要使用后者,我发现它是一个很好的文本。如果您认为亚马逊上的评论不是很好,那是因为大多数读者将这本书与 A.S. 写的其他书进行了比较。 Tanenbaum(IMO 是计算机科学领域最好的作者之一)坦率地说写得更好。

PS : 我真的怀疑你是否需要设计和验证一个新协议(protocol)。如果您正在使用应用程序服务器和数据库,那么您所需要的可能已经可用。

关于distributed - 如何设计和验证分布式系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524198/

相关文章:

jenkins - 将构建的特定部分委托(delegate)给从属

ios - respondsToSelector : 的实现

apache-kafka - 卡夫卡 : What is the minimum number of brokers required for high availability?

kubernetes - 添加新的 kubernetes master 时出现未经授权的问题

kubernetes - 扩展 Kubernetes 2 主集群

java - 分布式文本编辑器 : multiple users editing a text file concurrently

distributed - 顺序和因果一致性

node.js - 乱序处理后的"Resequencing"消息

Swift 协议(protocol)要求方法返回协议(protocol)

ios - 在 Objective-c 问题中访问委托(delegate)静态方法