- 配置中心:配置集中化及动态配置更新及通知下发。
- 注册中心:用于服务发现,可以实现状态检测及自动通知,进而使得数据库中间件具备高可用和自我治愈能力。
- 限流:用于流量过载保护,分为数据库中间件本身的流量过载保护和对数据库的流量过载保护。
- 熔断:流量过载保护措施之一,在于熔断整个客户端对数据库的访问,保护数据库能够为其他流量正常的系统继续服务。
- 失效转移:用于多数据副本情况,在数据完全一致的多个数据节点中,当某一节点不可用后,可以通过失效转移机制让数据库中间件访问另外的数据节点。
- 链路追踪:将对数据库对访问调用链路,性能,拓扑关系等指标可视化方式展现出来。
弹性伸缩
当系统访问量和数据量超过之前对评估预期时,涉及到对数据库重新分片。大部分场景中往往不能直接映射到新对数据分片策略中,分片策略修改需要伴随数据迁移。
弹性伸缩的另一个方案是在线数据迁移。
保证如何在迁移过程中使服务不受影响,步骤如下:
- 同步线上双写:同时将数据写入分片策略修改之前的原数据节点和分片策略修改后的新数据节点。可以通过一致性算法保证双写一致性。
- 历史数据迁移:以离线方式,将需要迁移的数据迁移到新节点,可以通过sql方式,也可以基于binlog等二进制方式。
- 数据源切换:将读写请求切换到新数据源,并停止对原数据节点的双写。
- 清理冗余数据:在就数据节点中,清理已迁移到新数据节点的相关数据。
Service Mesh
定义
Service Mesh是一个基础设施层,用于处理服务间通讯。
现代原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传递。服务网格通常实现为一组轻量级网络代理,和应用程序部署在一起,对应用程序透明。
- 基础设施:是Service Mesh的定位。
- 服务间通讯:是Service Mesh的功能和范围。
- 实现请求的可靠传递:是Service Mesh的目标。
- 轻量级网络代理:是Service Mesh的部署方式。
- 对应用透明:是Service Mesh对重要特性,零侵入,Service Mesh的最大优势。
对于Sidecar的典型场景:
- 要求高性能,低资源消耗,有大量的并发和网络编程。
- 能够快速掌握,新人可以快速入手。
- 和底层k8s等基础设施频繁交互,未来有Cloud Native的大背景。
你好,我是春哥叨叨,更多真实架构案例分享,等你很久了!
春哥叨叨