Skip to content

Commit

Permalink
Merge pull request #67 from kylin2017/feature/gin
Browse files Browse the repository at this point in the history
MOD:支持master-slave模式
  • Loading branch information
kylin2017 authored Sep 5, 2019
2 parents da4d0a3 + 38f3d00 commit 3994118
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions util/service/Service.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ const (
PROCESSOR_THRIFT = "thrift"
PROCESSOR_GRPC = "gprc"
PROCESSOR_GIN = "gin"

MODEL_SERVER = 0
MODEL_MASTERSLAVE = 1
)

var service = NewService()
Expand All @@ -48,6 +51,7 @@ type cmdArgs struct {
sessKey string
group string
disable bool
model int
}

func (m *Service) parseFlag() (*cmdArgs, error) {
Expand Down Expand Up @@ -238,6 +242,12 @@ func (m *Service) Init(confEtcd configEtcd, args *cmdArgs, initfn func(ServBase)
defer slog.Sync()
defer statlog.Sync()

err = m.handleModel(sb, servLoc, args.model)
if err != nil {
slog.Panicf("%s handleModel err:%s", fun, err)
return err
}

err = initfn(sb)
if err != nil {
slog.Panicf("%s callInitFunc err:%s", fun, err)
Expand All @@ -264,6 +274,22 @@ func (m *Service) Init(confEtcd configEtcd, args *cmdArgs, initfn func(ServBase)
return nil
}

func (m *Service) handleModel(sb *ServBaseV2, servLoc string, model int) error {
fun := "Service.handleModel -->"

if model == MODEL_MASTERSLAVE {
lockKey := fmt.Sprintf("%s-master-slave", servLoc)
if err := sb.LockGlobal(lockKey); err != nil {
slog.Errorf("%s LockGlobal key: %s, err: %s", fun, lockKey, err)
return err
}

slog.Infof("%s LockGlobal succ, key: %s", fun, lockKey)
}

return nil
}

func (m *Service) initProcessor(sb *ServBaseV2, procs map[string]Processor) error {
fun := "Service.initProcessor -->"

Expand Down Expand Up @@ -370,6 +396,23 @@ func Serve(etcds []string, baseLoc string, initfn func(ServBase) error, procs ma
return service.Serve(configEtcd{etcds, baseLoc}, initfn, procs)
}

func MasterSlave(etcds []string, baseLoc string, initfn func(ServBase) error, procs map[string]Processor) error {
return service.MasterSlave(configEtcd{etcds, baseLoc}, initfn, procs)
}

func (m *Service) MasterSlave(confEtcd configEtcd, initfn func(ServBase) error, procs map[string]Processor) error {
fun := "Service.MasterSlave -->"

args, err := m.parseFlag()
if err != nil {
slog.Panicf("%s parse arg err:%s", fun, err)
return err
}
args.model = MODEL_MASTERSLAVE

return m.Init(confEtcd, args, initfn, procs)
}

func Init(etcds []string, baseLoc string, servLoc, servKey, logDir string, initfn func(ServBase) error, procs map[string]Processor) error {
args := &cmdArgs{
logMaxSize: 0,
Expand Down

0 comments on commit 3994118

Please sign in to comment.