当前位置: 首页 > 编程日记 > 正文

分布式系统架构设计之分布式数据存储的备份恢复和监控故障排查

七、数据备份和恢复

在分布式数据存储中,数据备份和恢复是保障数据存储系统可靠性和容灾性的重要组成部分。这里会给大家介绍关于数据备份和恢复的关键考虑:

数据备份策略

  1. 定期备份:设定定期的数据备份计划,根据业务需求选择合适的备份频率,确保数据能够及时可靠地进行备份。
  2. 增量备份:使用增量备份策略,只备份发生变化的数据,减小备份过程对系统性能的影响。

备份存储位置

  1. 异地备份:将数据备份存储在不同地理位置,以防止单一地点的灾难性损失,提高系统容灾性。
  2. 云端备份:考虑使用云存储服务进行数据备份,提供高可用性和可靠性。

数据恢复测试

  1. 定期测试:建立定期的数据恢复测试计划,确保备份数据的完整性和可用性,提前发现潜在问题。
  2. 自动化测试:尽量采用自动化工具进行数据恢复测试,减少认为操作的误差。

版本控制

  1. 备份版本:保留多个历史备份版本,以满足用户可能需要的不同数据恢复时间点。
  2. 元数据备份:除了用户数据,同时备份元数据信息,以确保数据恢复时系统能够还原到一致的状态。

加密与安全

  1. 备份加密:对备份数据进行加密,保障备份数据在传输和存储过程中的安全性。
  2. 访问控制:严格控备份数据的访问权限,防止未经授权的访问和篡改。

持久性存储

  1. 可靠存储:选择可靠性高的存储设备,避免因存储介质故障导致备份数据无法正常恢复。
  2. 冗余备份:在不同存储介质上进行冗余备份,提高数据的持久性和稳定性。

监控和报警

  1. 备份监控:设置监控系统,实时监测备份过程,及时发现潜在问题。
  2. 异常报警:建立异常报警机制,对备份过程中的异常情况进行及时响应和处理。

灾难恢复计划

  1. 制定计划:制定完善的灾难恢复计划,包括数据备份、迁移、恢复等流程。
  2. 人员培训:对相关人员进行培训,确保在发生灾难时能够迅速、有效的执行灾难恢复计划。

架构师通过设计和实施数据备份和恢复策略,可以最大程度地保障分布式系统在面对数据损失、硬件故障、灾难性事件等情况下的稳定性和可用性。

八、监控和故障排查

在分布式系统中,对数据存储进行有效的监控和出现问题后故障排查策略是确保系统稳定性和性能可靠性的关键。

监控指标

  1. 性能指标:包括对读写性能、延迟的监控,确保响应时间在合理范围内。
  2. 负载指标:实时检测存储节点的负载情况,防止单一节点过载。
  3. 容量指标:跟踪存储使用量,提高预警并扩容,避免因存储量不足导致故障。

日志和审计

  1. 操作日志:记录用户对数据的操作记录,用于追踪数据变更和操作历史。
  2. 审计日志:收集并记录系统的安全审计信息,监控非法访问和异常操作。

异常检测

  1. 自动检测:利用监控系统实时检测存储节点的异常情况,包括硬件故障、网络中断等。
  2. 阈值报警:设置合适的阈值,当指标超出设定范围时触发报警,及时发现潜在问题。

故障排查工具

  1. 分布式跟踪:使用分布式跟踪工具进行请求全链路跟踪,帮助快速定位问题所在。
  2. 日志分析:借助日志分析工具对系统日志进行深入分析,找出异常原因。

性能优化

  1. 热点识别:识别存储中的热点数据,采取合适的策略进行优化。
  2. 请求调优:针对频繁的请求类型进行调优,提高系统整体性能。

故障演练

  1. 定期演练:定期进行故障演练,检验系统在故障情况下的应对能力。
  2. 故障模拟:模拟不同类型的故障场景,验证系统在复杂缓解下的表现。

数据一致性检查

  1. 一致性验证:实施定期的数据一致性检查,确保分布式系统中的数据一致性。
  2. 分区容错:针对分区容错机制进行检查,确保数据在分布式环境下的正确性。

安全监控

  1. 访问监控:监控用户对存储系统的访问情况,及时发现潜在的安全威胁。
  2. 加密审计:对数据传输和存储的加密进行审计,确保敏感数据的安全性。

自动化恢复

  1. 自愈机制:部署自动化故障恢复机制,降低认为介入的时间,提高系统自愈能力。
  2. 自动调整:根据监控数据,自动调整系统参数,优化性能和资源利用率。

实时报警

  1. 报警通知:设置实时报警机制,及时通知相关人员并采取应对措施。
  2. 报警策略:制定合理的报警策略,避免虚假报警干扰。

通过合理的监控和故障排查策略,可以确保分布式数据存储系统在运行过程中保持高可用性、高性能,并且能够及时应对潜在的故障情况。

相关文章:

SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、Loadbalancer

要为未被某些网关路由谓词处理的请求提供相同的CORS配置,请将属性spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping设置为true。断言(Predicate):Java8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是 Spring5.0框架中的ServerWebExchange。对于所有GET请求的路径,来自docs.spring.io的请求都将允许CORS请求。

zookeeper集群部署以及zookeeper原理

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。

Zookeeper概要、协议、应用场景

Zoopkeeper提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型,作为分布式系统的沟通调度桥梁。

SSO 单点登录和 OAuth2.0 有何区别?

此方法的缺点是它依赖于浏览器和会话状态,对于分布式或者微服务系统而言,可能需要在服务端做会话共享,但是服务端会话共享效率比较低,这不是一个好的方案。在单点登录的上下文中,OAuth 可以用作一个中介,用户在一个“授权服务器”上登录,并获得一个访问令牌,该令牌可以用于访问其他“资源服务器”上的资源。首先,SSO 主要关注用户在多个应用程序和服务之间的无缝切换和保持登录状态的问题。这种方法通过将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。

一键部署 SpringCloud 微服务,这套流程值得学习一波儿!

一键部署 springcloud 微服务,需要用到 Jenkins K8S Docker等工具。本文使用jenkins部署,流程如下图开发者将代码push到git运维人员通过jenkins部署,自动到git上pull代码通过maven构建代码将maven构建后的jar打包成docker镜像 并 push docker镜像到docker registry通过k8s发起 发布/更新 服务 操作其中 2~5步骤都会在jenkins中进行操作。

Springboot + oauth2 单点登录 - 原理篇

OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。授权码模式(authorization code)密码模式(resource owner password credentials)客户端模式(client credentials) 不常用。

JAVA 中 13 种锁的实现方式

分布式系统时代,线程并发,资源抢占,慢慢变得很重要。那么常见的锁都有哪些?

三种方式实现分布式锁

通过以上过程你可以发现锁的获取是按照创建时间来的,谁先来争取锁谁就先获得锁,因此它实现的是公平锁。答案是不能,以Synchronized关键字为例,Synchronized关键字无论是在偏向锁、轻量级锁还是重量级锁状态都不能实现这点,如重量级锁,重量级锁是靠系统底层的互斥量Mutex实现的,也就是说每个节点(服务器)所使用的互斥量是分开的,节点A的互斥量是无法锁住节点B的线程访问临界区,因此Synchronized关键字只能保证单服务器内的JVM进程的不同线程同步,是不能用做分布式环境中来保证线程同步。

浅谈Java分布式与集群

在日常操作中,相信很多人在怎么理解Java分布式与集群问题上存在疑惑,今天就大概说说,不注意听,觉得两个可能是同一个东西,其实这个是两个概念。一句话概括:分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

java面试题:分布式和微服务的区别

分布式架构解决的是如何将一个大的系统划分为多个业务模块这些业务模块会分别部署到不同的机器上,通过接口进行数据交互的问题。微服务是指很小的服务,可以小到只完成一个功能,这个服务可以单独部署运行,不同服务之间通过rpc调用。分布式架构是将一个大的系统划分为多个业务模块,这些业务模块会分别部署到不同的机器上,通过接口进行数据交互。微服务架构是架构设计方式,是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。分布式系统是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机上。

k8s搭建部署(超详细)

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。快速部署应用快速扩展应用无缝对接新的应用功能节省资源,优化硬件资源的使用可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)可扩展: 模块化, 插件化, 可挂载, 可组合自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展。

什么是数据中台?

说完了数据中台诞生的历史背景,现在,我们应该对数据中台有了一定的了解,那我们现在给数据中台下个定义。自2016年,数据中台被提出以来,不同的人对数据中台有不同的理解,就像一千个读者心中有一千个哈姆雷特,因此也有许多不同的定义,以下是我从一些文章、书籍中搜集到的关于数据中台的定义:数据中台是DT时代的大背景下,为实现数据快(快速)、准(准确)、省(低成本)赋能业务发展的目标,将企业的数据统一整合起来,基于Onedata方法论借助大数据平台完成数据的统一加工处理,对外提供数据服务的一套机制。

弹性搜索引擎Elasticsearch:本地部署与远程访问指南

本文主要讲解如何使用Elasticsearch分布式搜索分析引擎本地部署与远程访问。

【微服务】springboot整合skywalking使用详解

springboot整合skywalking

光伏发电模式中,分布式和集中式哪种更受欢迎?

5.可实现远距离输送,集中式光伏电站发出的电经高压并网,将电一层层的输送到更高的电压等级,如将高压电输送到华东等地区,以实现西电东输。分布式光伏发电:一般建在楼顶、屋顶、厂房等地方,较多的是基于建筑物表面,就近解决用户的用电问题,通过并网实现供电差额的补偿与外送。1.光伏电源处于用户侧,自发自用,就近发电,就近用电,发电供给当地负荷,视作负载,可以减少对电网供电的依赖,减少线路损耗。4.分布式光伏一般就近并网,线路的损耗很低或者可以说没有,可非常方便的补充当地的电量,供当地及附近的用电用户使用。

Elasticsearch分布式搜索分析引擎本地部署与远程访问

本文主要讲解如何使用Elasticsearch分布式搜索分析引擎本地部署与远程访问

Gitlab基础篇: Gitlab docker 安装部署、Gitlab 设置账号密码

安装docker gitlab前确保docker环境,如果没有搭建docker请查阅“Linux docker 安装文档”可以看到在docker ps -a 打印中看到 容器ID ps 展示的容器ID只时原来的一部分。修改docker镜像的gitlab容器端口前需要把gitlab容器以及docker镜像关闭。通过容器ID就能找到containers下具体哪一个是gitlab容器的配置。修改config.v2.json、hostconfig.json文件。docker 下载 gitlab容器。

docker搭建maven私库Nexus3

阿里代理地址:http://maven.aliyun.com/nexus/content/groups/public/由于nexus的默认端口为8081,我们在启动的时候改为18091后需要修改nexus的配置文件。这样就可以在本地浏览器进入nexus页面了,地址为 服务器ip:18091。右上角登录用户名为admin,密码为之前查看的密码。配置maven-central的代理地址。删除nuget开头的仓库。同时查看admin密码。

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。

分布式事务有哪些解决方案?

分布式事务是分布式系统中非常重要的一部分,最典型的例子是银行转账和扣款,A 和 B 的账户信息在不同的服务器上,A 给 B 转账 100 元,要完成这个操作,需要两个步骤,从 A 的账户上扣款,以及在 B 的账户上增加金额,两个步骤必须全部执行成功;否则如果有一个失败,那么另一个操作也不能执行。分布式事务的经典应用比如转账扣款,下订单扣库存,新会员送积分等等涉及多个业务共同参与在一个请求中。

什么是分布式锁?Redis实现分布式锁详解

文章浏览阅读151次,点赞4次,收藏3次。在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制,避免出现类似线程安全问题。而Java中的synchronized只是对当前进程中的线程有效,多个主机实际上是多个进程,那么它就无能为力了,此时就需要分布式锁。

【微服务】mysql + elasticsearch数据双写设计与实现

在很多电商网站中,对商品的搜索要求很高,主要体现在页面快速响应搜索结果。这就对服务端接口响应速度提出了很高的要求。