【架构训练 Week04 作业】
作业1:一般大型互联网应用采用那些技术方案和手段,解决什么问题?
网关层
负载均衡:通过反向代理技术把大业务流量分配多个服务器节点,以避免全部流量到达到一个节点。通常直接采用云服务的负载均衡服务(如阿里云/Ucloud的网络负载均衡服务)。
网关架构:采用Kong网关服务,解决流量管理、基础接口安全验证等问题
业务拆分:通过领域驱动设计DDD拆解业务模块,并落实到微服务,增加可维护性,以避免多有业务都在某一个或者少数的某几个代码项目中。
服务层架构
微服务框架:通过成熟稳定的微服务框架,提供常规的基础的功能,提供可复用性,通常可以采用Gin、Lumen、Spring等框架
分布式消息队列:采用NSQ处理异步消息,它有分布式、高性能和低延时的特点,能很好地处理异步消息,以帮助系统异步解耦、削峰填谷等问题。
存储层框架
分布式文件存储:采用成熟的第三方存储服务,如七牛云文件存储、阿里云OSS等,解决海量静态文件存储
分布式关系数据库:随着数据量达到亿级甚至数十亿级,以及增速较快的问题,常规的分库分表已经难以满足需求,可以通过分布式关系数据库解决,如TIDB或阿里云的PolarDB和DRDS
本周学习总结
系统架构演进
本周主要学习了近20年互联网技术架构的演进,从传统的企业软件系统架构到互联网架构,传统系统特点是用户请求并发较小、企业内部大型软件、迭代较慢,而互联网系统往往请求是高并发、需求变化快。
系统架构演进的11个阶段
第0阶段:最简单的互联网应用架构:所有应用在同一台服务器
应用数据分离:应用服务器、数据库服务器、存储服务器
使用缓存改善系统的性能
使用应用服务器集群改善系统的并发处理能力(负载均衡)
数据库读写分离
使用反向代理和CDN加速网站响应
使用分布式文件系统和分布式数据库系统
使用NoSQL和搜索引擎
业务拆分
微服务和中台化
大数据和智能化
回顾自己经历的系统架构演进
上大学期间开发的软件系统,如给学校用的报修系统和课程系统,其架构就是第0阶段的“所有应用服务都在同一台服务器”。
后来毕业后开始经历了三家公司,从日均PV100万到现在5000万,所经历大略就是这第1到9的阶段。在这个过程中随着用户量、访问量的提升,开始出现一些问题和挑战,于是开始使用新技术来解决,如负载均衡、分布式文件存储、CDN加上、分布式数据库系统等。
按这个架构演进,也许三年五年后又会出现新的问题和挑战,当前的技术架构不能满足发展,要随时面对新挑战和拥抱变化,来学习和更新系统架构。
评论