高可用的分布式系统架构探讨
2017-12-03 10:07
302 查看
大型网站应该在任何时候都可以正常访问。正常提供对外服务。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点。要保证高可用是很困难的,也就是说网站的故障是不可避免的。
如何提高可用性,就是需要迫切解决的问题。首先,需要从架构级别,在规划的时候,就考虑可用性。行业内一般用几个9表示可用性指标。比如四个9(99.99),一年内允许的不可用时间是53分钟。
不同层级使用的策略不同,一般采用冗余备份和失效转移解决高可用问题。
http://blog.csdn.net/guwei9111986/article/details/51649240 http://blog.sina.com.cn/s/blog_54ef39890102v0bo.html
MyISAM
热备 ×
温备 √
冷备 √
InnoDB
热备 √
温备 √
冷备 √
我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于
物理备份一般就是通过
逻辑备份一般就是通过特定工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)
学会用各种姿势备份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
如何提高可用性,就是需要迫切解决的问题。首先,需要从架构级别,在规划的时候,就考虑可用性。行业内一般用几个9表示可用性指标。比如四个9(99.99),一年内允许的不可用时间是53分钟。
不同层级使用的策略不同,一般采用冗余备份和失效转移解决高可用问题。
1.应用层
在springcloud中给客户在浏览器中访问的web服务,一般设计为无状态的,对于每次请求,使用哪一台服务器处理是没有影响的。一般使用负载均衡技术(需要解决Session同步问题),实现高可用。 http://blog.csdn.net/forezp/article/category/6830968 https://www.cnblogs.com/zhangjianbin/p/6263178.html2.服务层
在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/75978076http://blog.csdn.net/guwei9111986/article/details/51649240 http://blog.sina.com.cn/s/blog_54ef39890102v0bo.html
⑥幂等设计
https://www.cnblogs.com/wxgblogs/p/6639272.html3.数据层
①冗余备份(冷,热备[同步,异步],温备)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
相关文章推荐
- 基于SOA的高并发和高可用分布式系统架构和组件详解
- java高并发分布式集群高可用网站系统架构实战
- 大型网站系统架构实践(五)深入探讨web应用高可用方案
- 大型网站系统架构实践(五)深入探讨web应用高可用方案
- Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式、可靠、可用的系统,它能够将不同数据源的海量日志数据进行高效收集
- 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战
- 大型网站系统架构实践(五)深入探讨web应用高可用方案
- 高并发,分布式,高可用,性能调优,系统架构,大型电商项目实战
- 高性能、高可用、高扩展、分布式微信牌九源码搭建系统架构设计
- 大规模分布式存储系统原理解析与架构实战
- 一款SNS战略休闲游戏开发笔记01——分布式系统逻辑架构设计的补充与讨论
- 分布式系统架构之消息系统
- 大型网站架构系列:缓存在分布式系统中的应用(二)
- [系统架构]分布式日志收集系统
- 架构揭秘-从分布式到微服务读书笔记 第一章 大话分布式系统
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- 亿级流量电商详情页系统的大型高并发与高可用缓存架构
- 可伸缩Web架构与分布式系统(2)
- 可扩展Web架构与分布式系统
- 构建高可扩Web架构和分布式系统实战(上)