V1

LAMP

Llinux+Apache+Mysql+PHP

 
V2应用服务与数据服务分离

应用服务器:需要处理大量的业务逻辑需要更加强大的CPU

数据库服务器:需要快速磁盘检索和数据库缓存,需要更快的硬盘和更强大的内存

文件服务器:需要存储大量用户上传的文件,需要更大的硬盘空间

相比v1版架构升级的好处:

不同的服务器承担不同的服务角色:

并发处理能力

数据存储空间

得到很大程度上的改善

与之而来的问题:

随着用户量逐渐上升,网站再一次面临挑战:数据库压力太大导致访问延迟,jiner影响整个网站的性能,用户体验受到影响。

 
V3使用缓存改善性能

缓存可分为:

本地缓存(快是快,但是会与本机应用服务器竞争内存资源)

远程分布式缓存(集群化:提高数据存储上限,规避单点故障,高可用高负载)

有哪些缓存组件:memcache,redis

发展问题3:随着用户逐渐增多,单一应用服务器能够处理的请求连接有限,在网站访问高峰器,应用服务器成为整个网站的瓶颈

 
V4应用服务集群

使用应用服务器集群--改善网站并发处理能力

负载均衡调度服务器-》应用服务器

分析技术成本和经济成本

负载均衡的实现方式有哪些?

软件:Apache Nginx(10万) Reverse-proxy pWEB(第7层 应用层)

LVS(第4层)

硬件:F5

DNS负载均衡

发展问题4:使用缓存后,大大减轻了数据库的读压力

但仍有一部分读操作(缓存访问不命中,缓存过期)和全部的写操作要访问数据库,当用户达到一定规模之后,数据库因为负载压力过高而成为整个系统的瓶颈。

 
V5数据库读写分离

主从分布,将数据分流,加入数据访问模块(在mybatis中开发插件,mycat【服务端代理模式】,sharding-jdbc【客户端模式】)

发展问题5:用户规模越来越大,发布地域越来越广、地域网络环境差别很大,如何保证用户的访问体验,不至于因访问慢而流失用户。

 
V6反向代理和CDN加速

将静态资源内容放在距离用户位置近的 各运营商数据中心

CDN(内容分发网络)

反向代理、CDN来缓存网站资源:1.加快用户访问响应速度 2.减轻后端服务器的负载压力

 

发展问题6:单文件服务器、单数据库服务器存不下日益增长的数据。

 
V7分布式文件系统和分布式数据库系统

使用分布式文件系统和分布式数据库系统(分库分表)

适合存储小文件、图片的分布文件系统:FastDFS,TFS

数据访问模块:mycat、sharding-jdbc

为啥不用?HDFS适用于大数据存储:存储大文件的系统 切块存储 128M

发展问题7:随着业务的发展,数据的存储需求和检索需求越来越复杂

存储的字段差异很大,骷髅表

复杂的文本检索

 
V8使用NoSQL、搜索引擎
搜索引擎:lucene、solr、elaticsearch
NoSQL:mongodb、elasticsearch
 
发展问题8:网站越做越好,业务不断扩大、越来越复杂,应用程序将变得无比庞大,迭代周期越来越快,牵一发而动全身,怎样应对快速发展需要?
 
V9业务拆分

将庞大复杂的系统拆解成为不同的产品线,分归不同的团队负责,分成不同的应用,独立部署。通过连接、MQ、数据存储系统建立关联。

消息队列MQ(对系统解耦合,异步通信、调用):

RabbitMQ

ActiveMQ

Kafka

 

发展问题9:

业务规模不断增大,应用拆分越来越细,越来越繁多,应用建的关系越来越复杂、应用中存在大量相同的业务操作。后端数据库要被成千上万的应用服务器连接,数据库连接资源不足。

 
V10分布式服务(服务化)

如何做服务化?

服务框架:Dubbo、SpringCloud

如何配置中心?

配置中心:

zookeeper、

SpringCloud config

disconf 百度

config-toolkit 当当

diamond 阿里

大型分布式集群系统

发展问题10:数据挖掘、分析、推荐等业务需求、庞大系统的监控、问题分析等需求

 
V11大数据技术、监控、日志分析系统
大数据Hadoop、spark
系统监控Zabbix、ElasticSearch+beats+kibana
集中日志分析系统:ELK
 
着重掌握:集群负载均衡技术、分布式微服务技术、大型分布式缓存技术、消息中间件技术、搜索引擎技术、分布式数据库技术、NoSQL技术、并发编程、网络编程、框架源码、中间件开发
 

posted on 2021-03-08 18:02  KlausMax001  阅读(113)  评论(0编辑  收藏  举报
Live2D