Add comments to the key progress
diff --git a/syncer/etcd/agent.go b/syncer/etcd/agent.go
index 941ecd1..19898af 100644
--- a/syncer/etcd/agent.go
+++ b/syncer/etcd/agent.go
@@ -55,9 +55,12 @@
 		case <-etcd.Server.ReadyNotify():
 			log.Info("start etcd success")
 			close(a.readyCh)
+
 		// Be returns when the server is stopped
 		case <-etcd.Server.StopNotify():
 			err = errors.New("unknown error cause start etcd failed, check etcd")
+
+		// Returns an error when running goroutine fails in the etcd startup process
 		case err = <-etcd.Err():
 		case <-ctx.Done():
 			err = ctx.Err()
@@ -70,10 +73,12 @@
 	}
 }
 
+// Ready Returns a channel that will be closed when etcd is ready
 func (a *Agent) Ready() <-chan struct{} {
 	return a.readyCh
 }
 
+// Error Returns a channel that will be transmit an etcd error
 func (a *Agent) Error() <-chan error {
 	return a.errorCh
 }
diff --git a/syncer/grpc/server.go b/syncer/grpc/server.go
index 9da3c96..086b657 100644
--- a/syncer/grpc/server.go
+++ b/syncer/grpc/server.go
@@ -85,10 +85,12 @@
 	close(s.readyCh)
 }
 
+// Ready Returns a channel that will be closed when grpc is ready
 func (s *Server) Ready() <-chan struct{} {
 	return s.readyCh
 }
 
+// Error Returns a channel that will be transmit a grpc error
 func (s *Server) Error() <-chan error {
 	return s.errorCh
 }
diff --git a/syncer/serf/agent.go b/syncer/serf/agent.go
index c36c82b..3881edf 100644
--- a/syncer/serf/agent.go
+++ b/syncer/serf/agent.go
@@ -19,7 +19,6 @@
 import (
 	"context"
 	"errors"
-	"fmt"
 	"time"
 
 	"github.com/apache/servicecomb-service-center/pkg/log"
@@ -75,7 +74,10 @@
 	}
 }
 
-// HandleEvent Handles events from serf
+// HandleEvent Handles serf.EventMemberJoin events,
+// which will wait for members to join until the number of group members is equal to "groupExpect"
+// when the startup mode is "ModeCluster",
+// used for logical grouping of serf nodes
 func (a *Agent) HandleEvent(event serf.Event) {
 	if event.EventType() != serf.EventMemberJoin {
 		return
@@ -90,14 +92,17 @@
 	close(a.readyCh)
 }
 
+// Ready Returns a channel that will be closed when serf is ready
 func (a *Agent) Ready() <-chan struct{} {
 	return a.readyCh
 }
 
+// Error Returns a channel that will be transmit a serf error
 func (a *Agent) Error() <-chan error {
 	return a.errorCh
 }
 
+// Stop serf agent
 func (a *Agent) Stop() {
 	if a.errorCh != nil {
 		a.Leave()
@@ -107,6 +112,7 @@
 	}
 }
 
+// LocalMember returns the Member information for the local node
 func (a *Agent) LocalMember() *serf.Member {
 	serfAgent := a.Agent.Serf()
 	if serfAgent != nil {
@@ -121,7 +127,7 @@
 	serfAgent := a.Agent.Serf()
 	if serfAgent != nil {
 		for _, member := range serfAgent.Members() {
-			fmt.Println("member: ", member.Tags[tagKeyCluster])
+			log.Infof("member = %s, groupName = %s", member.Name, member.Tags[tagKeyCluster])
 			if member.Tags[tagKeyCluster] == a.conf.ClusterName {
 				members = append(members, member)
 			}
@@ -170,17 +176,24 @@
 		return nil
 	}
 
+	// Count of attempts
 	attempt := 0
 	ticker := time.NewTicker(a.conf.RetryInterval)
 	for {
 		log.Infof("serf: Joining cluster...(replay: %v)", a.conf.ReplayOnJoin)
 		var n int
+
+		// Try to join the specified serf nodes
 		n, err = a.Join(a.conf.RetryJoin, a.conf.ReplayOnJoin)
 		if err == nil {
 			log.Infof("serf: Join completed. Synced with %d initial agents", n)
 			break
 		}
 		attempt++
+
+		// If RetryMaxAttempts is greater than 0, agent will exit
+		// and throw an error when the number of attempts exceeds RetryMaxAttempts,
+		// else agent will try to join other nodes until successful always
 		if a.conf.RetryMaxAttempts > 0 && attempt > a.conf.RetryMaxAttempts {
 			err = errors.New("serf: maximum retry join attempts made, exiting")
 			log.Errorf(err, err.Error())
@@ -190,6 +203,7 @@
 		case <-ctx.Done():
 			err = ctx.Err()
 			goto done
+		// Waiting for ticker to trigger
 		case <-ticker.C:
 		}
 	}
diff --git a/syncer/server/handler.go b/syncer/server/handler.go
index 2f19438..da662e9 100644
--- a/syncer/server/handler.go
+++ b/syncer/server/handler.go
@@ -56,7 +56,8 @@
 	return s.servicecenter.Discovery()
 }
 
-// HandleEvent Handles events from serf
+// HandleEvent Handles serf.EventUser/serf.EventQuery,
+// used for message passing and processing between serf nodes
 func (s *Server) HandleEvent(event serf.Event) {
 	switch event.EventType() {
 	case serf.EventUser:
diff --git a/syncer/server/server.go b/syncer/server/server.go
index ae315ee..b06473b 100644
--- a/syncer/server/server.go
+++ b/syncer/server/server.go
@@ -37,8 +37,14 @@
 var stopChanErr = errors.New("stopped syncer by stopCh")
 
 type moduleServer interface {
+	// Starts launches the module server, the returned is not guaranteed that the server is ready
+	// The moduleServer.Ready() channel will be transmit a message when server completed
 	Start(ctx context.Context)
+
+	// Returns a channel that will be closed when the module server is ready
 	Ready() <-chan struct{}
+
+	// Returns a channel that will be transmit a module server error
 	Error() <-chan error
 }
 
@@ -61,6 +67,7 @@
 	// Wraps the grpc server
 	grpc *grpc.Server
 
+	// The channel will be closed when receiving a system interrupt signal
 	stopCh chan struct{}
 }
 
@@ -80,6 +87,7 @@
 		return
 	}
 
+	// Start system signal listening, wait for user interrupt program
 	gopool.Go(syssig.Run)
 
 	err = s.startModuleServer(s.agent)
diff --git a/syncer/servicecenter/servicecenter_test.go b/syncer/servicecenter/servicecenter_test.go
index 0e13774..5efe211 100644
--- a/syncer/servicecenter/servicecenter_test.go
+++ b/syncer/servicecenter/servicecenter_test.go
@@ -21,11 +21,10 @@
 	"errors"
 	"testing"
 
-	"github.com/apache/servicecomb-service-center/syncer/pkg/mock/mocksotrage"
-
 	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/syncer/config"
 	"github.com/apache/servicecomb-service-center/syncer/pkg/mock/mockplugin"
+	"github.com/apache/servicecomb-service-center/syncer/pkg/mock/mocksotrage"
 	"github.com/apache/servicecomb-service-center/syncer/plugins"
 	pb "github.com/apache/servicecomb-service-center/syncer/proto"
 )