11 高可用的网站架构

通常企业级应用系统为提高系统可用性,会采用较昂贵的软硬件设备,如IBM的小 型机乃至中型机大型机及专有操作系统、Oracle数据库、EMC存储设备等。互联网公司 更多地采用PC级服务器、开源的数据库和操作系统,这些廉价的设备在节约成本的同时 也降低了可用性,特别是服务器硬件设备,低价的商业级服务器一年宕机一次是一个大 概率事件,而那些高强度频繁读写的普通硬盘,损坏的概率则要更高一些。

既然硬件故障是常态,网站的高可用架构设计的主要目的就是保证服务器硬件故障 时服务依然可用、数据依然保存并能够被访问。

实现上述高可用架构的主要手段是数据和服务的冗余备份及失效转移,一旦某些服 务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘读取 数据。
一个典型的网站设计通常遵循如图5.2所示的基本分层架构模型。
在这里插入图片描述

典型的分层模型是三层,即应用层、服务层、数据层;各层之间具有相对独立性, 应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的 存储与访问。中小型网站在具体部署时,通常将应用层和服务层部署在一起,而数据层 则另外部署,如图5.3所示(事实上,这也是网站架构演化的第一步)。
图5.3应用和数据分离部署的网站架构

在复杂的大型网站架构中,划分的粒度会更小、更详细,结构更加复杂,服务器规 模更加庞大,但通常还是能够把这些服务器划分到这三层中。如图5.4所示。
在这里插入图片描述

不同的业务产品会部署在不同的服务器集群上,如某网站的文库、贴吧、百科等属 于不同的产品,部署在各自独立的服务器集群上,互不相干。这些产品又会依赖一些共 同的复用业务,如注册登录服务‘Session管理服务、账户管理服务等,这些可复用的业 务服务也各自部署在独立的服务器集群上。至于数据层,数据库服务、文件服务、缓存 服务、搜索服务等数据存储与访问服务都部署在各自独立的服务器集群上。

大型网站的分层架构及物理服务器的分布式部署使得位于不同层次的服务 器具有不同的可用性特点。关闭服务或者服务器宕机时产生的影响也不相同, 咼可用的解决方案也差异甚大。

位于应用层的服务器通常为了应对高并发的访问请求,会通过负载均衡设备将一组 服务器组成一个集群共同对外提供服务,当负载均衡设备通过心跳检测等手段监控到某 台应用服务器不可用时,就将其从集群列表中剔除,并将请求分发到集群中其他可用的 服务器上,使整个集群保持可用,从而实现应用高可用。

位于服务层的服务器情况和应用层的服务器类似,也是通过集群方式实现高可用, 只是这些服务器被应用层通过分布式服务调用框架访问,分布式服务调用框架会在应用 层客户端程序中实现软件负载均衡,并通过^务注册中心对提供服务的服务器进行心跳检 测,发现有服务不可用,立即通知客户端程序修改服务访问列表,剔除不可用的服务器。

位于数据层的服务器情况比较特殊,数据服务器上存储着数据,为了保证服务器宕 机时数据不丢失,数据访问服务不中断,需要在数据写入时进行数据同步复制,将数据 写入多台服务器上,实现数据冗余备份。当数据服务器宕机时,应用程序将访问切换到 有备份数据的服务器上。

网站升级的频率一般都非常高,大型网站一周发布一次,中小型网站一天发布几次。 每次网站发布都需要关闭服务,重新部署系统,整个过程相当于服务器宕机。因此网站 的可用性架构设计不但要考虑实际的硬件故障引起的宕机,还要考虑网站升级发布引起 的宕机,而后者更加频繁,不能因为系统可以接受偶尔的停机故障就降低可用性设计的标准。

<p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1、课程简介</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#FF0000;">       <span style="color:#000000;">在本套课程中,我们将全面的讲解Spring Cloud技术栈, 从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用Spring Cloud如何解决实际的问题。</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- 注册中心负责服务的注册与发现,很好将各服务连接起来</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- 断路器负责监控服务之间的调用情况,连续多次失败进行熔断保护。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- API网关负责转发所有对外的请求和服务</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- 配置中心提供了统一的配置信息管理服务,可以实时的通知各个服务获取最新的配置信息</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- 链路追踪技术可以将所有的请求数据记录下来,方便我们进行后续分析</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">- 各个组件又提供了功能完善的dashboard监控平台,可以方便的监控各组件的运行状况</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2、适应人群</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">有一定的Java基础,并且要有一定的web开发基础。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3、课程亮点</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">       系统的学习Spring Cloud技术栈,由浅入深的讲解微服务技术。涵盖了基础知识,原理剖析,组件使用,源码分析,优劣分析,替换方案等,以案例的形式讲解微服务中的种种问题和解决方案</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>微服务的基础知识</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>软件架构的发展史</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>微服务的核心知识(CAP,RPC等)</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>注册中心</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Eureka搭建配置服务注册</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Eureka服务端高可用集群</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Eureka的原理和源码导读</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Eureka替换方案Consul</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Consul下载安装&服务注册&高可用</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>服务发现与服务调用</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Ribbon负载均衡基本使用&源码分析</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Feign的使用与源码分析</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Hystrix熔断(雪崩效应,Hystrix使用与原理分析)</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Hystrix替换方案Sentinel</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>微服务网关</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Zuul网关使用&原理分析&源码分析</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Zuul 1.x 版本的不足与替换方案</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>SpringCloud Gateway深入剖析</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>链路追踪</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>链路追踪的基础知识</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Sleuth的介绍与使用</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>Sleuth与Zipkin的整合开发</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>l<span style="font-size:9px;">  </span></span><span>配置中心</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>SpringClond Config与bus 开发配置中心</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><span>n<span style="font-size:9px;">  </span></span><span>开源配置中心Apollo</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">4、主讲内容</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">章节一:</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1.<span style="font-size:9px;">     </span>微服务基础知识</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2.<span style="font-size:9px;">     </span>SpringCloud概述</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3.<span style="font-size:9px;">     </span>服务注册中心Eureka</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">4.<span style="font-size:9px;">     </span>Eureka的替换方案Consul</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">章节二:</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1.<span style="font-size:9px;">     </span>Ribbon实现客户端负载均衡</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2.<span style="font-size:9px;">     </span>基于Feign的微服务调用</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3.<span style="font-size:9px;">     </span>微服务熔断技术Hystrix</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">4.<span style="font-size:9px;">     </span>Hystrix的替换方案Sentinel</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">章节三:</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1.<span style="font-size:9px;">     </span>微服务网关Zuul的基本使用</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2.<span style="font-size:9px;">     </span>Zuul1.x 版本的不足和替换方案</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3.<span style="font-size:9px;">     </span>深入SpringCloud Gateway</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">4.<span style="font-size:9px;">     </span>链路追踪Sleuth与Zipkin</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">章节四:</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1.<span style="font-size:9px;">     </span>SpringCloud Config的使用</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2.<span style="font-size:9px;">     </span>SpringCloud Config结合SpringCloud Bus完成动态配置更新</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3.<span style="font-size:9px;">     </span>开源配置中心Apollo</span> </p>
相关推荐
限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页