1、兼具实用性,易伸缩、可扩展,高可用,高并发,高性能,海量数据,前端架构,安全环境
2、从架构设计,快速开发,高效部署,业务监控,服务治理,运维管理,包括前端优化,CDN,反向代理,缓存,消息队列,分布式存储,负载均衡,分布式服务,NoSQL存储,搜索,监控,安全
3、起因:京东图书促销崩溃,12306抢票崩溃
4、架构演变
单机运行应用、文件、数据库服务器数据使用缓存(本地缓存或者远程分布式集群缓存)(应用层面)应用服务器集群(应用层面)数据库读写分离(数据层面)反向代理和CDN加速(前端层面)分布式数据库和分布式文件系统(数据层面)NoSQL加搜索引擎(数据层面)业务拆分(应用层面)应用拆分(应用层面)5、架构思考点:不要一味模仿大公司;不要追求用新技术;技术是为业务服务而不是业务服务技术
6、架构模式
分层(即横向如mvc)分割(即纵向如分模块和分应用)分布式(应用和服务、静态资源、数据和存储、计算、配置)集群异步(消息队列)冗余备份自动化(发布、监控、代码管理、测试、容错降级)安全性(密码、验证码、加密,风险控制,XSS/SQL注入/DDos)7、新浪
8、架构关注要素
性能:响应时间、TPS(单位时间处理量)、并发数(同一时间处理量)、性能计数器(内存、cpu、磁盘等);可用性(数据备份)伸缩性(构建集群)扩展性(降低耦合性)安全性1、性能
1.1、性能测试:性能、负载、压力、稳定性
1.2、性能分析:分析环节,监控数据,从内存、磁盘、网络、cpu、代码、架构、系统资源
1.3、性能优化
前端优化:浏览器缓存、页面压缩、减少cookie传输、CDN、反向代理应用优化:异步、分布式、缓存、集群、代码(多线程;IO;资源复用如数据库连接、通信连接、复杂对象;数据结构如hash;垃圾回收如jvm中的堆栈)存储优化:ssd、B+树、LSM树、RAID vs HDFS数据库优化:数据缓存、索引、SQL优化2、网站高可用
2.1、网站高可用架构:分层
2.2、网站高可用应用:负载均衡无状态,集群session管理(复制、绑定、cookie记录、session服务器)
2.3、网站高可用服务:分级管理(优先级),超时设置,异步调用,服务降级,幂等性设计
2.4、网站高可用数据:CAP,一致性consistency、可用性availibility、伸缩性patition tolerance
2.5、网站高可用软件:发布流程、自动化测试、预发布验证、代码控制、自动化发布、灰度发布
2.6、网站监控:用户行为日志、服务器性能监控、运行数据报告
3、网站伸缩性
3.1、物理分离伸缩(分层、纵向、横向)
3.2、应用、缓存、数据服务器集群设计
4、网站可扩展(降低耦合性)
4.1、事件驱动(生产者和消费者模式)和分布式消息队列降低耦合性
4.2、分布式服务
4.3、nosql实现可扩展数据结构
5、网站安全
5.1、攻击
XSS攻击:嵌入脚本攻击服务器,可用消毒转移链接中的特殊字符或者HttpOnly解决SQL注入攻击和OS注入:错误回显是大问题,可用持久层框架sql预编译解决CSRF:盗取cookie和session,可用表单token或验证码其它攻击:文件上传、路径遍历5.2、信息加密
单向散列加密对称加密非对称加密5.3、信息过滤
文本匹配分类算法黑名单风险控制