Wener Notes

Go Awesome

约 12 分钟阅读
标签:资源精选

Golang Awesome

常用库

学习

日志

数据库驱动

数据库相关

Web

  • Go 本身的 HTTP 处理已经比较完备,选择框架和库尽量以增强为主,避免选择全新实现
  • 兼容 Go HTTP 处理逻辑的库能够相互组合使用

路由/Router

框架/Framework

增强处理

Websocket

Misc

GraphQL

网关

代码生成/Generator

JSON

数据处理/Data

AI/ML

网络/Network

协议/Protocol

  • hacdias/webdavGitHubhacdias/webdavhttp://www.webdav.org/specs/rfc4918.html · 子协议 · CalDAV - 日历 · CardDAV - 联系人 · WebDAV 没有标准位置,常见位置 · /webdav · /dav · CalDAV /.well-known/caldav笔记:WebDAV
    • Simple Go WebDAV server

事件驱动/Event

服务框架/Service Framework

  • dapr/daprGitHubdapr/daprDapr 提供云服务抽象,让实现底层解耦可替换。 · 虽然 Dapr 看似提取了很多常用的服务功能,但都是对标云平台服务的。 · 因为 Dapr 是 微软 和 阿里 联合开发的,也就是为了把 Azure 和 Aliyun 的功能集成进来。 · 不适用场景笔记:Dapr portable, event-driven, runtime for building distributed applications
    • Sidecar 模式
    • 微软 项目
  • AsynkronIT/protoactor-goGitHubAsynkronIT/protoactor-go
    • Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
  • wasmCloud/wasmCloudGitHubwasmCloud/wasmCloud
    • wasm actor 平台 - 支持 tinygo
  • RichardKnop/machineryGitHubRichardKnop/machineryRichardKnop/machinery 是什么? · 异步任务队列 · Lock - Redis · Broker - AMQP, Redis · ResultBackend - Redis, Memcache, AMQP, MongoDB笔记:machinery asynchronous task queue/job queue based on distributed message passing
  • hibiken/asynqGitHubhibiken/asynq
    • MIT, Golang
    • Redis
    • Simple, reliable, and efficient distributed task queue in Go
  • twitchtv/twirpGitHubtwitchtv/twirptwitchtv/twirp · unary RPC · 支持 JSON 协议 · 使用 GRPC 定义,走 HTTP 协议 · 开发不活跃 · 官方支持语言: PHP, Ruby, Go · 参考 · SpecV7 · 不支持 streaming #3笔记:twirp simple RPC framework with protobuf service definitions
    • protobuf+net/http
  • gogf/gfGitHubgogf/gf

微服务框架/Microservices Framework

大多微服务框架着重于 RPC、服务发现、配置,并提供基础的中间件 监控、Trace。

  • stefanprodan/podinfoGitHubstefanprodan/podinfo
  • go-kit/kitGitHubgo-kit/kitgo-kit/kit · 开发不活跃、设计可作参考 · 微服务开发套件/库 · Unopinioned · 三层 · Transport · Endpoint · Service · | Layer | Impl | · | Transport | httpbr/natsbr/jsonrpcbr/grpcbr/thriftbr/amqpbr/httprp |笔记:go-kit standard library for microservices
    • 简单灵活自由拼装 - 因此定位是 kit 和 库
    • 很多抽象接口值得学习
  • go-micro笔记go-microasim/go-micro · 基本接口定义+Plugins 提供平台相关实现 · Transport http :52980 · Broker http :52981 · GRPC server :53915 · 参考 · m3o/m3o打开:/notes/languages/go/lib/go-micro - asim/go-microGitHubasim/go-microasim/go-micro · 基本接口定义+Plugins 提供平台相关实现 · Transport http :52980 · Broker http :52981 · GRPC server :53915 · 参考 · m3o/m3o笔记:go-micro standalone framework for distributed systems development
  • google/go-cloudGitHubgoogle/go-cloudgoogle/go-cloud · Go Cloud Development Kit · blob - 对象存储 · Google Cloud Storage · S3 · Azure Blob Storage · Local Storage笔记:go-cloud
    • Go Cloud Development Kit
  • nytimes/gizmoGitHubnytimes/gizmo
  • ergo-services/ergoGitHubergo-services/ergo
    • design patterns of Erlang/OTP

国产

  • kratos笔记kratosgo-kratos/kratos · MIT, Go · by Bilibili, fork Gin · 微服务框架 · Code Gen, Web, RPC, Service Governance, Integrations · ⚠️ 目前开发不太活跃打开:/notes/languages/go/lib/kratos - go-kratos/kratosGitHubgo-kratos/kratosgo-kratos/kratos · MIT, Go · by Bilibili, fork Gin · 微服务框架 · Code Gen, Web, RPC, Service Governance, Integrations · ⚠️ 目前开发不太活跃笔记:kratos
    • grpc,wire
    • kratos 命令行工具
    • 哔哩哔哩 RPC 框架
  • go-zero笔记go-zerozeromicro/go-zero · 好未来科技 开源 RPC 框架 · 自定义的 DSL · 基于自定义的 goctl 进行生成 · 自定义 DSL 意味着 交互差、生态差、ROI 低 · 几乎是单人在开发打开:/notes/languages/go/lib/go-zero - zeromicro/go-zeroGitHubzeromicro/go-zerozeromicro/go-zero · 好未来科技 开源 RPC 框架 · 自定义的 DSL · 基于自定义的 goctl 进行生成 · 自定义 DSL 意味着 交互差、生态差、ROI 低 · 几乎是单人在开发笔记:go-zero
    • 好未来技术
    • 自定义 DSL + goctl 生成
  • cloudwego/kitexGitHubcloudwego/kitex
    • Apache-2.0, Go
    • 字节跳动 RPC 框架
  • rpcx笔记rpcxsmallnest/rpcx · 国产 RPC 框架 · smallnest/rpcx-java · Java 实现,不活跃 · 适用方便 · 设计上没有 go-micro 灵活 · 耦合了很多内容 · 通过 server.AuthFunc 设置认证处理而不是 middleware打开:/notes/languages/go/lib/rpcx - smallnest/rpcxGitHubsmallnest/rpcxsmallnest/rpcx · 国产 RPC 框架 · smallnest/rpcx-java · Java 实现,不活跃 · 适用方便 · 设计上没有 go-micro 灵活 · 耦合了很多内容 · 通过 server.AuthFunc 设置认证处理而不是 middleware笔记:rpcx
  • go-chassis/go-chassisGitHubgo-chassis/go-chassis
  • unionj-cloud/go-doudouGitHubunionj-cloud/go-doudou

国内环境

Markdown

认证授权/Auth

  • dexidp/dexGitHubdexidp/dexdexidp/dex · OIDC, OAuth2 Provider - IdP · 支持插件式的 Connector · 存储 · sqlite3, mysql, postgres · etcd · kubernetes - CRD · 相当于无状态部署笔记:Dex - OIDC, IdP
  • oryGitHub OrgoryOry Ecosystem · Hydra: OAuth2 & OIDC Server · Oathkeeper: Identity & Access Proxy · Keto: Access Control Policies as a Server (based on Google's Zanzibar)笔记:Ory
    • hydra - OIDC, IdP
    • kratos - 用户注册管理
    • oathkeeper - 访问代理 - 注入授权信息
    • keto - 访问控制服务
    • fosite - Golang OAuth2 框架
  • Permify/permify-gormGitHubPermify/permify-gorm

Plugin

  • 扩展/插件/Extension/Plugin - 动态库
  • pluginGo PackagepluginGo - Linux, FreeBSD, macOS
    • -buildmode=plugin
    • Lookup symbol 强转类型进行使用 - 类似 dlopen - 底层使用 dlopen
    • main 下 exported 的符号都可以使用
    • 加载时所有包的 init 都会触发
    • plugin 不支持 close - go 涉及到 gc 和全局状态
    • 交互不需要序列化 - 相同内存空间
  • hashicorp/go-pluginGitHubhashicorp/go-plugin
    • 基于 RPC 的插件系统
      • 交互信息需要序列化
      • 用于专门的场景 - 例如不能用于 Hook HTTP 请求
    • 多进程
      • 隔离 cgo
      • 避免 crash
      • 支持热升级
      • 多语言

语言/Language

Template

有趣

控制理论 / Control theory

Library

Tool

bash
go install github.com/jondot/goweight@latest
cd cmd/server
goweight

Debug

Service

Performance

OS/操作系统

Lower Level

ML/机器学习

SIP/WebRTC

Command Line

Office

Internal

Tools

参考

TBD

Utils

Console

Data

Web

Misc

Hardware

Scripts

关联信息

反向链接、本文链接的其他页面和外部资料。

站内链接

  • Cadence
    笔记 · uber/cadence

    uber/cadence 是什么? · MIT, Golang · 分布式,大规模,持久化,高可用的异构调度引擎 · 用于异步长时间运行的业务逻辑 · Fault Tolerant Actor Framework · fault-oblivious stateful workflow

  • chi
    笔记 · chi

    go-chi/chi · 提供方法更适合用于 REST 接口 · 核心 < 1000 LOC · 0 外部依赖 - 自己实现 pattern 匹配逻辑 · 基于 Patricia Radix trie - 性能优于遍历 · 额外的 HTTP 方法需要先提前注册,否则不会路由

  • entgo
    笔记 · ent

    ent/ent 是什么? · 项目源自 facebook, 加入 LF · 支持 RESTful 接口 · 基于代码生成的 ORM · 支持 MySQL, MariaDB, PostgreSQL, SQLite, Gremlin · 创建和更新使用 setter/getter

  • fx
    笔记 · fx

    uber-go/fx · 基于反射的动态 IoC 容器 · 内部为 uber-go/dig - DI · fx.Supply 不能直接提供 interface · Go 类型检测不到, 使用 constructor 返回 · fx.In 和 fx.Out 要求字段 exported

  • go-micro
    笔记 · go-micro

    asim/go-micro · 基本接口定义+Plugins 提供平台相关实现 · Transport http :52980 · Broker http :52981 · GRPC server :53915 · 参考 · m3o/m3o

  • go-zero
    笔记 · go-zero

    zeromicro/go-zero · 好未来科技 开源 RPC 框架 · 自定义的 DSL · 基于自定义的 goctl 进行生成 · 自定义 DSL 意味着 交互差、生态差、ROI 低 · 几乎是单人在开发

  • GORM
    笔记 · gorm

    Golang 的 ORM 实现 · 基于 Entity 模型 · go-gorm/gorm · 执行过程 · 构建 Statement 对象 · 查询 - 执行 query 回调 · 几乎所有实际操作都是通过 callback 串联起来的 · callbacks 管理 processor 组

  • kratos
    笔记 · kratos

    go-kratos/kratos · MIT, Go · by Bilibili, fork Gin · 微服务框架 · Code Gen, Web, RPC, Service Governance, Integrations · ⚠️ 目前开发不太活跃

  • OIDC
    笔记 · caos/oidc

    caos/oidc · endpoints · /healthz · /ready · /.well-known/openid-configuration · /authorize - AuthorizationEndpoint · /authorize/callback?id - AuthorizationEndpoint

  • rpcx
    笔记 · rpcx

    smallnest/rpcx · 国产 RPC 框架 · smallnest/rpcx-java · Java 实现,不活跃 · 适用方便 · 设计上没有 go-micro 灵活 · 耦合了很多内容 · 通过 server.AuthFunc 设置认证处理而不是 middleware

  • temporal
    笔记 · temporal

    temporalio/temporal · MIT, Go · cadence fork, 包含原始团队人员 · Persistence - Cassandra, PostgreSQL, MySQL · Workflow search - Elasticsearch v6.8+ - 高级搜索

  • tsuru
    笔记 · tsuru/tsuru

    tsuru/tsuru · BSD-3, Go · extensible Platform as a Service · 依赖: MongoDB, Kubernetes, Registry, kubernetes-router

  • wire
    笔记 · wire

    项目进入维护状态 · google/wire · Compile-time DI · 编译时生成 DI 逻辑 · 逻辑清晰明确 · 不是 IoC 容器 · 透明 - IoC 容器是一个不透明的盒子 · 替代 · uber fx, dig

References

GitHub292 条
Hacker News3 条
Packages5 条
其他外链35 条
最近更新commit 4b6e1d9Edit

On this page