中间件开发者沙龙
Go 微服务框架工程化设计
自我介绍 中间件开发者沙龙 陈志辉,哔哩哔哩,基础架构团队 主要擅长微服务高可用架构,服务治理,Go语言 2016年加入b站,经历过完整的微服务转型,早期深度参与业务研发工作 同时也参与了内部很多微服务中间件的研发设计 开源比较有影响力的项目: • 微服务框架:/go-kratos/kratos • API网关:/go-kratos/gateway • 长连接网关:/Terry-Mao/goim 中间件开发者沙龙 • 面向包的设计理念 • 配置规范的思考 • IDL & API Definition
目录 • API Error Reason • Transport HTTP/gRPC • Middleware 插件化使用 • Kratos 启动管理器
What is Go ? 中间件开发者沙龙 for { Go is : // do somthing • open source } • concurrent for n < 5 { • garbage-collected // do somthing • efficient } • scalable for i := 0; i < 5; i++ { • simple // do somthing • fun } • ... for i, s := range strings { // do somthing } loop、while、do..while、for、range
面向包的设计理念 中间件开发者沙龙 Go 是一个面向包名设计的语言。 Package 在 Go 程序中主要起到功能隔离的作用: • 程序的各个部分可以分开 • 在大型团队中处理复杂的项目 • 包名可改善团队成员之间的沟通 Go 对于包支持其实很棒的,标准库就是很好的设计。 但是,我们在开发