利用Go语言实现简单的分布式计算架构 | 青训营笔记

47 阅读1分钟

首先新建一个文件夹distributed_calculator, cd 进去

.

├── calculator.go

├── client

│   └── client.go

├── go.mod

└── server

└── server.go

calculator.go 中:


package calculator

type Calculator int

type Args struct {

A, B int

}

func (c *Calculator) Add(args *Args, reply *int) error {

*reply = args.A + args.B

return nil

}

server.go 中:

package main

import (

"calculator"

"log"

"net"

"net/http"

"net/rpc"

)

func main() {

calc := new(calculator.Calculator)

rpc.Register(calc)

rpc.HandleHTTP()

listener, err := net.Listen("tcp", ":1234")

if err != nil {

log.Fatal("Listener error:", err)

}

log.Printf("Serving RPC server on port %d", 1234)

http.Serve(listener, nil)

}

client.go 中:

package main

import (

"calculator"

"fmt"

"log"

"net/rpc"

)

func main() {

client, err := rpc.DialHTTP("tcp", "localhost:1234")

if err != nil {

log.Fatal("Dialing error:", err)

}

args := calculator.Args{A: 7, B: 9}

var reply int

err = client.Call("Calculator.Add", args, &reply)

if err != nil {

log.Fatal("RPC error:", err)

}

fmt.Printf("%d + %d = %d\n", args.A, args.B, reply)

}