本文主要是介绍CMU15-440-P0:Implementing a key-value messaging system,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
准备继续更新blog。
最近工作上一直在写业务,看些课程换换脑子。
15-440是CMU的一个分布式课程 http://www.cs.cmu.edu/~15-440/syllabus.html ,其实之前在学校的时候就上过分布式的课程,当时用的MIT 6.824的课件,可惜当时很多paper没有仔细去看,只是把作业做了下,除了lab1都没有写blog记录,导致后来有时间写blog的时候很多细节都不记得了。
这门课程的作业也是用的go语言,不过go语言在一些低版本中存在某些bug,所以如果使用 go的话尽量升级到最新
今年的P0是实现一个 kv messaging system,相对来讲是一个比较简单的系统。很久没有写过go,我也通过这个系统复习了下go语言中的一些特性,然后了解到了一些api的相关用法。
这个系统的要求是这样的:
有一个kv server, kv有两个接口, get 和put
有若干client,通过网络去调用kv server的这两个接口,去获取kv中某个key的value或者修改某个key的value。
并且server还需提供一个接口count,返回的是当前与server连接的client个数。
要求单个server支持多个client的同时访问,并且线程安全
其中还有一个特殊的要求是,client当中可能会有一些是slow reading client,它的特性就是不会立即读取来自server的消息,如果server持续的向client写数据而client一直不读的话,会导致tcp连接的output buffer爆掉。这种情况需要server对每个client开一个message queue,如果message的数量超过一定数量
这篇关于CMU15-440-P0:Implementing a key-value messaging system的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!