Browse Source

增加日志库;增加读取配置的功能

gitlink
Gitea 2 years ago
parent
commit
22bbb1e9d9
5 changed files with 85 additions and 19 deletions
  1. +14
    -0
      Makefile
  2. +13
    -0
      assets/config/config.json
  3. +8
    -7
      command_service.go
  4. +22
    -0
      config/config.go
  5. +28
    -12
      main.go

+ 14
- 0
Makefile View File

@@ -0,0 +1,14 @@
OUTPUT_BINARY_NAME = "cloud-coordinator"
OUTPUT_DIR_NAME = "cloud-coordinator"


ASSETS_DIR_NAME = "assets"
BUILD_DIR = "../../build"

build:
go build -o ${BUILD_DIR}/${OUTPUT_DIR_NAME}/${OUTPUT_BINARY_NAME}
if [ -d ${ASSETS_DIR_NAME} ];then \
cp -r ${ASSETS_DIR_NAME}/* ${BUILD_DIR}/${OUTPUT_DIR_NAME}/; \
fi
clean:
rm -f ${BUILD_DIR}/${OUTPUT_DIR_NAME}/${OUTPUT_BINARY_NAME}

+ 13
- 0
assets/config/config.json View File

@@ -0,0 +1,13 @@
{
"logger": {
"outputFileName": "cloud-coordinator",
"outputDirectory": "log",
"level": "debug"
},
"db": {
"account": "root",
"password": "123456",
"port": 3306,
"databaseName": "kx"
}
}

+ 8
- 7
command_service.go View File

@@ -3,6 +3,7 @@ package main
import ( import (
"fmt" "fmt"


log "github.com/sirupsen/logrus"
mydb "gitlink.org.cn/cloudream/db" mydb "gitlink.org.cn/cloudream/db"
ramsg "gitlink.org.cn/cloudream/rabbitmq/message" ramsg "gitlink.org.cn/cloudream/rabbitmq/message"
"gitlink.org.cn/cloudream/utils" "gitlink.org.cn/cloudream/utils"
@@ -32,14 +33,14 @@ func (service *CommandService) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
//--kx:根据查出来的hash/hashs、nodeIps、TempOrPins、Times(移动/读取策略)、Delay确定hashs、ids //--kx:根据查出来的hash/hashs、nodeIps、TempOrPins、Times(移动/读取策略)、Delay确定hashs、ids
bucketID, err := service.db.QueryBucketID(msg.BucketName) bucketID, err := service.db.QueryBucketID(msg.BucketName)
if err != nil { if err != nil {
// TODO 日志
log.Warn("query BucketID failed, err: %s", err.Error())
return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query BucketID failed") return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query BucketID failed")
} }


//jh:使用command中的bucketid和objectname查询对象表,获得objectid,redundancy,EcName,fileSizeInBytes //jh:使用command中的bucketid和objectname查询对象表,获得objectid,redundancy,EcName,fileSizeInBytes
object, err := service.db.QueryObject(msg.ObjectName, bucketID) object, err := service.db.QueryObject(msg.ObjectName, bucketID)
if err != nil { if err != nil {
// TODO 日志
log.Warn("query Object failed, err: %s", err.Error())
return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query Object failed") return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query Object failed")
} }


@@ -50,7 +51,7 @@ func (service *CommandService) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
if object.Redundancy { //rep if object.Redundancy { //rep
objectRep, err := service.db.QueryObjectRep(object.ObjectID) objectRep, err := service.db.QueryObjectRep(object.ObjectID)
if err != nil { if err != nil {
// TODO 日志
log.Warn("query ObjectRep failed, err: %s", err.Error())
return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query ObjectRep failed") return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query ObjectRep failed")
} }


@@ -60,7 +61,7 @@ func (service *CommandService) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
redundancy = "ec" redundancy = "ec"
blockHashs, err := service.db.QueryObjectBlock(object.ObjectID) blockHashs, err := service.db.QueryObjectBlock(object.ObjectID)
if err != nil { if err != nil {
// TODO 日志
log.Warn("query ObjectBlock failed, err: %s", err.Error())
return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query ObjectBlock failed") return ramsg.NewCoorMoveRespFailed(errorcode.OPERATION_FAILED, "query ObjectBlock failed")
} }


@@ -108,12 +109,12 @@ func (service *CommandService) RepWrite(msg *ramsg.RepWriteCommand) ramsg.WriteR
//查询用户可用的节点IP //查询用户可用的节点IP
nodeIPs, err := service.db.QueryUserAvailableNodeIPs(msg.UserID) nodeIPs, err := service.db.QueryUserAvailableNodeIPs(msg.UserID)
if err != nil { if err != nil {
// TODO2 日志
log.Warn("query user available node ip failed, err: %s", err.Error())
return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "query user available node ip failed") return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "query user available node ip failed")
} }


if len(nodeIPs) < msg.ReplicateNumber { if len(nodeIPs) < msg.ReplicateNumber {
// TODO2 日志
log.Warn("user nodes are not enough, err: %s", err.Error())
return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "user nodes are not enough") return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "user nodes are not enough")
} }


@@ -127,7 +128,7 @@ func (service *CommandService) RepWrite(msg *ramsg.RepWriteCommand) ramsg.WriteR


_, err = service.db.CreateRepObject(msg.ObjectName, msg.BucketName, msg.FileSizeInBytes, msg.ReplicateNumber) _, err = service.db.CreateRepObject(msg.ObjectName, msg.BucketName, msg.FileSizeInBytes, msg.ReplicateNumber)
if err != nil { if err != nil {
// TODO2 日志
log.Warn("create object failed, err: %s", err.Error())
return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "create object failed") return ramsg.NewCoorWriteRespFailed(errorcode.OPERATION_FAILED, "create object failed")
} }




+ 22
- 0
config/config.go View File

@@ -0,0 +1,22 @@
package config

import (
db "gitlink.org.cn/cloudream/db/config"
c "gitlink.org.cn/cloudream/utils/config"
log "gitlink.org.cn/cloudream/utils/logger"
)

type Config struct {
Logger log.Config `json:"logger"`
DB db.Config `json:"db"`
}

var cfg Config

func Init() error {
return c.DefaultLoad(&cfg)
}

func Cfg() *Config {
return &cfg
}

+ 28
- 12
main.go View File

@@ -1,28 +1,37 @@
package main package main


import ( import (
"fmt"
"os"

log "github.com/sirupsen/logrus"
"gitlink.org.cn/cloudream/coordinator/config"
mydb "gitlink.org.cn/cloudream/db" mydb "gitlink.org.cn/cloudream/db"
rasvr "gitlink.org.cn/cloudream/rabbitmq/server" rasvr "gitlink.org.cn/cloudream/rabbitmq/server"
"gitlink.org.cn/cloudream/utils/logger"
) )


const (
s_DATABASE_SOURCE_NAME = "root:123456@tcp(127.0.0.1:3306)/kx?charset=utf8mb4&parseTime=true"
)
func main() {
err := config.Init()
if err != nil {
fmt.Printf("init config failed, err: %s", err.Error())
os.Exit(1)
}


//TODO xh: 读取配置文件,初始化变量
err = logger.Init(&config.Cfg().Logger)
if err != nil {
fmt.Printf("init logger failed, err: %s", err.Error())
os.Exit(1)
}


func main() {
//TODO xh:解析配置文件
db, err := mydb.NewDB(s_DATABASE_SOURCE_NAME)
db, err := mydb.NewDB(config.Cfg().DB.MakeSourceString())
if err != nil { if err != nil {
// TODO 错误处理
return
log.Fatalf("new db failed, err: %s", err.Error())
} }


cmdSvr, err := rasvr.NewCoordinatorServer(NewCommandService(db)) cmdSvr, err := rasvr.NewCoordinatorServer(NewCommandService(db))
if err != nil { if err != nil {
// TODO 错误日志
return
log.Fatalf("new coordinator server failed, err: %s", err.Error())
} }


// 启动命令服务器 // 启动命令服务器
@@ -33,5 +42,12 @@ func main() {
} }


func serveCommandServer(server *rasvr.CoordinatorServer) { func serveCommandServer(server *rasvr.CoordinatorServer) {
server.Serve()
log.Info("start serving command server")

err := server.Serve()
if err != nil {
log.Errorf("command server stopped with error: %s", err.Error())
}

log.Info("command server stopped")
} }

Loading…
Cancel
Save