mysql大型网站技术架构核心原理是什么

发布时间:2022-03-18 16:29:19 作者:iii
来源:亿速云 阅读:173

这篇文章主要介绍“mysql大型网站技术架构核心原理是什么”,在日常操作中,相信很多人在mysql大型网站技术架构核心原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql大型网站技术架构核心原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、大型网站架构演化

A.大型网站软件系统的特点

高并发,大流量;高可用;海量数据;用户分布广泛,网络情况复杂;安全环境恶劣;需求快速变更,发布频繁;渐进式发展;

B.大型网站架构演化发展历程

1.初始阶段:一台服务器,LNMP

2.应用服务和数据服务分离:应用服务器(CPU);数据库服务器(快速磁盘检索和数据缓存);文件服务器(大硬盘);

3.使用缓存改善网站性能:缓存在应用服务器上的本地缓存(访问速度快,受应用服务器内存限制,数据量有限)、远程分布式缓存(使用集群部署大内存的服务器作为专门的缓存服务器)

4.应用服务器集群:通过负载均衡调度

5.数据库读写分离

6.使用反向代理和CDN加速CDN(部署在最近的网络机房)、反向代理 (部署在中心机房)

7.使用分布式文件系统和分布式数据库系统

8.使用NoSQL和搜索引擎

9.业务拆分

10.分布式服务

C.大型网站架构演化的价值观

1.大型网站架构技术的核心价值是随网站所需灵活应对

2.驱动大型网站技术发展的主要力量是网站的业务发展

D.网站架构设计误区

1.一味追随大公司的解决方案

2.为了技术而技术

3.企图用技术解决所有问题:技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决

二、大型网站架构模式

模式:每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。模式的关键在于模式的可重复性。

A.网站架构模式

1.分层

2.分割

3.分布式

4.集群

5.缓存

6.异步

7.冗余

8.自动化

9.安全

B.架构模式在新浪微博的应用

三、大型网站核心架构要素

架构:最高层次的规划,难以改变的决定。

软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

A.性能

B.可用性

C.伸缩性

D.扩展性

E.安全性

四、瞬时响应:网站的高性能架构

A.网站性能测试

1.不同视角

2.性能测试指标

3.性能测试方法:性能测试、负载测试、压力测试、稳定性测试

4.性能测试是一个不断对系统增加访问压力,以获得系统性能指标、最大负载能力、最大压力承受能力的过程。所谓增加访问压力,就是不断增加测试程序的并发请求数。

5.性能优化策略

B.Web前端性能优化

1.浏览器访问优化:减少http请求(合并CSS/JS/图片)、使用浏览器缓存(HTTP头中Cache-Control和Expires)、启用压缩 (Gzip)、CSS放在页面最上面JS放在页面最下面、减少Cookie传输

2.CND加速

3.反向代理:通过配置缓存功能加速Web请求。(还可以保护真实服务器及实现负载均衡的功能)

C.应用服务器性能优化

1.分布式缓存

2.合理使用缓存:不要频繁修改的数据、没有热点的访问、数据不一致与脏读、缓存可用性(缓存热备)、缓存预热(在程序启动时预先加载一些缓存)、缓存穿透

3.分布式缓存架构:需要更新同步的分布式缓存(JBoss Cache)、不互相通信的分布式缓存(Memcached)

4.异步操作:使用消息队列(可改善网站的扩展性和性能),具有很好的削峰作用,将短时间高并发产生的事务消息存储在消息队列中。

5.使用集群

6.代码优化:

D.存储性能优化

1.数据库多采用两级索引的B+树,树的层次最多三层。可能需要5次磁盘访问才能更新一条记录。

2.这么多NoSQL产品使用LSM树,可以看作一个N阶合并树。

3.RAID(廉价磁盘冗余阵列),RAID0,RAID1,RAID10,RAID5,RAID6,传统关系数据库及文件系统中应用广泛。

4.HDFS(Hadoop分布式文件系统),配合MapReduce进行大数据处理。

五、万无一失:网站的高可用架构

A.网站可用性的度量与考核

1.网站可用性度量

2.网站可用性考核

B.高可用的网站架构

主要手段就是数据和服务的冗余备份及失效转移。对于应用层和服务层,以集群通过负载均衡实现高可用,数据层通过数据同步复制实现冗余备份来实现高可用。

C.高可用应用

1.通过负载均衡进行无状态服务的失效转移:即使应用访问量非常少,也至少部署两台服务器使用负载均衡构建一个小型集群。

2.应用服务器集群的Session管理

D.高可用服务

1.分级管理:运维上将服务器进行分级,核心应用和服务优先使用更好的硬件,在运维响应速度上也格外迅速。

2.超时设置:在应用程序中设置服务调用的超时时间,一旦超时,通信框架就抛出异常,应用程序根据服务调度策略,可选择继续重试或将请求转移到提供相同服务的其他服务器上。

3.异步调用:应用对服务的调用通过消息队列等异步方式完成,避免一个服务失败导致整个应用请求失败的情况。

4.服务降级:拒绝服务,拒绝低优先级应用的调用或者随机拒绝部分请求调用;关闭功能,关闭部分不重要的服务或服务内部关闭部分不重要的功能。

5.幂等性设计:在服务层保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性。

E.高可用的数据

1.CAP原理

2.数据备份

3.失效转移

F.高可用网站的软件质量保证

1.网站发布

2.自动化测试:工具Selenium

3.预发布验证:先发布到预发布机器上,开发工程师和测试工程师在预发布服务器上进行预发布验证。需要和生产环境相同配置、环境、数据中心等

4.代码控制:svn、git;主干开发、分支发布;分支开发、主干发布(主流);

5.自动化发布

6.灰度发布:将集群服务器分成若干部分,每天只发布一部分服务器,观察运行稳定没有故障,期间如果发现问题,只需要回滚已发布的一部分服务器即可。也常用于用户测试(AB测试)。

G.网站运行监控

1.监控数据的采集

2.监控管理

六、永无止境:网站的伸缩性架构

所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。

A.网站架构的伸缩性设计

1.不同功能进行物理分离实现伸缩:纵向分离(分层后分离),将业务处理流程上的不同部分分离部署,实现系统伸缩性;横向分离(业务分割后分离),将不同的业务模块分离部署,实现系统伸缩性。

2.单一功能通过集群规模实现伸缩

B.应用服务器集群的伸缩性设计

1.应用服务器应该设计成无状态的,不存储请求上下文信息。

2.负载均衡:

3.负载均衡算法:

C.分布式缓存集群的伸缩性设计

1.Memcached分布式缓存集群的访问模型

通过KEY输入路由算法模块,路由算法计算得到一台Memcached服务器,进行读取和写入。

2.Memcached分布式缓存集群的伸缩性挑战

简单的路由算法使用余数Hash:用服务器数目除缓存数据KEY的Hash值,余数为服务器列表下标编号。伸缩性不好。

3.分布式缓存的一致性Hash算法

先构造一个长度为2的32次方的整数环(一致性Hash环),根据节点名称的Hash值将缓存服务器节点放置在这个Hash环上。然后根据需要缓存的数据的KEY值计算Hash值,然后在Hash环上顺时针查找距离这个KEY的Hash值最近的缓存服务器节点,完成KEY到服务器的Hash映射查找 。

D.数据存储服务器集群的伸缩性设计

1.关系数据库集群的伸缩性设计

数据复制(主从)、分表分库、数据分片( Cobar)

2.NoSQL数据库的伸缩性设计

NoSQL放弃了以关系代数为基础的结构化查询语言(SQL)和事务一致性保证(ACID)。强化了高可用性和伸缩性。(Apache HBase) 

到此,关于“mysql大型网站技术架构核心原理是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. OAM Kubernetes 实现核心原理是什么
  2. Spring核心容器IOC原理是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:mysql电商平台的技术架构是什么

下一篇:mysql大型网站技术架构核案例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》