第四周学习总结
通过第四周的学习,概要地了解到一个典型的互联网系统的架构模式有哪些,主要要解决的问题是什么。
首先,与传统的应用系统类似,一个互联网的应用系统要满足两个方面的需求:功能性需求与非功能性需求。非功能性方面,主要要解决:高性能,高可用,可伸缩,可以扩展,安全等方面问题。
再者,对于一个通用的互联网应用架构,可以按功能从前到后,从上到下大致分成6层:前端,网关,服务,存储,后台,基础设施;同时安全、与监控贯穿6个层次。每个层次主要的技术点有:
前端:APP及WEB,浏览器,CDN,动静分离,图片,反向代理,DNS。
网关:网关,负载均衡,动态页面静态化,业务拆分
服务:微服务, service mesh,消息队列(rabbitmq, kafka, ),分布式缓存(redis, memcache),分布式一致性
存储:分布式文件,数据库,NOSQL(mongodb),HDFS, HBASE,
后台:大数据,搜索引擎,推荐引擎,数据仓库
基础设施:openstack, kubernetes, vpn
安全:WAF, IPS, 等
监控: zabbix, grafana, Prometheus, opentracing, jeaber等
然后,为了解决系统通用的架构问题,有一下常规的架构模式:
分层:横向维度上分几个部分。网关、微服务、应用,数据....
分割:纵向进行切分,按照业务进行分割。保持高内聚,低耦合。
分布式:不同的模块部署不同的服务器上,通过远程调用协调工作,可以使用更多的CPU,内存,存储资源
集群:对于单一业务多个访问节点。
缓存:对象缓存,页面缓存。
异步:提高系统可用,加快响应,消除并发高峰
冗余: 高可用
最后,通过分享分析了淘宝,宅米,wiki等网站的架构,将各种架构技术串在了一起,真实感触什么是架构,体会到了架构在一个系统中的意义。
评论