一,架构演进之路
    阶段一 php到java
    阶段二 分布式改造
        微服务化
        分布式rpc框架
        异步消息架构
        分布式数据层
        分布式文件系统
        服务发现,注册,管理
        分布式session问题
    阶段三 无线化改造
    阶段四 中台改造
    阶段五 国际化
        多语言问题
        多时区问题
        数据路由问题
        全球数据的同步与复制问题
二,挑战性能瓶颈

三,组织架构的变迁

四,工程师文化的形成
    
1,构建大型网站-分布式改造
分布式配置框架
千级
推送模式
万级
拉取模式
1,不要让网卡成为瓶颈
2,要保证配置下发的到达率(版本号)

分布式消息框架
实时消息
异步解耦
最终一致性
消息有序性
多端消费
延时消费
http://queues.io/

分布式数据层
分库分表
主备读写分离
注意读写一致性

分布式文件系统
fastDfs

应用的服务化改造
应用分层设计
微服务化
zookeeper
集群管理
共享锁
队列管理

分布式消息通道服务的设计
典型的分布式集群设计思路
master/slave
对等

2,无线化:无线时代下的架构演进
端的演进
html5的页面优化
cookie压缩(全部压缩/部分压缩)
URL短域名
CDN前置缓存

无线链路的优化
无线端请求合并
CDN动态加速
WebP图片优化

服务端的演进
多端适配
json化接口
业务组件化

3,大型网站平台化演进:大中台和小前台
什么是中台:通过制定标准和机制,把不确定的业务规则和流程通过工业化和市场化的手段确定下来
问题太多导致

4,全球化下的网站演进:全球部署方案
单元化
数据路由方案
1,主键ID上做标识
2,设置路由表
接入层路由
服务层路由
数据层路由

多时区问题
系统统一时区
UTC
数据库中使用long型存储UTC时间
服务层,存储层直接使用long型计算
控制层对时间参数进行处理,将其转换成UTC时间

全球数据同步与数据路由
数据复制
异步通过消息发送
同步通过数据管道复制

各国对数据的保护政策

通用版和定制版的选择

5,应用程序优化:代码级优化
木桶效应
JProfiler
Yourkit
ab 模拟读请求
全链路压测技术 模拟写请求(到影子表)

发现瓶颈
jstack
查看当前请求的TCP连接数
netstat -n | awk '/^tcp {++state[$NF]} END {for(key in state) print key, "\t", state[key]}'
iostat
iotop

设置线程数
最佳线程数=(线程等待时间+线程cpu时间)/线程cpu时间*cpu数量

设置内存
并发请求数*每个请求消耗的内存

Eden区不够,触发minorGC
Survivor不够,copy到old区,触发fullGC

尽量减少线程请求生命周期里的对象数量
不要在非常耗时的操作前创建大对象

减少IO,提升RT
优化CPU,提升QPS

减少字符的编码
使用局部变量
减少方法调用

把对象作为hashmap的key
web.xml配置版本信息可以减少启动时注解的扫描
Logger创建使用statis修饰
少用Thread.getStackTrace();
正则运算尽量cache

减少并发冲突
Class.forName()加缓存ConcurrentHashMap
减少序列化
减少字符到字节的转换
String转byte[],使用stream流输出
使用长连接
html压缩
json减少key的命名长度

6,应用架构探索:合并部署
架构
业务架构抽象
应用架构
平台架构
技术架构
数据架构
网络架构
组织架构

7,链路优化:大秒系统的极致优化思路
热点隔离
业务隔离(单独报名)
系统隔离(分组部署)
数据集群(cache集群)
用户分区(url限流)
区分接口
数据打标识

动静分离
url固定
不包含浏览者相关因素
不包含时间相关的因素(时间通过服务器传送)
不包含地域因素
不包含cookie等私有数据

url唯一化
分离浏览者相关的因素
分离时间因素
异步化地域因素
去掉cookie
一致性hash(容易产生热点)

方案选择
实体单机部署
lvs -> nginx -> cache -> server
统一cache层
cdn
cdn二级cache作为缓存
缓存失效(被动失效/主动失效)
锁或者队列控制瞬间的请求量

数据分层校验
先做数据的动静分离
将90%的数据缓存在客户端浏览器(用于前端校验)
将动态请求的读数据cache在web端
对读数据不做强一致性校验
对写数据进行基于时间的合理分片
对写请求做限流保护
对写数据进行强一致性校验

实时热点发现
构建异步课收集交易链路上各个中间件产品本身统计的热点key
建立热点上报和可以按照需求订阅的热点服务的下发规范
统一热点分析平台

直接使用servlet处理请求
直接输出流数据

同一商品被大并发读的问题
应用层localcahce(划分成动态数据和静态数据分别处理)
静态数据提前缓存到秒杀机器
动态数据上缓存,不一致性由写数据时保证最终一致性
同一数据大并发更新问题
热点商品隔离到单独的热点数据库
应用排队
数据库层排队

修改时间字段更新会非常频繁,可以合并sql,一定时间内只执行最后一条update的sql

8,全局基础设施优化:资源调度优化
容器/编排
小应用虚拟化容器(分配小内存和低核数)
容器标准化运维/标准化部署
数据存储(不在本机存储(无状态),可以实时写日志,永久写数据库,分布式存储场景要做到存储与计算分离)

资源的收集和管理
资源的信息管理
物理机器的集群管理
资源的合理分片策略和算法
资源的信息管理(mesos)
最大内存剩余优先分配策略
最大cpu剩余优先分配策略
最大最小资源公平分配策略
根据资源分配指定分配策略(给机器打标签)

虚拟化技术
计算型业务选择docker
io要求较高的场景下选择LXC作为容器

存储技术
存储与计算的分离(每个容器写的数据都能写到一个集中的存储集群中)

物理资源调度
k8s/mesos

计算分离存储
CEPH
数据和技术的精确匹配,技术节点和存储节点之间的数据量的传输,考虑内网的网络带宽和访问数据的网络延时

在线,离线混合部署
要实现在线离线任务的灵活调度
要实现在线离线任务的资源隔离
要能监控在线任务的QoS
(大数据集群中的瓶颈到底是计算还是存储;将离线和在线业务大数据集群分别部署在两个机房)

应用层调度
集群的容量规划
线下单机压测
线上真实流量的压测
埋点请求url(只适合读请求)
ab/TCPCopy
集群流量引流到单台或多台,夜间操作

弹性调度
ip做路由,需要注意及时清楚缓存并更新ip路由表
域名做路由,naming服务也要足够可靠,主动探活和被动探活的准确性和灵敏性

故障自愈
多版本部署,蓝绿发布

问题排查
jstack dump
pstack pid
strace -p pid
gdb

linux-fincore
systemtap
/run目录挂载类型为内存文件系统tempfs

9,网站高可用建设:大型网站的稳定性建设
电商网站的交易链路必须保障交易链接的可用性达到4个9
架构/编码/测试/发布/运行/故障
避免单点
分组隔离
异步化
异地容灾

错误捕获(IO/远程调用/多线程)
异步线程
超时处理
限流保护

自动化对比测试
beta测试(线上测试用户)
分批发布
多版本发布

实时监控报警(CPU,load,磁盘,内存)
过载保护
自动降级
实时数据对账

发生故障时的稳定性建设
快速回滚
故障定位
快速恢复(多版本,切流量)

体系化建设
压测体系
单系统压测
TCPCopy
全链路压测
流量的制造
流量标记(id999开头/trace标签传递)
测试数据的处理(影子表)

管控体系
开关系统(管理线上常用操作)
预案系统(应急预案)
限流降级系统

监控体系
异常的智能监控系统
调用链路跟踪系统
端到端的链路染色系统
业务数据轨迹重现系统(商品快照)
业务数据对账系统(数据采集,规则匹配校对)

恢复体系
多版本部署

度量体系
性能基线
链路基线
成本基线

线上运维能力
浏览器前端的问题
域名劫持和DNS劫持的问题
前端js的错误定位和资源加载限制问题
无线端的网络特性(tcp连接耗时,数据下载的影响,wifi,4g,弱网内容读匹配)
无线端请求(手机基站->省级网关出口0->服务端网关->应用)
无线端的问题(链路,日志上报,舆情收集)
JDK基本配置参数,内存分配方式和GC调优
应用系统的性能指标(网络,qps,rt,cpu消耗,load,内存dump)
网络部署
cdn部署

稳定性组织保障
实体或虚拟团队

问题排查
问题排查沟通群

经验
不要放过任何很小的错误
涉及数据问题,一定要非常重视
必须熟悉整个商品流量环节
要写健壮性的代码

内存泄露问题
jstat -> jmap dump -> mat
oprofiler
perftools
map
JVM Heap存放数据来排查

总结
结合具体情况找出最有效,最合适自己的方案

相处经验
相互的信任
积极主动
独立的观点

大型网站技术架构演进与性能优化相关推荐

  1. 大型网站技术架构演进

    文章目录 系列文章目录 前言 1 构建 型网站:分布式改造.. ... .- .. .. .-. ..... ... .. .. .. .. .. .. .. .. .. .. .. 1 1.1 为什 ...

  2. 大型网站技术架构(3):WEB 前端性能优化

    上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器 ...

  3. 大型网站技术架构:摘要与读书笔记

    花了几个晚上看完了<大型网站技术架构>(https://book.douban.com/subject/25723064/)这本书,个人感觉这本书的广度还行,深度还有些欠缺(毕竟只有200 ...

  4. 大型网站的演化之路——读《大型网站技术架构》

    大型网站的演化之路--读<大型网站技术架构> ____ author:姚毛毛的博客 & 妖生 01 大型网站or软件有什么特点? 高并发.大流量,微信都日活10亿了 7×24的高可 ...

  5. 大型网站技术架构的演讲之路

    作者:翟志军 原文:https://my.oschina.net/zjzhai/blog/389266 最近我在阅读2本关于大型网站架构的书:<大型网站技术架构--核心原理与案例分析>李智 ...

  6. 大型网站技术架构:核心原理与案例分析pdf

    下载地址:网盘下载 编辑推荐 编辑 本书作者是阿里巴巴网站构建的亲历者,拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历 ...

  7. 大型网站系统与Java中间件实践 第二章大型网站及其架构演进过程

    2.1什么是大型网站 通过第 1 章我们了解了分布式系统的相关基础知识, 大型网站是一种很常见的分布式系统,而本书重点要介绍的中间件系统也是在大型网站的架构变化中出现并发展的,那么我们很有必要从大型网 ...

  8. 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!读完工资多个0!

    学习如逆水行舟,不进则退.所以又来给各位读者送书了,这次送45本技术书,内容涉及深度学习.Python.Dubbo.Flutter等. 感谢本次活动的赞助商『电子工业出版社博文视点』 另外!急于购书的 ...

  9. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

    十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱.经常在技术网站.文档中出现的"四层负载均衡"."七层负载均衡"字眼有什么含义?有什么区别?对客户网络有哪些不 ...

  10. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

最新文章

  1. iOS 数据持久化 -- Core Data (2)
  2. 彻底解决_OBJC_CLASS_$_某文件名“, referenced from:问题
  3. golang 并发与并行学习笔记(一)
  4. C语言实现ifconfig获取网卡接收和发送流量统计
  5. 如何通过网站优化的方式提升网站转化率?
  6. 统计的一个小题目python实现
  7. 如何快速搭建开放、多租户的电商云平台
  8. Butter fly
  9. 使用xslt批量修改xml 节点name
  10. Js实现异步刷新(原创)
  11. php怎么设置网站的字符编码,php如何设置字符编码
  12. (亲测)vue-cli项目添加骨架屏多种方式,自动生成骨架屏
  13. 用w32tm设置服务器时间同步
  14. JavaEE Tutorials (13) - 使用锁定控制对实体数据的并发访问
  15. Vmware 安装 ghost 版 win 7
  16. 惊艳!阿里巴巴最新发布Java系统架构师+开发应用面试突击宝典
  17. Linux安装/升级/卸载pip3
  18. 华为2019校招笔试
  19. oracle现金流量表逻辑,现金流量表内在逻辑研究
  20. Matlab学习手记——牛顿型信頼域法求解无约束问题

热门文章

  1. java与数据库连接odbc_详解java数据库连接之JDBC-ODBC桥连方式
  2. SSCI写作--期刊检索和基本介绍
  3. 视频教程-学透JavaScript-JavaScript
  4. 好网站:字体转换器在线转换 http://www.diyiziti.com/
  5. Android腾讯微博开放平台入门(四)发表一条文字微博
  6. pyecharts基础图表汇总(三国演义可视化)
  7. 数学建模论文格式规范(国赛)
  8. W32Dasm缓冲区溢出分析【转载】
  9. 手机屏幕驱动板1080x1920分辨率HDMI红米note3 note4 note4x屏幕Fondar自制投影 光固化
  10. 【原】YUI3:js加载过程及时序问题