用go语言代码去实现一个简单的分布式系统
时间: 2024-05-12 19:16:20 浏览: 16
用 Go 语言来实现一个简单的分布式系统,需要用到多线程和网络编程。下面是一个简单的分布式系统示例代码:
```go
package main
import (
"fmt"
"net"
"sync"
)
var wg sync.WaitGroup
func main() {
wg.Add(2)
go server()
go client()
wg.Wait()
}
func server() {
defer wg.Done()
ln, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println(err)
return
}
for {
conn, err := ln.Accept()
if err != nil {
fmt.Println(err)
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
for {
buf := make([]byte, 512)
_, err := conn.Read(buf)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("received message: ", string(buf))
}
}
func client() {
defer wg.Done()
conn, err := net.Dial("tcp", "127.0.0.1:8080")
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
for i := 0; i < 10; i++ {
_, err := conn.Write([]byte("hello world"))
if err != nil {
fmt.Println(err)
return
}
}
}
```
这个示例中实现了一个简单的分布式系统,包括了一个 server 和一个 client。server 在 8080 端口上监听,接收 client 的连接并处理来自 client 的消息。 client 会连接到 server,并发送10条“hello world”消息。
这仅仅是一个简单的示例,在实际应用中,需要考虑到更多的因素