Loading

脑图系列-高可用

 

什么是SLA?

SLA是Service Level Agreement的缩写,意为服务等级协议。它是指供应商和客户之间达成的一份正式协议,规定了供应商应该向客户提供的服务水平、质量、可靠性和响应时间等指标。

SLA通常会涉及到各种服务指标,例如服务可用性、服务等待时间、故障修复时间、数据保密性、客户支持等,旨在确保供应商向客户提供高质量、高可靠性、高安全性的服务。

SLA指标

可用性

  • 指服务在一定时间范围内能够正常使用的时间比例,通常以百分比表示。例如,“四个九”
  • 指服务响应请求的时间,通常以毫秒或秒为单位表示。例如,网络服务的响应时间可要求在100毫秒以内。
  • 指系统在单位时间内能够处理的请求量,通常以每秒钟处理的请求量(QPS)或每分钟处理的请求量(RPM)为单位。
  • 指故障发生后系统能够恢复正常运行的时间,通常以分钟或小时为单位。例如,“四个九”(99.99%)可用性要求通常要求故障处理时间在52分钟以内。
  • 系统能够保证数据的完整性、一致性、可用性和安全性。例如,在数据库系统中,可要求采用主从同步、备份等技术手段来保证数据的可靠性。
  • 指服务提供商提供的技术支持、客户服务等方面的指标。例如,在运营云服务时,可要求服务提供商提供24小时客户服务、及时响应客户请求等。
  • 根据具体业务需求和服务类型,还可以定义其他指标,如安全性、可扩展性、性能等。
  • 举例:在深夜停机时备份整个数据库、在一个网站的低峰期备份数据库。
  • 举例:使用数据库备份工具在生产服务器上运行备份任务,而无需停机,以确保数据持续可用。就像我们通常做的数据库的主从同步,其实就是热备的一种实现。
  • 举例:一般是在某个应用程序的特定功能模块关闭或限制访问的情况下备份数据,以减轻备份操作对业务的影响。

响应时间

吞吐量

故障处理时间

数据可靠性

服务支持

其他指标

冷备、热备,暖备

冷备

冷备是指在关闭系统或服务后,将数据备份到离线介质中的一种备份方式。在备份过程中,系统或服务不可用。恢复时需要将备份的数据还原到系统中,并启动系统或服务。由于备份和恢复过程中系统处于离线状态,因此冷备的恢复时间较长,但成本相对较低。

热备

热备是指在系统或服务运行期间,对数据进行备份的一种备份方式。在备份过程中,系统或服务仍然可以提供服务。热备的恢复时间相对较短,但需要额外的资源来支持备份和恢复,因此成本较高。

暖备

暖备是介于冷备和热备之间的备份方式。在进行暖备时,备份数据与原始数据之间的同步是定期进行的,备份数据的时间间隔通常比热备长,但比冷备短。暖备的恢复时间比热备长,但比冷备短,因为需要将备份数据还原到原来的位置,并进行一些必要的同步操作。

异地多活

异地多活是一种分布式系统架构模式,可以让多个数据中心在不同地理位置提供相同的服务,并且能够实现数据的实时同步和故障切换。通常用于需要在全球范围内提供高可用性和低延迟的应用程序,例如在线游戏、社交媒体、金融交易等。

在异地多活架构中,多个数据中心之间通过高速网络连接进行数据同步和负载均衡。每个数据中心都具有完整的应用程序和数据副本,可以同时提供服务并处理客户端请求。当一个数据中心发生故障时,可以通过自动切换和故障转移机制将流量转移到其他健康的数据中心,从而保证系统的可用性和可靠性。

异地多活架构需要考虑多个因素,例如数据同步和冲突解决、负载均衡和故障切换、安全性和隐私保护等。通常需要采用分布式数据库、消息队列、负载均衡器、DNS解析等技术来支持异地多活架构。

全链路压测

全链路压测可以从网络到Nginx反向代理、到应用服务器、系统间依赖、数据库、缓存、磁盘等全方位的找出系统瓶颈。

全链路压测中比较重要的就是流量识别及数据隔离。

流量识别

在流量识别方面,一般都是通过流量染色实现的,其实就是对各种服务框架进行改造,比如DUBBO、REDIS、TDDL、MQ等所有的系统间交互以及存储等需要用到的组件中做改造。

比如定义一个特殊的字段,如full_chain_stress_tag,把他在整个链路中都传递下去,然后这样各个系统就可以有效的识别出压测流量了。

数据隔离

数据隔离一般都是用影子表。比如我们有一张order表,那么在压测前就需要创建一张order__shadow表,作为他的影子表。

这样在数据库持久层,就需要识别出压测流量,然后把压测数据写入到影子表中。这样就可以避免对真实数据产生影响。

除了数据库,还有缓存,也一样,也需要识别压测流量,然后写入到对应的影子缓存中。还有日志,如果有需要,也可以做隔离。

 

 

工具

目前市面上可以用的全链路压测工具有Takin、Quake(美团)、Rhino(字节)、ForceBot

如何设计高可用架构?

设计集群架构

采用多节点的集群架构可以提高系统的可用性和可靠性,从而避免单点故障导致系统不可用。

采用分布式架构

采用分布式架构可以将系统的负载分散到多个节点上,从而提高系统的性能和可扩展性。

实现故障转移和容错机制

通过使用冗余组件、备份数据等技术手段,可以实现故障转移和容错机制。例如,采用主从复制、备份、快速切换等技术来确保数据不丢失、系统快速恢复。

可靠的服务器和网络

选择可靠的服务器和网络设备,以确保它们能够在故障时正常运行。可以采用多个服务器进行冗余备份,以实现故障转移和负载均衡。可以选择高可靠性网络设备和路由器,以避免网络故障。

容灾和备份

需要设置容灾和备份计划,以确保在自然灾害、人为错误或其他紧急情况下能够快速恢复服务。可以使用云备份和容灾服务,以提高备份和恢复的效率和可靠性。

设计监控和自动化工具

通过使用监控工具和自动化工具可以实现对系统的实时监控和自动化维护。例如,通过使用系统监控工具、自动化运维工具等来实现自动化运维、自动化扩容等功能,从而减少手动操作和人为错误。

实现数据安全保护

通过采用多层次的安全策略来保护数据的安全性。例如,使用加密技术、防火墙、入侵检测等技术来保护系统和数据的安全。

进行容量规划和性能优化

通过进行容量规划和性能优化,可以提高系统的性能和可扩展性。例如,通过使用缓存、调整配置参数、优化代码等技术手段来提高系统的性能和稳定性。

设计自动化扩容和弹性伸缩

通过设计自动化扩容和弹性伸缩功能,可以根据业务需求和系统负载情况来自动调整系统资源。例如,通过使用自动化扩容工具和自动化弹性伸缩策略来实现系统资源的自动分配和调整。

posted @ 2024-02-29 10:27  梦醒点灯  阅读(23)  评论(0编辑  收藏  举报