| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package service_register
- import (
- "fmt"
- "github.com/samuel/go-zookeeper/zk"
- "net"
- "os"
- "time"
- )
- func main() {
- go starServer("127.0.0.1:8897")
- go starServer("127.0.0.1:8898")
- go starServer("127.0.0.1:8899")
- a := make(chan bool, 1)
- <-a
- }
- func GetServerConnect() (conn *zk.Conn, err error) {
- zkList := []string{"localhost:2181"}
- conn, _, err = zk.Connect(zkList, 10*time.Second)
- if err != nil {
- fmt.Println(err)
- }
- return
- }
- func starServer(port string) {
- tcpAddr, err := net.ResolveTCPAddr("tcp4", port)
- if err != nil {
- fmt.Println(err.Error())
- }
- listener, err := net.ListenTCP("tcp", tcpAddr)
- if err != nil {
- fmt.Println(err.Error())
- }
- //注册zk节点q
- // 链接zk GetConnect()
- conn, err := GetConnect()
- if err != nil {
- fmt.Printf(" connect zk error: %s ", err)
- }
- defer conn.Close()
- // zk节点注册 RegistServer()
- err = RegistServer(conn, port)
- if err != nil {
- fmt.Printf(" regist node error: %s ", err)
- }
- for {
- conn, err := listener.Accept()
- if err != nil {
- fmt.Fprintf(os.Stderr, "Error: %s", err)
- continue
- }
- go handleCient(conn, port)
- }
- }
- func handleCient(conn net.Conn, port string) {
- defer conn.Close()
- daytime := time.Now().String()
- conn.Write([]byte(port + ": " + daytime))
- }
- func RegistServer(conn *zk.Conn, host string) (err error) {
- _, err = conn.Create("/go_servers/"+host, nil, zk.FlagEphemeral, zk.WorldACL(zk.PermAll))
- return
- }
|