CMU440-P2 Tribbler(类推特的发布订阅系统)设计文档

一、开发工具

1.    本项目使用Golang进行开发,主要有以下好处

  • Golang是一种类型安全(type-safe)的语言,并且自带垃圾回收机制,避开了许多底层语言如C/C++中的陷阱
  • 引入了许多轻便实用性强的数据结构,比如变长数组,字典等
  • 提供了大量的包其中包括网络库,RPC等供编程者使用,使得开发效率更高
  • Golang支持了一种相比传统的共享内存式的并发模型(比如Java threads)更加轻便抽象的并发模型(消息传递机制)

2.    版本控制工具采用git

3.    开发环境:sublime text2+gocode

二、概述

本项目为卡耐基梅隆大学分布式系统(CMU440)课程项目。

课程主页:http://www.cs.cmu.edu/~dga/15-440/S14/syllabus.html

源代码:https://github.com/201101050424/Project-2-Tribbler

本项目的架构共分为三层:

  • client层:client层是用户交互层,它接受并解释用户提交的命令,并将它提交给appliction层
  • appliction层:appliction层充当整个Tribbler系统的控制层,它充当了一个可以持久提供服务的server,每个server都有一个Libstore库,该库用来和storage层进行交互,并实现了基于租约的缓存一致性机制
  • storage层:storage层提供了key/value对存储服务(类似hash表),每个storage server实现了Get、Put、GetList、AppendToList、RemoveFromList接口,并有以下特点
    • 运用一致性hash原理,将存储数据分布在存储集群上
    • 支持基于租约的缓存一致性机制

架构图:

层之间通过Http RPC进行通信

三、架构阐述

1.    client层:该层直接与用户交互,接受用户的提交的命令并进行解释后发送给application层,接口如下

  • CreateUser:创建用户,通过RPC将userID注册到TribblerServer上
  • GetSubscription:获取某用户的订阅列表
  • AddSubscription:为某用户增添新的订阅用户
  • AddSubscription:为某用户删除已订阅客用户
  • GetTribbles:获取某用户的推文
  • GetTribblesBySubscription:获取某用户订阅者的推文
  • PostTribble:为某用户发布推文

2.    TribblerServer层分为两部分,TribblerServer和Libstore,TribblerServer主要对client实现RPC,调用了Libstore,下面重点阐述Libstore

CMU440-P2 Tribbler(类推特的发布订阅系统)设计文档

时间: 2024-11-06 00:50:41

CMU440-P2 Tribbler(类推特的发布订阅系统)设计文档的相关文章

使用 Github Pages 发布你的项目文档

导读 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源来发布您的网站更加的方便,其中的来源之一就是你的仓库的 /docs 目录. 文档的质量是一个软件项目健康发展的标志.对于开源项目来说,维护一个可靠而不出错的知识库.详细说明所有的细节是至关重要的.精心策划的文档可以让增加项目的亲切感,提供一步步的指导并促进各种方式的合作可以推动开源软件开发的协作进程

发布/订阅配置

发布/订阅配置 的部分入口声明消息= "消息"意味着组装"消息.dll包含消息模式".特定类型可以配置使用限定名称: namespace.type, assembly. 声明部分端点= " messagebus "告诉订阅者的总线对象,出版商接受订阅请求队列.队列名称"messagebus"简称"队列命名messagebus在本地机器上".来表示一个队列在远程机器上,使用类似于电子邮件的格式:[email 

Redis 发布订阅、事务、脚本、连接、HyperLogLog

欢迎大家加入 459479177QQ群进行交流 本次主要介绍Redis的发布订阅.事务.脚本.连接.HyperLogLog 一.发布订阅 1>psubscribe,订阅一个或多个指定的频道 Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "tv1" 3) (integer) 1 127.0.0.1:6379> psubscribe tv2 tv3                \

产品发布文档清单

产品发版时需要哪些文档,用来做什么用? 我们的新产品要发版了,产品的发版除了软件功能本身之外,我们还是需要有一系列配套的文档去支撑我们的售前.交付.服务.项目开发,毕竟只有前期的文档准备到位了之后,我们的下游团队才能做到具体项目上才会能说“心中有数”! 目前项目开发. 实施&服务团队初步梳理了一下文档的内容,发现这这个清单还是很长,这么长的一个清单,如何让我们的产品能够快速迭代,如何做到敏捷呢?这对于我们目前的产品团队也是一个非常犯难的事情. 在这个问题上,建议进一步思考:按照不同的产品生命周期

使用DITA-OT发布一份CouchBase Server文档

最近需要学习CouchBase Server.而CouchBase Server官方网站访问速度非常慢,所以尝试使用DITA-OT发布一份本地文档.(其实CouchBase Server官网上的文档也是用DITA-OT发布的.) DITA Open Toolkit简称DITA-OT,是一款基于DITA标准的文档的发布工具.DITA-OT的官方文档参见http://www.dita-ot.org/dev/getting-started/installing- client.html. 我在下载DI

python之上下文管理、redis的发布订阅

使用with打开文件的方式,是调用了上下文管理的功能 1 #打开文件的两种方法: 2 3 f = open('a.txt','r') 4 5 with open('a.txt','r') as f 6 7 实现使用with关闭socket 8 import contextlib 9 import socket 10 11 @contextlib.contextmanage 12 def Sock(ip,port): 13 socket = socket.socket() 14 socket.bi

RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式.我想大家即使没有使用过,也已经耳熟能详了. 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪. 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式.当然如果只将报

C# Redis系列(三)-Redis发布订阅及客户端编程

发布订阅模型 Redis中的发布订阅 客户端编程示例 0.3版本Hredis 发布订阅模型 在应用级其作用是为了减少依赖关系,通常也叫观察者模式.主要是把耦合点单独抽离出来作为第三方,隔离易变化的发送方和接收方. 发送方:只负责向第三方发送消息.(杂志社把读者杂志交给邮局) 接收方:被动接收消息.(1:向邮局订阅读者杂志,2:门口去接邮过来的杂志) 第三方作用是:存储订阅杂志的接收方,并在杂志过来时送给接收方. (邮局) C#示例,发送方把杂志放到邮局里面: if (QA.AddBug()) E

Kafka是分布式发布-订阅消息系统

https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转.传统的企业消息系统并不是非常适合大规模的数据处理.为了已在同时搞定在线应用(消息)和离线应用(数据文件,日志