V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TheCure
V2EX  ›  程序员

MIT 的分布式 lab 可能是我工作以来写过最难的代码

  •  
  •   TheCure · 2018-12-12 20:57:56 +08:00 · 5059 次点击
    这是一个创建于 1955 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在国内某一线工作了两年多了, 本 crud 程序员好像从来没写过这么困难的代码 平时的业务哪有这么复杂和难以调试啊捂脸

    保守估计花了大概 60 个小时, 做完了的话对分布式系统的理解应该会比其他多数程序员要深刻

    课程中整理了一些笔记,里面都是我觉得最容易出错和困难的地方

    https://zhuanlan.zhihu.com/sideshow

    安利下这个课程 MIT 6.824, 写的很爽, 教学质量真的很高.主要包括如下内容

    • 实现 Raft, 包括以下内容, 除了集群节点变更, 都需要实现

      1. 选主
      2. 数据备份与恢复能力
      3. 快照与日志压缩
      4. 并发安全
      5. Fault tolerance
      6. 网络分区
      7. 少数派故障可用性
    • 基于 Raft,实现线性一致性 K/V 服务, K/V 服务同时支持上述 Lab2 的所有特性

    • 实现一个动态扩展的强一致 K/V 服务, 能够动态增加删除节点,尽可能快速提供服务 /垃圾回收,同时保证 Lab2 的所有特性


    最后, 有没有人要招 Go/Python 程序员? 🙋

    19 条回复    2019-06-14 10:32:22 +08:00
    pc10201
        1
    pc10201  
       2018-12-12 21:58:44 +08:00
    在一线大厂还找工作?
    TheCure
        2
    TheCure  
    OP
       2018-12-12 22:27:00 +08:00
    @pc10201 很奇怪么..
    ppyybb
        3
    ppyybb  
       2018-12-13 07:57:58 +08:00 via iPhone
    和 6.828 哪个难?
    工作需要准备开始学 go,一边准备刷 6.824 。
    tourist2018
        4
    tourist2018  
       2018-12-13 08:40:39 +08:00
    LZ 应该挺强的
    hwding
        5
    hwding  
       2018-12-13 09:40:42 +08:00 via iPhone
    2333 毕设就准备做这个,我是在完全按照 paper 的协议描述做,没想到还有课程,马克。
    TheCure
        6
    TheCure  
    OP
       2018-12-13 11:29:53 +08:00
    @ppyybb 看起来比 6.828 难, 我看 quora 上说最难的课程就是高级算法和分布式的课程
    sununiq
        7
    sununiq  
       2018-12-13 11:29:55 +08:00
    借楼问楼主个问题,最近也在刷 6,824,但是项目导入 golang 中之后,执行测试用例一直报:
    .\master_rpc.go:48: debug call has arguments but no formatting directives
    换成命令行的去执行:
    go test -run Sequential,也同样的报这个错误
    放狗搜了下,没有搜到靠谱的回复,请问楼主有没有碰到过
    TheCure
        8
    TheCure  
    OP
       2018-12-13 11:30:23 +08:00
    @hwding 嗯 你可以按照 lab 做, 好处是 lab 的测试比较充分, 自己可能想不到这么多测试用例
    TheCure
        9
    TheCure  
    OP
       2018-12-13 11:32:57 +08:00
    @sununiq 开 debug 进去看下, 是不是调用 rpc 时的参数传的有问题
    TheCure
        10
    TheCure  
    OP
       2018-12-13 15:06:41 +08:00
    为什么这么多人收藏- - 但是都不回复
    ArianX
        11
    ArianX  
       2018-12-13 18:26:05 +08:00 via Android
    6.824 对分布式萌新友不友好呀
    TheCure
        12
    TheCure  
    OP
       2018-12-13 18:38:33 +08:00
    @ArianX 系统编程经验够的话 看完论文直接开撸
    MichaelZhou16
        13
    MichaelZhou16  
       2018-12-14 04:57:15 +08:00
    写的 raft 吗,那是真的大神。。我们研究生的课程只要自己写 raft 选主就算过了。。
    TheCure
        14
    TheCure  
    OP
       2018-12-14 10:43:27 +08:00
    @MichaelZhou16 没有工业化里的多组, batch 这些优化, 能实现论文里描述的特性, 并且线性一致就好. 除了 raft, 后面的动态伸缩的强一致 kv 服务器写起来也很有挑战...
    sununiq
        15
    sununiq  
       2018-12-14 22:03:26 +08:00
    @callofmx 没法 debug,sequential 那块代码单独抠出来没问题,运行 distributed 那块就报错,运行那个最后一起跑的脚本也报错,醉了。。。就是 shedule 那块验证不了
    sununiq
        16
    sununiq  
       2018-12-14 22:14:54 +08:00
    感觉是 go 版本的问题,我用的 go1.12 版本,问下楼主用的什么版本,我再试下
    TheCure
        17
    TheCure  
    OP
       2018-12-15 13:23:23 +08:00 via iPhone
    @sununiq 和你一样,不过更换版本可能没效果哦,不是排查思路的一部分
    razertory
        18
    razertory  
       2019-05-10 11:47:15 +08:00
    刚写完 Lab1 的 MR 和 Lab2 的 leader election。。感觉是有点复杂
    wqj
        19
    wqj  
       2019-06-14 10:32:22 +08:00
    好难啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   902 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.