一.互联网系统架构演进之路

初生 : 无名小网站

​ 访问量低,一天服务器满足要求(应用程序+文件+数据库)

​ 典型技术LAMP: Linux +Apache+Mysql+PHP

面临问题1: 业务复杂访问量多之后,性能越来越差,存储空间不足。

​ 解决方式:应用服务器与数据服务分离:应用服务器+数据库服务器+文件服务器

​ 应用服务器:需要更块强调的CPU(处理大量的业务逻辑)

​ 数据库服务器:需要更块的硬盘和更大的内存(快速磁盘检索和数据库缓存)

​ 文件服务器:需要更大的磁盘(存储大量用户上传文件)

​ 不同服务器承担不同的服务角色:并发处理能力+数据存储空间 ==>性能提升

面临问题2: 用户增多,网站访问增大,数据库压力增大导致访问延迟,用户体验差

​ 解决方式:使用缓存改善性能

​ 缓存分类:本地缓存(速度极快,但是缓存的数据量有限,因为内存有限。与应用程序争用内存) ,

​ 远程分布式缓存(按需做扩展,可以做成集群,先对于本地缓存要慢点)

​ 常用缓存组件:memcache , redis

面临问题3: 单一应用服务问题,能处理请求连接有限,网站访问高峰期,拒绝访问与响应时间常问题,应用服务成为瓶颈。

​ 解决方式:应用服务集群,改善网站的并发处理能力,起到分流的作用

​ 负载均衡调度服务器+集群应用服务器 +(文件服务器+远程分布式缓存服务器+数据库服务器)

​ 为什么不用更强的服务器?负载均衡的实现方式有哪些?

​ 应为更强的服务器也有瓶颈,再往上扩展不了,集群可以按需扩展。

​ 负载均衡服务器一定有具有高并发高性能的能力。它要对请求做并发处理。

负载均衡实现方式:软件:Apache Nginx Reverse-proxy pWEB LVS

硬件:F5

DNS负载均衡:域名解析的过程。一个域名对应多个ip地址,每次请求解析返回不同的ip地址

面临问题4: 缓存减小了数据库压力,但是有一部分读操作(缓存访问不命令或者过期)和全部的操作要访问数据库,当用户达到一定柜面,数据库因为负载压力过高而遇到瓶颈。

​ 解决方式:数据读写分离

​ 负载均衡调度服务器+集群应用服务器 +(文件服务器+远程分布式缓存服务器+主数据库+从数据库服务器(主写读从))

​ 数据访问模块怎么做?

在Mybatis中开发插件:

MyCat

Sharding-JDBC

面临问题5:用户越来越多,地域越来越广,网络环境差异大。因访问慢引而用户流失。

​ 解决方式:反向代码和CDN加速(提前把静态资源缓存到外部服务器)

​ CDN服务器集群+反向代理服务器集群+负载均衡调度服务器+......

CDN内容分发网络,它是要部署在运营商的数据中心里面。类似于代理商,由代理商来处理。适用于静态资源,将静态资源提前放到本地方运营商的数据中心。请求的时候不需要跑到别的地方取数据*

​ 带来的好处:加速用户访问响应速度,减轻后端服务器的负载压力

面临问题6: 单文件服务器,单数据库服务器,存不下日益增长的数据

​ 解决方式:分布式文件系统和分布式数据库系统(分库分表)

​ 分布式文件怎样做?分库分表怎样做?

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

​ **数据访问模块: MyCat Sharding-JDBC **

面临问题7:数据的存储需求和检索越来越复杂,存储的字段差异比较大,骷髅表;复杂的文本检索。

​ 解决方式:使用NoSQL,搜索引擎

搜索引擎:lucene ,solr,elasticsearch

NoSQL: mongodb,elasticsearch

面临问题8: 网站越好,业务扩大,程序变庞大,迭代周期快,怎样快速应对业务的发展。

​ 解决方式:业务拆分(应用服务拆分多个

​ 如大小电商网站会将首页,店铺,订单,买家等拆分成不同的产品线,分归不同的短途负责,分查不同的应用,独立部署。通过连接,mq,数据存储系统建立关联。

消息队列:RabbitMQ, ActiveMQ,Kafka

面临问题9: 拆分越小越多,关系越复杂后端的数据要被成千上万台应用服务器连接,数据连接资源不足。

​ 解决方式:分布式服务化

​ 如何服务化?如何做配置中心?

服务化两种架构方式:SOA(Enterprise Services Bus -ESB消息总线,它会成为一个瓶颈,是作为一个中心点),

微服务(Microservices,没有中心,存在服务治理的问题)。

微服务框架:Dubbo SpringCloud

配置中心:Dubbo , SpringCloud config, Disconf 百度 ,Config-toolkit 当当 , Diamond 阿里

面临问题10:数据挖掘,分析,推荐等乐舞需求,庞大系统监控,问题分析问题。

​ 解决问题:大数据技术,监控,日志分析系统。

大数据:Hadoop ,Spark

系统监控:Zabbix,elasticsearch+beats+kibana

集中式日志分析系统:ELK

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。