系统架构
本周是跟随李智慧老师学习架构师训练营的第四周,现将本周学习内容总结如下:
随着系统的演进、发展互联网系统往往面临着越来越多的挑战:随着用户量的增多面临着高并发、大流量的问题,随之而来的是海量的数据存储及处理问题。系统的高可用及安全问题也面临着巨大挑战。对于需求的频繁变更,需要版本快速迭代,部署、运维以及系统稳定性也面临着巨大挑战。
应对高并发的两个技术方向:
1、垂直伸缩:提升单台服务器的硬件资源。无需改变系统架构,升级快速简单,但单台服务器有物理极限,达到一定的程度后很难进行系统性能的提升。
2、水平伸缩:增加多台服务器提升计算能力。
互联网系统架构演化:
1、单体架构
2、应用数据分离。数据库系统、文件系统与应用系统分开部署
3、使用缓存改善系统性能
4、引入负载均衡,通过应用系统集群改善并发处理能力
5、数据库读写分离
6、使用反向代理和CDN服务器加速系统访问
7、使用分布式文件系统和分布式数据库系统
8、使用NoSQL和搜索引擎
9、业务拆分
10、微服务及中台化
11、大数据及智能化
互联网架构模式:
1、分层:横向切分,每一层负责单一职责,通过上下层之间的调用完成一个功能
2、分割:纵向切分,将不同的功能和服务分割开来
3、分布式:将不同模块部署在不同的服务器上,通过远程调用协同工作
4、集群
5、缓存:CDN、反向代理、本地缓存、远程缓存
6、异步
7、冗余:高可用
8、自动化:自动化运维
9、安全:XSS攻击、SQL注入、权限、敏感信息等
可通过高性能、高可用、可伸缩、可扩展、安全等几个维度衡量一个系统架构的好与坏。
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
一个大型互联网系统一般用到的技术方案有以下几种:
1、CDN:缓存静态资源,提升系统访问速度
2、HA:一般使用keepalived + nginx、keepalivde + mysql等解决系统高可用问题
3、负载均衡:nginx、F5
4、分布式缓存:redis,缓解数据库压力,改善系统性能
5、数据库读写分离:一主多从、互为主从等架构方案配合keepalived解决数据库高可用、缓解主库压力
6、数据库分库分表:海量数据存储问题
7、分布式文件系统:分布式系统下的文件存储问题,提高文件系统的读写性能及高可用问题,ceph
8、微服务:zk + dubbo
9、分布式事务:分布式系统中的事务提交问题,消息队列,二阶段提交。三阶段提交等
10、分布式锁:解决分布式系统中的对同一资源的争用问题
11、分布式session:分布式系统中的session共享问题,一般通过redis实现
12、分布式队列:rocketmq、zk
13、分布式ID:分布式系统中生成全局唯一ID,snowflake
14、单点登录:多系统间权限校验问题,提升用户体验,JWT
15、持续集成:jenkis + git + shell等,自动化部署
16、大数据:海量数据存储、分析
评论