系统架构

用户头像
wing
关注
发布于: 2020 年 10 月 18 日

本周是跟随李智慧老师学习架构师训练营的第四周,现将本周学习内容总结如下:

随着系统的演进、发展互联网系统往往面临着越来越多的挑战:随着用户量的增多面临着高并发、大流量的问题,随之而来的是海量的数据存储及处理问题。系统的高可用及安全问题也面临着巨大挑战。对于需求的频繁变更,需要版本快速迭代,部署、运维以及系统稳定性也面临着巨大挑战。

应对高并发的两个技术方向:

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、大数据:海量数据存储、分析

用户头像

wing

关注

还未添加个人签名 2018.05.13 加入

还未添加个人简介

评论

发布
暂无评论
系统架构