高可用的分布式系统架构探讨

那啥快看 那啥快看     2022-10-03     363

关键词:

大型网站应该在任何时候都可以正常访问。正常提供对外服务。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点。要保证高可用是很困难的,也就是说网站的故障是不可避免的。

如何提高可用性,就是需要迫切解决的问题。首先,需要从架构级别,在规划的时候,就考虑可用性。行业内一般用几个9表示可用性指标。比如四个9(99.99),一年内允许的不可用时间是53分钟。

不同层级使用的策略不同,一般采用冗余备份和失效转移解决高可用问题。

1.应用层

在springcloud中给客户在浏览器中访问的web服务,一般设计为无状态的,对于每次请求,使用哪一台服务器处理是没有影响的。一般使用负载均衡技术(需要解决Session同步问题),实现高可用。
http://blog.csdn.net/forezp/article/category/6830968
https://www.cnblogs.com/zhangjianbin/p/6263178.html

2.服务层

在springcloud中处理各个业务逻辑的微服务,为了保证其高可用,单个服务通常会集群部署,有以下几个处理方法。

①负载均衡

在springcloud里,通过RestTemplate+Ribbon去消费服务,或者通过Feign去消费服务,都可以实现客户端负载均衡(Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果),http://blog.csdn.net/forezp/article/details/69788938

②分级管理

②断路器

 Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合。在ribbon中使用断路器可以借助@EnableHystrix和@HystrixCommand,在Feign中使用断路器,需要在配置文件里加上feign.hystrix.enabled=true,然后@FeignClient  http://blog.csdn.net/forezp/article/details/69934399

③快速失败(超时设置)

在Hystrix中快速失败就是指没有重写getFallback,遇到异常后直接抛出,程序停止运行

④异步调用

可以看看这篇文章 http://blog.didispace.com/springbootasync/

⑤服务降级

http://blog.csdn.net/liubenlong007/article/details/75978076

http://blog.csdn.net/guwei9111986/article/details/51649240
http://blog.sina.com.cn/s/blog_54ef39890102v0bo.html

⑥幂等设计

https://www.cnblogs.com/wxgblogs/p/6639272.html

3.数据层

①冗余备份(冷,热备[同步,异步],温备)

MySQL中进行不同方式的备份还要考虑存储引擎是否支持

  • MyISAM 

     热备 ×

     温备 √

     冷备 √

  • InnoDB

     热备 √

     温备 √

     冷备 √

我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于MySQL数据库中数据的备份方式

物理备份一般就是通过tar,cp等命令直接打包复制数据库的数据文件达到备份的效果 
逻辑备份一般就是通过特定工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)

学会用各种姿势备份MySQL数据库 https://www.cnblogs.com/liangshaoye/p/5464794.html

冷,热备介绍 http://www.linuxidc.com/Linux/2014-03/98710.htm

Mysql双机热备实现 http://blog.csdn.net/huaweitman/article/details/50853075
②失效转移(确认,转移,恢复)
数据高可用方面著名的理论基础是CAP理论(持久性,可用性,数据一致性[强一致,用户一致,最终一致])
http://www.cnblogs.com/glacierh/category/835705.html

http://blog.csdn.net/yabingshi_tech/article/details/50721841

MySQL 高可用:mysql+Lvs+Keepalived 负载均衡及故障转移  http://blog.csdn.net/kk185800961/article/details/51115264

 

jeesz分布式架构-分布式高可用

...不得转载。什么是高可用 高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如... 查看详情

jeesz分布式架构-分布式高可用

什么是高可用高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。常见互联网分布式架构如上,分为:(1)客户端层:典型调用方是浏览器browser或者手... 查看详情

mysql高可用架构(代码片段)

高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时... 查看详情

系统高可用架构的几点思考(代码片段)

...备复制主从复制集群+分区四、高可用的应用负载均衡分布式Session五、高可用的服务分级管理超时重试异步调用过载保护限流基于请求限流基于资源限流降级熔断幂等性设计六、高可用的存储数据备份失效转移失效确认访问转... 查看详情

架构师之路

一、什么是高可用高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时... 查看详情

高可用与可伸缩架构(代码片段)

分布式业务系统设计的时候,基本的问题有:1.高可用2.可伸缩3.容错性(弹力设计)4.高性能以上是最基本的业务诉求。而在分布式基础系统设计的时候,基本的问题有:1.体系结构2.进程3.通信4.命名5.同步6.一致性与复制7.容错性8.... 查看详情

究竟啥才是互联网架构“高可用”

 一、什么是高可用高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如... 查看详情

可扩展架构系统的探讨

...系统,通过消息队列进行交互,使模块之间的依赖解耦。分布式服务:公用模块服务化,提供其他系统使用,提高可重用性,扩展性。 查看详情

高并发大访问量架构设计演进之路归纳总结

...进之路归纳总结第01:大型架构的演进之路第02(上):分布式缓存第02(下):分布式缓存第03:分布式消息队列第04:分布式数据存储第05:分布式服务框架第06:高性能系统架构第07:高可用系统架构第08:系统的安全架构第09... 查看详情

优雅应对故障:qq音乐怎么做高可用架构体系?

导语|故障是开发者高频关注的问题。在分布式系统建设的过程中,我们思考的重点不是避免故障,而是拥抱故障,通过构建高可用架构体系来获得优雅应对故障的能力。本文作者冯煦亮从架构、工具链、可观测三个... 查看详情

优雅应对故障:qq音乐怎么做高可用架构体系?

导语|故障是开发者高频关注的问题。在分布式系统建设的过程中,我们思考的重点不是避免故障,而是拥抱故障,通过构建高可用架构体系来获得优雅应对故障的能力。本文作者冯煦亮从架构、工具链、可观测三个... 查看详情

互联网三高架构:高并发高可用高性能

...此类系统,最常见的架构模式有:横向分层、纵向分割、分布式化、集群化、使用缓存、使用异步模式、使用冗余、自动化(发布、部署、监控)。1  高并发我们使用QPS(QueriesPerSecond,每秒查询率)来衡量系统承载能力... 查看详情

什么是高可用?高可用软件哪家好?

...1f;什么是高可用?高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通 查看详情

汇总

前言(1):服务端高并发分布式架构演进之路前言(2):什么是微服务?前言(3):分布式的坑1.大型网站架构演化2.大型网站架构演化的价值观3网站架构设计误区4网站架构模式5大型网站核心架构要素6网站性能测试7Web前端性能优化8应... 查看详情

汇总

前言(1):服务端高并发分布式架构演进之路前言(2):什么是微服务?前言(3):分布式的坑1.大型网站架构演化2.大型网站架构演化的价值观3网站架构设计误区4网站架构模式5大型网站核心架构要素6网站性能测试7Web前端性能优化8应... 查看详情

高可用架构设计-hystrix

Hystrix是什么在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很常见的。Hystrix可以让我们在分布式系统中对服务间的调用进行控制,... 查看详情

亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构第二版视频教程

...课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运维架构视频教程 14套精品课程介绍:1、14套精品是最新整理的课... 查看详情

阿里是如何使用分布式架构的?阿里内部学习手册分享

为什么要使用分布式架构?分布式架构解决了互联网应用的两大难题:高并发和高可用。高并发指服务器并发处理客户端请求的数量大,而高可用指后端服务能始终处于可用状态。提高系统容量随着业务越来越复杂&#x... 查看详情