微服务
微服务首先是一种系统边界与协作方式:围绕业务能力拆分可独立开发、部署和演进的服务。容器、Kubernetes、Service Mesh 和 Java Framework 都是实现手段,不是微服务成立的必要条件。
微服务建设层次图
同一种治理能力可以落在不同层。层次越靠近 Application,越理解业务语义;越靠近 Infrastructure,覆盖范围越广、对业务代码侵入越低。
这里的 Runtime 主要指 Dapr 这类 Distributed Application Runtime。JVM 是 Language Runtime,SkyWalking Java Agent 运行在 JVM 内;LVM 是 Linux Logical Volume Manager,只负责底层存储。三者不是同一层概念。
各层可以建设什么
| 层次 | 可建设的能力 | 常见实现 | 优点 | 边界 |
|---|---|---|---|---|
| Application / Framework | API、业务拆分、幂等、事务、超时、重试、熔断 | Spring Cloud Alibaba、HTTP/gRPC SDK、Outbox | 最理解业务语义 | 代码侵入,多语言要分别实现 |
| Distributed Application Runtime | 调用、消息、状态、工作流、Binding、Secret | Dapr | 通过统一 HTTP/gRPC API 解耦语言与基础组件 | 不能替代业务边界、幂等和一致性设计 |
| Process / Sidecar | 承载 Runtime、流量代理、mTLS、遥测、日志采集 | daprd、Envoy、Filebeat | 与应用语言解耦 | 增加进程、资源与网络路径复杂度 |
| Kubernetes | 调度、服务发现、声明式部署、弹性、配置与隔离 | Deployment、Service、HPA、Ingress、NetworkPolicy | 平台统一管理 | 不理解业务事务和幂等语义 |
| VM / Infrastructure | 计算、网络、负载均衡、存储和故障域 | VM、LB、DNS、Firewall、LVM | 提供稳定资源底座 | 不能代替应用治理与业务拆分 |
这些层次不是互斥选项。典型系统会同时使用:应用层保证业务正确性,Dapr Runtime 提供分布式 Building Blocks,SkyWalking Agent 采集 Trace,Sidecar 管理通用能力,Kubernetes 负责部署与弹性,VM 和网络设备提供基础资源。
同一能力在不同层的实现
| 能力 | Application / Dapr Runtime | Process / Sidecar | Kubernetes / Infrastructure |
|---|---|---|---|
| 服务发现 | Nacos Client、Dapr Service Invocation | Sidecar Cluster Discovery | Kubernetes Service、CoreDNS、Cloud DNS |
| 负载均衡 | Client-side Load Balancer | Envoy Upstream Selection | Service、Ingress、Cloud Load Balancer |
| 超时与重试 | SDK 按业务操作配置 | Proxy Route Policy | LB Connection Policy,通常不理解业务幂等性 |
| 熔断与限流 | Sentinel、Resilience4j | Envoy Circuit Breaker、Rate Limit | Gateway、Ingress Controller |
| 身份与加密 | OAuth2、JWT、Application TLS | Mesh mTLS、Workload Identity | Secret、Certificate Controller、Firewall |
| 可观测性 | Manual Instrumentation、Dapr Telemetry、Java Agent | Sidecar Telemetry、Log Agent | Cluster Metric、Event、Audit Log |
重试、幂等和分布式事务必须保留应用层判断。平台可以执行通用策略,但无法仅凭网络请求判断一次扣款或创建订单是否可以安全重放。
主题入口
| 主题 | 内容 |
|---|---|
| 微服务建设层次 | Application、Dapr Runtime、Process/Sidecar、Kubernetes 与 VM/Infrastructure |
| SkyWalking | APM、分布式追踪、服务拓扑与 Runtime Agent |
| 日志平台 | ELK、Filebeat、Kafka 与集中式日志链路 |
| Spring Cloud Alibaba | Nacos、Sentinel、Seata 与应用层微服务治理 |