分布式系统实验二Unique ID Generation

本文介绍了使用Go编程语言实现一个Maelstrom节点,它接收generate类型的message,生成并附带UUID的body,然后将响应发送回节点。测试命令用于验证节点在集群中的功能。
摘要由CSDN通过智能技术生成

前面还是按照实验一的步骤,新建文件夹和go文件,然后编写代码

package main

import (
 "log"

 "github.com/google/uuid"
 maelstrom "github.com/jepsen-io/maelstrom/demo/go"
)

func main() {
 n := maelstrom.NewNode()

 n.Handle("generate", func(msg maelstrom.Message) error {
  var body map[string]any = make(map[string]any)
  // if err := json.Unmarshal(msg.Body, &body); err != nil {
  //  return err
  // }

  id := uuid.New().String()
  body["type"] = "generate_ok"
  body["id"] = id

  return n.Reply(msg, body)
 })

 if err := n.Run(); err != nil {
  log.Fatal(err)
 }
}

主要是接受的generate类型的消息,接收到后,用uuid这个工具生成随机且唯一的id,并将这个id和type一起封装到body里面,回复给节点。
最后执行

./maelstrom test -w unique-ids --bin ~/go/bin/maelstrom-unique-ids --time-limit 30 --rate 1000 --node-count 3 --availability total --nemesis partition

注意–bin后面是放的二进制文件路径,–node-count 3代表3个节点集群
如果收到everything looks good就证明成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值