互联网分布式架构的演进之路

V1 小网站

LAMP(Linux+Apache+Mysql+PHP)

问题: 随网站业务的发展,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。

V2 应用服务与数据服务分离
  • 应用服务器:需要处理大量的业务逻辑,需要更快更强大的CPU
  • 数据库服务器:需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的内存
  • 文件服务器:需要存储大量用户上传的文件,需要更大的磁盘

好处:

  1. 不同服务器承担不同的服务角色
  2. 并发处理能力和数据存储空间得到很大改善

问题: 随着用户逐渐增多,数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响。

V3 使用缓存改善性能

缓存分为本地缓存和分布式缓存

  • memcache
  • redis

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

V4 应用服务器集群

改善网站的并发处理
负载均衡调度服务器:

  • 软件
    • Apache Nginx Reverse-proxy pWEB
    • LVS
  • 硬件
    • F5
  • DNS负载均衡

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

V5 数据库读写分离

数据访问模块:

  • 在Mybatis中开发插件
  • mycat
  • sharding-jdbc

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

V6 反向代理和CDN加速

将静态资源(图片、视频、HTML、CSS、JS)缓存到CDN服务器上

好处:
1. 加快用户访问相应速度
2. 减轻后端服务器的负载压力

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

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

文件系统使用集群,数据库分库分表
适合存储小文件、图片的分布文件系统:

  • FastDFS
  • TFS

数据访问模块

  • mycat
  • sharding-jdbc

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

  • 存储的字段差异很大,骷髅表
  • 复杂的文本检索
V8 使用NoSQL、搜索引擎

搜索引擎:

  • lucene
  • solr
  • elasticsearch

NoSQL

  • mongodb
  • elasticsearch

问题: 网站业务不断扩大,越来越复杂,应用程序变得无比庞大,迭代周期越来越快,牵一发而动全身,如何应对业务发展的需要。

V9 业务拆分

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

消息队列的选择

  • RabbitMQ
  • ActiveMQ
  • Kafka

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

V10 分布式服务(服务化)

服务框架

  • Dubbo
  • SpringCloud

配置中心

  • zookeeper
  • SpringCloud config
  • disconf 百度
  • config-toolkit 当当
  • diamond 阿里巴巴

问题: 再往后需要数据挖掘、分析、推荐等业务需求,庞大系统的监控、问题分析等需求

V11 大数据技术、监控、日志分析系统

大数据

  • hadoop
  • spark

系统监控

  • Zabbix
  • ElasticSearch+beats+Kibana

集中式日志分析系统

  • ELK

架构设计思想总结

  1. 分而治之
  2. 随网站所需灵活应付
  3. 业务发展驱动技术发展,技术发展反哺业务
  4. 软件系统的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的
架构涉及误区
  1. 一味追随大公司的解决方案
  2. 为了技术而技术
  3. 企图用技术解决所有问题
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值