service mesh 就是将一些公用的部分,抽象出来,作为control plane部分
Service Mesh可以定义为在微服务体系结构中处理服务间通信的基础结构层,它减少了与微服务体系结构相关的复杂性,并提供了许多治理功能,如 -
- 负载均衡(Load Balancing)
- 服务发现(Service Discovery)
- 健康检查(Health Check)
- 身份验证(Authentication)
- 流量管理和路由(Traffic Management & Routing)
- 断路和故障转移(Circuit Breaking and Failover Policy)
- 安全(Security)
- 监控(Metrics & Telemetry)
- 故障注入(Fault Injection)
sidecar的场景,
应用容器与日志同步工具在同一个Pod下,共享存储卷,应用程序生成的日志文件会由日志同步工具收集并发送到类似kafka,elasticsearch这样服务中。
在这样的架构下我们获得了什么呢?
- 以容器作为基础打包单元,那么就可以分给不同的团队进行开发测试
- Sidecar容器可重用,可以与不同的容器结合
- 以容器作为错误边界,使服务能够独立开发和测试,比如应用服务在没有日志保存功能的情况下也可以独立运行
- 独立回滚与更新(但需要考虑复杂的版本组合,建议使用语义版本管理对版本进行控制)