互联网系统架构的演进 - 笔记心得
系统的架构分两部分:
--(1)功能性架构
--(2)非功能性架构
架构首先需要满足功能性需求
架构需要考虑的五个方面:
高性能:性能优化的手段很多,客户端APP、服务器端、数据库、代码、机房部署;
高可用:主要手段是冗余;
可伸缩:服务器可以持续增加;数据怎么同步的、负载均衡怎么处理、缓存怎么处理;
可扩展: 程序的架构上,代码和功能可扩展;
安全:不受恶意访问和攻击;
互联网的架构技术一览
前端:(负载均衡之前)
APP以及WEB开发技术
浏览器以及HTTPS优化
CDN
动静分离
图片服务
反向代理
DNS
网关以及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSql数据库
后台架构 (一般都是离线计算产生的数据,分钟或小时汇聚的数据)
大数据平台
搜索引擎
推荐引擎
数据仓库
当有海量数据需要处理的时候,大量的计算都是离线完成,而并非用户访问的时候实时计算的。
运维与安全
数据采集和现实
数据监控与报警
攻击与防护
数据加密与解密
大型网站技术架构
案例1
维基百科,只有十几个人的团队,维护了全球,3个数据中心,全球排名第6的网站。
LVS 是负载均衡服务器
用户访问维基选择就近的数据中心,根据用户的IP 选择就近的负载均衡的LVS
这里的squid 用来做反向代理的。
日志到squid的这条线,是为了更新缓存。
--数据过期失效;
--数据更新后,通知更新;
-- 缓存没有更新的操作,一般都是直接清除;过期失效;
案例2
淘宝案例--吴泽明
如何表达的?
技术研发部-产品技术-业务平台
1、先讲业务是怎么发展的;
2、业务发展对技术的要求;
3、技术发展
顶尖的高手,都是发现问题,关注问题。
马斯克 第一期原则出发思考问题。
/*************************************************/
【淘宝案例分析】
2003~2004
LAMP
Linux apach mysql PHP
MySQL 读写分离
2004.1~2004.5 (数据库出现瓶颈了)
MYSQL 迁移到 ORACLE ;
引入 SQL RELAY 中间件;
2004.2~2004.10
PHP迁移到JAVA
MVC 框架WEBX
项目管理工具ANTX
引入搜索引擎ISearch
2004.10-2006.10
weblogic 迁移到jboss : weblogic收费,JBOSS免费, weblogic复杂;
支持分库的数据访问框架
抛弃EJB
引入spring
基于BDB的缓存,ESI
建立CDN
类目属性体系
2007 业务中心化
拆分系统
业务分库,不同的业务数据库放到不同的服务器上;
数据存储 、检索
分布式
/*************************************************/
【宅米业务模式】:
1.0 WEB +APP NGINX WEB应用 MYSQL(主)
2.0
优化内容:
日订单50W的概念
分布式文件:CDN 缓存
MYSQL 主从复制(阿里的云服务器)
REDIS 也是阿里的云服务器;
京东 日订单50W 是什么时候?
2012年京东 日订单 70W
美团最高 的时候 日订单 200W
3.0
优化内容:
微服务处理各类订单、用户服务、商品服务、红包服务、短信服务
数据分片
数据冷热分离:MYSQL 只存一个月的数据 ;历史的订单数据都入MONGODB
大数据平台:
运营、市场方面的监控
人员的组织形式:
15人的时候: 后端组、WEB组(H5)、 APP组
用户量比较多的是WEB组(H5)
人数上来后(30+),技术部:买家组 卖家组 后台组
技术部:
产品研发:买家组,卖家组,后台组,测试组
架构运维:架构组,运维组
数据平台组:数据平台组,数据分析组
构建自驱动的闭环
不要分配任务,去完成目标而不是完成工作
加班既不是目标也不是手段
亡羊补牢,没事不要瞎折腾
只有优秀的员工才能创建出优秀的企业
为员工的成长买单
先关注人,后关注事
快乐工作
/*************************************************/
【总结】
我们需要基于现实问题来驱动,而不是基于技术去驱动。
即: 我们需要 抓问题,而不是抓技术,需要把问题想清楚了,通常我们问题找到点了,解决方案反而好去制定。
关键还是需要抓住问题,理解问题的本质。
对于一个互联网公司或一个创业团队来说,早期一般还是要聚焦、针对具体的问题;所以的技术都是为了解决问题而服务。
评论