大型WEB架构设计

-回复 -浏览
楼主 2022-08-20 08:12:25
举报 只看此人 收藏本贴 楼主

当前用户量、数据量、访问量都在不断的增长,每个快速发展的网站都将面临执行效率、高访问、高并发和高度复杂的数据处理等问题,我们这一阶段的学习就是专门为解决网站的大访问量、大存储、大数据量、大流量、大负载、瞬间爆发、查询维度多、动静分离、访问速度滞缓等问题,并且全部通过Linux服务器设计完成。

一、网站运营总结

  • 1.大访问量

  • 2.大存储量

  • 3.访问速度

  • 4.服务器监控

1、大访问量

① 负载均衡 把众多的访问量分担到其他的服务器上,让每个服务器的压力减少

1) Cisco 以太网通道 (网络层面的负载均衡设备和技术)
2) windows NLB技术 (服务器领域)
3) Linux LVS技术 (服务器领域)
4) F5等负载均衡器 (网络层面)

② 冗余技术 数据到达服务器,以防止出现宕机,备份服务器开始运行,防止单 点故障,做一个备份。
集群技术:不是多台服务器加在一起形成的集群圈。而是在集群圈中,只有一台服务器在为客户服务即处于激活状态,其他的都处于休眠状态,当出现故障时,休眠状态的自动就会被激活。轮循。单点故障,有一个备份,就是集群

1)Cisco HSRP 热备份路由 ( hot standby route protel)
2)Windows集群技术
3)Linux HA 集群技术
4)IBM AIX 集群


典型LVS结构
一般来说,LVS集群采用三层结构,
负载调度器服务器池共享存储主要组成。


合格的构架师来运营一家公司的网站必须考虑的三个问题:
①网络构架
②服务器构架
③应用程序开发(代码)

2、网站大数据存储

1、主流数据库

目前有四种主流的数据库:
1.Mysql
2.Oracle
3.DB2(IBM)
4.Nosql (非关系型数据库)

淘宝数据存储分为三个阶段:
1、主打mysql数据库
2、IBM AIX小型机 + Oracle数据库【成本】
3、
Mysql主群+集群+分区技术(承担光棍节巨大访问量)

网络界最核心最重要的为数据的积累

这里我们先明确三个概念:
负载均衡:服务器都是激活的,并且是轮循的。
冗余技术:一个激活,其它的备份处于休眠状态。
Mysql主从:依赖于
Binary Log日志(记载CRUD,作用是恢复数据),主服务器的所有增删改的操作同时会备份复制一份给从服务器,让服务器同时执行,达到和主服务器的数据的同步和完整,它的重点是主服务器和从服务器都可以同时活动,即操作Mysql数据库时,增删改走都是主服务器,而查询走的是从服务器。所以,主从为负载的技术。

在这里我们的重点为负载均衡技术,在假设我们的服务器不会出现单点故障前提下冗余技术不会过多的考虑。

2、MySQL相关操作

Mysql 分库分表
1.垂直分表(字段不要太多,把一张大表竖切为许多小表) 
2.水平分表(把一张大表横切为若干小表)

Mysql 分区技术
分区技术将一个表拆成多个表,比较常用的方式是将表中的记录按照某种Hash算法进行拆分,简单的拆分方法如取模方式。
在一定的层面表名不变,在真正的磁盘存储时存储在不同的分区

Mysql 集群
单点故障时,冗余备份

3.网站加速技术

1.Squid 代理缓存技术(Squid:乌鱼)
2.页面静态化缓存
3.Memcache,Redis
4.Sphinx 搜索加速(狮身人面像,谜一样的人)

Squid反向缓存-动静分离
Squid是一款用来做代理服务器的软件。作用是动静分离,将数据保存在缓存池中Squid cache,能够代理服务器执行。代理服务器就如同买火车票,去火车票代理售票点,买票,而不是去火车站,这样就减少了火车站的压力,提高了速度。

动态页面静态化
Memcache 
是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。(注: 摘自百度全科)

Sphinx全文索引
Sphinx 是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL作全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

4.网站服务监控

网站服务、流量监控
1、服务监控
1)apache web 服务监控
2)mysql 数据库监控
3)磁盘空间监控

2、流量监控
1)网站流量监控(网卡进入的数据量和网卡流出的数据量成比例)
监控的好处:只有监控才知道问题,有了问题才能改进
,先要建立网络管理协议,被监控的服务器全部开放smp,161端口,
监控者监控被监控者,mrtg监控图。

cacti监控原理
Cacti 监测系统的工作原理

二、网络数据转发原理

1、网络OSI七层模型

1.物理层:通信线缆(光缆、无线),线缆的标准统统属于物理层
2.数据链路层:完成加封(盖个戳,加个标记)与解封、数据量层
加封:盖个戳,加个标记, 数据链路层重点是在数据包外部加一个原MAC地址,目标Mac地址的这么一个标记。mac地址:网卡的物理地址,也是网卡的实际地址。 加原Mac地址+目的mac地址。mac地址不能改变,在电脑出厂时已经刷在了网卡上了,Mac地址犹如身份证的ID是唯一的。
3.网络层:ip地址层 网络层+ip 地址层 在数据外围加一个原ip地址和目的ip地址
4.传输层:在原有的上层的数据外围标记两个标签:第一源端口,第二目的端口,从这个端口出去,访问另一个端口
5.会话层:通讯状态
6.表示层:上传的数据是以什么样的编码来编码,编码状态和回话方式,不是以人来自定义来完成的,而是由人在应用层操作来完成的
7.应用层:通讯软件,人参与的都是在应用层,其他的都是由软件来完成

5.6.7层 (人与应用程序完成)
端口:是一个城堡,65535端口,80端口
MAC地址:介质访问控制(Media Access Control)
IP(Internet Protocol)互联网协议 
TCP(Transmission Control Protocol)传输控制协议
WAN()广域网
IP主要解决三个问题:寻址、路由、封装
IP地址分为两部分:网络地址+主机地址




发送数据:PC-A


接收数据:PC-B


2、交换机

交换机:几台或者二十几台计算机插上网线二十几个人就可以通信,这么一个设备就叫做交换机。

交换机的大脑里边保存的是每个计算机的网卡MAC地址与你所在的计算机的接口
圆圈里边打个叉为路由器,方框四个箭头的为交换机。
交换机是通过源来学习的,通过学习,可以把MAC地址,端口号完善



交换机A在接收到数据帧后,执行以下操作:
交换机A查找MAC地址表,(A向所有端口喊了一声,谁的Mac地址为44,请告诉我一声)
交换机A学习主机11的MAC地址(把11和其端口记下)
交换机A向其他所有端口发送广播(广播:发给这个区域内的所有的人)

交换机B在接收到数据帧后,执行以下操作:
交换机B查看MAC地址
交换机B学习(记下)源MAC地址和端口号
交换机B向所有端口广播数据包



交换机的基于语言学习的功能,谁来就把谁记下,最终完善大脑里边的MAC地址表
实际例子:快递送快件,找收件者,并且核对收件者的信息

3、路由器

企业路由器设备:口比较少,不是互联PC机的,而是互连网段的。(路由器由圆的扁形图代替)
路由器是用来互联不同网段的设备。(比如1网段和2网段,1.3和2.3),只记网段和接口!!!注意:绝对不能把路由器接在两个相同的网段上。)
交换机:既可以连接PC机,又可以连接路由器。

路由器里边有一个路由表:


一旦有路由器存在,是部门和部门,公司和公司之间的比较大的网络通信图
路由器
只记网段和接口(所以路由器的接口比较少)
交换机记录MAC和接口



4、ARP协议

ARP协议它是一种广播,通过ip地址得到MAC地址的广播协议


主机10.1.1.1发送ARP广播,问谁有没有10.1.1.2的MAC地址

所有主机都接收到了10.1.1.1的ARP广播,但只有10.1.1.2给它一个单播回复,并缓存10.1.1.1的MAC地址。

主机10.1.1.1将10.1.1.2的MAC地址保存到缓存中,发送数据。

ARP缓存的查询:
在windows xp 操作系统中:



代理ARP工作原理

路由器可以分割网段和广播,比如广播后只能在同一个网段接收到,而在其他的网段不会听见广播。



名词解释:
IP主要解决三个问题:寻址、路由、封装
IP地址分为两部分:网络地址+主机地址
子网掩码:TCP/IP协议使用子网掩码确定主机是在本地子网中还是在远程网络中。
将Ip地址和子网掩码排在一起比较,就可以分清楚改地址的网络部分和主机部分:
ip: 10.10.27.115
子网掩码:255.255.255.0
网络为:10.10.27.0 主机地址为:0.0.0.115
当数据包到达10.10.27.0子网(从本地子网或远程网络),而且它的目标地址为10.10.27.115时,计算机将从网络接收它并对他进行处理。



欢迎关注运维自研堂订阅号,运维自研堂是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、tornado、bootstrap、redis、golang、docker、etcd等经验分享。


  • 【Zabbix-Monitor】监控系统

  • Jira与Zabbix结合

  • 【Zabbix】告警事件归档与提取

  • 【HMonitor】Zabbix告警管理平台

  • Zabbix 告警收敛

  • Zabbix v3.0微信报警及API使用

  • zabbix v3.0安装部署及使用

  • Web权限设计

  • 搭建 kubernetes 容器编排平台

  • 区块链入门教程

  • 基于Gogs+Drone搭建的私有CI/CD平台

  • WEB架构设计心得

  • Docker与CI/CD

  • 【实战篇】Docker的CI/CD流水线实践

  • 基于 Harbor 搭建 Docker 私有镜像仓库

  • 利用helm部署应用到kubernetes


开源    创新     共享


投稿&商务合作

Mail:idevops168@163.com       QQ:785249378


牛人并不可怕,可怕的是牛人比我们还努力!


长按图片,识别加入我们!


我要推荐
转发到