GO Web/RPC/ORM| 青训营笔记

77 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第2天

一、本堂课重点内容:

  • Hertz
  • Kitex
  • GORM
  • 项目实战

二、详细知识点介绍:

Hertz

Hertz 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

Kitex

Kitex是字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,在字节内部已广泛使用。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选择

GORM

对开发人员友好的出色Golang ORM 库。

Easy Note项目

介绍

一个 实现简单笔记服务的kitexdemo,分为以下三块:

服务名作用技术框架协议路径IDL
demoapihttp interfacekitex/hertzhttpbizdemo/easy_note/cmd/api
demouseruser data managementkitex/gormprotobufbizdemo/easy_note/cmd/userbizdemo/easy_note/idl/user.proto
demonotenote data managementkitex/gormthriftbizdemo/easy_note/cmd/notebizdemo/easy_note/idl/note.thrift
调用关系
                                    http
                           ┌────────────────────────┐
 ┌─────────────────────────┤                        ├───────────────────────────────┐
 │                         │         demoapi        │                               │
 │      ┌──────────────────►                        │◄──────────────────────┐       │
 │      │                  └───────────▲────────────┘                       │       │
 │      │                              │                                    │       │
 │      │                              │                                    │       │
 │      │                              │                                    │       │
 │      │                           resolve                                 │       │
 │      │                              │                                    │       │
req    resp                            │                                   resp    req
 │      │                              │                                    │       │
 │      │                              │                                    │       │
 │      │                              │                                    │       │
 │      │                   ┌──────────▼─────────┐                          │       │
 │      │                   │                    │                          │       │
 │      │       ┌───────────►       Etcd         ◄─────────────────┐        │       │
 │      │       │           │                    │                 │        │       │
 │      │       │           └────────────────────┘                 │        │       │
 │      │       │                                                  │        │       │
 │      │     register                                           register   │       │
 │      │       │                                                  │        │       │
 │      │       │                                                  │        │       │
 │      │       │                                                  │        │       │
 │      │       │                                                  │        │       │
┌▼──────┴───────┴───┐                                           ┌──┴────────┴───────▼─┐
│                   │───────────────── req ────────────────────►│                     │
│       demonote    │                                           │        demouser     │
│                   │◄──────────────── resp ────────────────────│                     │
└───────────────────┘                                           └─────────────────────┘
      thrift                                                           protobuf
使用基本功能
  • 中间件、速率限制、请求重试、超时控制、连接复用

  • Tracing

    • 使用 jaeger
  • 自定义边界处理程序

    • 实现CPU利用率的自定义限制处理程序
  • 服务发现和注册

项目目录
目录介绍
pkg/constantsconstant
pkg/boundcustomized bound handler
pkg/errnocustomized error number
pkg/middlewareRPC middleware
pkg/tracerinit jaeger
daldb operation
packdata pack
servicebusiness logic
项目运行
运行依赖基础
docker-compose up
运行demonote服务
 cd cmd/note
 sh build.sh
 sh output/bootstrap. sh

运行demouser服务
 cd cmd/user
 sh build.sh
 sh output/bootstrap.sh

运行demoapi服务
 cd cmd/api 
 chmod +x run. sh
 . /run. sh

三、课后个人总结:

四、引用参考: