跳到主要内容

微服务知识体系概览

问题

Go 微服务生态包含哪些内容?有哪些主流框架和工具?

答案

知识体系

主流框架对比

框架来源特点适用场景
go-zero好未来开箱即用、代码生成、完整工具链快速开发
KratosB站模块化、DDD 友好、Wire DI中大型项目
go-kit社区微服务工具包、非框架灵活定制
go-micro社区插件化、多种传输协议轻量微服务
Kitex字节高性能 RPC、Thrift/gRPC超高并发
选型建议
  • 快速上手:go-zero(代码生成器 goctl 一键生成 CRUD)
  • 架构灵活:Kratos(DDD 分层、依赖注入)
  • 极致性能:Kitex(字节内部大规模验证)
  • 自由组合:go-kit + 自选组件

微服务核心概念

概念说明Go 常用方案
服务发现服务实例动态注册/查找etcd、Consul、Nacos
负载均衡请求分发到多个实例gRPC 内置、自定义 Resolver
熔断降级故障隔离、快速失败sentinel-go、hystrix-go
链路追踪分布式调用链可视化OpenTelemetry、Jaeger
配置中心配置集中管理、动态更新etcd、Apollo、Nacos
API 网关统一入口、鉴权、限流Kong、APISIX、自研

典型微服务架构


常见面试问题

Q1: Go 适合做微服务吗?

答案非常适合

  1. 编译为单二进制:部署方便,Docker 镜像小(Alpine + 二进制 ≈ 10MB)
  2. goroutine:天然高并发,单实例轻松处理数万连接
  3. gRPC 原生支持:Google 出品,Go 是一等公民
  4. 启动快:毫秒级启动,适合容器化弹性伸缩
  5. 资源占用低:同等 QPS 下内存远低于 Java

Q2: 微服务拆分原则?

答案

  • 单一职责:每个服务只做一件事
  • DDD 边界上下文:按业务域拆分(用户、订单、支付)
  • 数据库独立:每个服务有自己的数据库
  • 避免过细:起步粗粒度,有需要再细分
  • 参考团队规模:一个小组维护 2-3 个服务

相关链接