MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你


软件-互联网的发展史
大型主机优点:
集中式的计算机系统 , 高的稳定性和安全性 。
大型主机缺点:
非常贵,一般的小企业用不起 。
比较复杂 , 培养人才的成本比较高 。
单点一旦故障,整个系统停转,损失非常大 。
个人PC电脑的性能越来越高,成本也越来越低 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
Web时代 c/s时代: 富客户端方案 。 卖软件可赚钱 。 qq、影音、游戏 。 早期流行 。
Web 1. 0 特色
主要是单向信息的发布 , 即信息门户---> 广大浏览器客户端互联网内容是由少数编辑人员(或站长)定制的 。代表:三大门户 , 新浪/网易/搜狐 。 新浪以新闻+广告为主 , 网易拓展游戏为主 , 搜狐延伸门户矩阵 。
一般的雏型如下图 , 用户通过浏览器输入网址进行域名解析 , 然后从CDN上获得静态资源 , 从后台服务器获得HTML文件 , 这些信息拼装组成显示的网页 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
Web 2.0 特色
注重用户的交互 。 每个人都是内容的供稿者 。RSS订阅扮演一个很重要的作用 。代表:博客、播客、维基、P2P下载、社区、分享服务
集群跟分布式 横向复制的集群跟纵向切分的分布式环境 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
架构演进史 1. 早期雏形 特征:
应用程序主要做静态文件读取 , 返回内容给浏览器 。浏览器加载本地的若干资源 跟 浏览器解析从服务器获取到的资源是一样的!
2. 数据库开发(LAMP特长) Linux + Apache + MySQL + PHP 特征:
应用程序主要主要读取数据表值 , 填充html模块 。 业务逻辑简单 , 写sql处理 。
3. JavaWeb雏型 特征:
tomcat + servlet + jsp + mysql 。 一个war包打天下 项目结构:ssh/ssm三层结构 。
4. JavaWeb的集群发展 特征:
在3的基础上进行多个war包的复制启动。硬件机器的横向复制 , 对整个项目结构无影响 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
5. JavaWeb分布式 特征:
将Service层单独分离出去 , 成为一个单独的项目jar 。 单独运行 。Web服务器通过rpc框架 , 对分离出去的service进行调用 。 分布式是按照组件拆分 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
6. JavaWeb微服务 特征:
从业务角度 , 细分业务为微服务 , 每一个微服务是一个完整的服务(从http请求到返回) 。 在微服务内部 , 将需要对外提供的接口 , 包装成rpc接口 , 对外部开放 。 微服务按照 业务拆分 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你
本文插图
后端问题 后端的不断演进就会导致出现服务治理需求的出现 。
跨系统的RPC: RMI、webservice、Http请求 ,
dubbo的引入 ,SpringCloud
服务器集群的负载路由 , 服务的注册跟发现 ZooKeeper
数据量超级大时引发的
分库/分表 , 需要修改业务sql语句 , 有侵入型 , MyCat的引入 。
分区 , 对sql语句是没有侵入性的 , 但是对库是没办法减轻压力的 。
单库的MySQL承载容量一般在700W左右 。
MySQL炸裂!万字长文拿下分布式系统,我在字节跳动等你


推荐阅读