kratos调研

kratos

https://github.com/bilibili/kratos

Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。

Features

HTTP Blademaster:核心基于gin进行模块化设计,简单易用、核心足够轻量;
GRPC Warden:基于官方gRPC开发,集成discovery服务发现,并融合P2C负载均衡;
Cache:优雅的接口化设计,非常方便的缓存序列化,推荐结合代理模式overlord;
Database:集成MySQL/HBase/TiDB,添加熔断保护和统计支持,可快速发现数据层压力;
Config:方便易用的paladin sdk,可配合远程配置中心,实现配置版本管理和更新;
Log:类似zap的field实现高性能日志库,并结合log-agent实现远程日志管理;
Trace:基于opentracing,集成了全链路trace支持(gRPC/HTTP/MySQL/Redis/Memcached);
Kratos Tool:工具链,可快速生成标准项目,或者通过Protobuf生成代码,非常便捷使用gRPC、HTTP、swagger文档;

要求:Go version>=1.12 and GO111MODULE=on

demo

kratos new是快速创建一个项目的命令
(1)kratos new kratos-demo -o YourName -d YourPath(kratos new默认是不会生成通过 protobuf 定义的grpc和bm示例代码的,如需生成请加–proto)

 ├── CHANGELOG.md           # CHANGELOG
 ├── CONTRIBUTORS.md        # CONTRIBUTORS
 ├── README.md              # README
 ├── api                    # api目录为对外保留的proto文件及生成的pb.go文件,注:需要"--grpc"参数
 │   ├── api.proto
 │   ├── api.pb.go          # 通过go generate生成的pb.go文件
 │   └── generate.go
 ├── cmd                    # cmd目录为main所在
 │   └── main.go            # main.go
├── configs                # configs为配置文件目录
│   ├── application.toml   # 应用的自定义配置文件,可能是一些业务开关如:useABtest = true
│   ├── grpc.toml          # grpc相关配置 
│   ├── http.toml          # http相关配置
│   ├── log.toml           # log相关配置
│   ├── memcache.toml      # memcache相关配置
│   ├── mysql.toml         # mysql相关配置
│   └── redis.toml         # redis相关配置
├── go.mod                 # go.mod
└── internal               # internal为项目内部包,包括以下目录:
    ├── dao                # dao层,用于数据库、cache、MQ、依赖某业务grpc|http等资源访问
    │   └── dao.go
    ├── model              # model层,用于声明业务结构体
    │   └── model.go
    ├── server             # server层,用于初始化grpc和http server
    │   └── http           # http层,用于初始化http server和声明handler
    │       └── http.go
    │   └── grpc           # grpc层,用于初始化grpc server和定义method
    │       └── grpc.go
    └── service            # service层,用于业务逻辑处理,且为方便http和grpc共用方法,建议入参和出参保持grpc风格,且使用pb文件生成代码
        └── service.go

(2)Build & Run
cd kratos-demo/cmd
go build
./cmd -conf …/configs
(3)访问:http://localhost:8000/kratos-demo/start

你可能感兴趣的:(go)