Skip to content

lambdaxs/go-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

特性

  • 服务注册发现
  • grpc负载均衡
  • 配置中心
  • 监控/日志/链路
  • 常用数据库驱动

配置管理

  • consul
  • admin
  • config version

日志管理

  • EFK
  • kafka
  • agent monitor

服务监控

  • prometheus
  • grafna
  • consul + confd

链路监控

  • jaeger + agent + collector

服务注册

  • consul
  • agent health
  • service health
  • cluster alert

机器和部署管理

  • CMDB
  • ansible + Makefile + image version

用户管理

  • user
  • group
  • auth grant

测试

  • sonar
  • unit

Example

  • config.toml
[httpServer]
    host = "127.0.0.1"
    port = 8000
    consulAddr = "127.0.0.1:8500"

[grpcServer]
    host = "127.0.0.1"
    port = 8001
    consulAddr = "127.0.0.1:8500"

[mysql]
    [mysql.db]
        dsn = "root:123456@tcp(127.0.0.1:3306)/dbname?charset=utf8&parseTime=True&loc=Local&readTimeout=3s"
        log = true

[redis]
    [redis.cache]
        dsn = "127.0.0.1:6379"
  • main.go
package main

import (    
    "github.com/lambdaxs/go-server"

    "github.com/labstack/echo"

    "context"   
    "fmt"
    "google.golang.org/grpc"
    hello "github.com/lambdaxs/go-server/example/discover/pb"
)

func main() {
    app := go_server.New("demo-server")
    
    //start http server
    httpSrv := app.HttpServer()
    httpSrv.GET("/hello", func(c echo.Context) error {
        return c.JSON(200,"Hello Go-Server!")
    })
    
    //start grpc server
    app.RegisterGRPCServer(func(srv *grpc.Server) {
        hello.RegisterHelloServerServer(srv, &SayHelloServer{})             
    })

    //server start
    app.Run()
    
}

type SayHelloServer struct {
}

func (s *SayHelloServer) SayHello(ctx context.Context, req *hello.SayHelloReq) (resp *hello.SayHelloResp, err error) {
    resp = &hello.SayHelloResp{
        Reply: "",
    }
    resp.Reply = fmt.Sprintf("%s:%s", req.GetName(), "hello")
    return
}
  • 启动程序
go run main.go --config config.toml

配置文件

  • http服务配置
[httpServer]
    host = "127.0.0.1"
    port = 8000
    consulAddr = "127.0.0.1:8500" #consulAddr为consul的链接地址,用户服务发现与注册。可选,留空即为单机服务
  • grpc服务配置
[grpcServer]
    host = "127.0.0.1"
    port = 8001
    consulAddr = "127.0.0.1:8500" #consulAddr为consul的链接地址,用户服务发现与注册。可选,留空即为单机服务
  • mysql配置
[mysql]
    [mysql.db]
        dsn = "root:123456@tcp(127.0.0.1:3306)/dbname?charset=utf8&parseTime=True&loc=Local&readTimeout=3s"
        log = true
//get mysql db object
db := go_server.Model("db")
  • redis配置
[redis]
    [redis.cache]
        dsn = "127.0.0.1:6379"
//get redis connect pool
pool := go_server.RedisPool("cache")
conn := pool.Get()
defer conn.close()

About

Golang Server for Micro Service

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages