互联网应用架构概览-学习笔记
https://developer.aliyun.com/edu/course/33/learn#lesson/621
1 互联网应用架构概览
负载均衡器:将用户请求分配给网页服务器处理WebServer
WebServer: 返回图片、网页等静态内容,将动态内容(购物车)等分配给应用服务器AppServer
缓存服务器:缓存常用的数据库结果
2 网络链路存在的问题及解决方案
第一公里
BGP: 用各个运营商的网络都能最快访问同一个IP
第二公里
CDN: 用户A访问静态内容后将内容缓存在最近的CDN节点,使得同一个CDN节点下其他用户能直接访问该缓存,不用直接访问服务器降低访问时间
?:DNS工作模式
3 CDN架构及配置
使用前后对比:
使用前:由原站返回,用了BGP,延迟在20ms左右。 不用BGP则在几百ms左右
使用后:由CDN节点返回,延迟在10ms内
课时4:应用层横向扩展——负载均衡
两个关键点:1 负载均很服务器 2 应用镜像化
课时5:应用层缓存提升性能
应用服务器可以横向拓展,数据库不行。所以使用应用层缓存起到:1 降低数据库压力;2 提升数据库响应时间的作用
热点数据:例如电商网站里面用户的信息数据
存储HTTP session等会话数据,避免因为应用服务器故障导致会话丢失
两个应用缓存产品
课时6:同步转异步处理
高并发:每秒几百万甚至上千万访问请求
应用服务器例如Tomcat都是以线程池模式运行的。线程池有限,一般有上限,例如500-1000。如果用完就导致卡线程,系统卡死。
只有一个线程池很容易导致线程阻塞。
缓解方式之一:双线程池
结构层面解决办法:同步转异步,例如购物,只保留支付等核心缓解同步处理,在本线程完成,其他例如更新库存、下物流单,分发给其他模块异步解决,从而加快线程返回
同步转异步的核心:
产品:
阿里云消息队列
课时7:数据库架构设计优化-读写分离
数据库难以横向扩张原因:为了保证数据库ACIE这几个原则,必须共用一个数据存储。这个存储最终会成为数据库并发的瓶颈。
具体优化手段:
读写分离
写并发度低,因为要加锁。阻塞读。读要等写完成。
主要通过数据库的同步日志来对数据库进行同步
课时8:高可用架构方案实例
可用性及安全性都有问题
双可用区架构
课时9:课程总结