根据当周学习情况,完成一篇学习总结
本周两次课,讲解的主要是大型互联网应用架构的特点、面临的挑战、主要采取的各种技术方法。李老师详细讲解了维基百科、淘宝、微博等大型互联网公司的架构,及宅米网这类初创公司的架构演进历程。俗话说,冰冻三尺非一日之寒。互联网应用架构也不是一夜间就建设起来的,是伴随业务不断发展而不断演进的。很多人随口就来的高并发与大流量等,实际上是大型互联网应用才会有的业务需求。
目前业界的主要的大型互联网应用架构的发展大概经历了以下阶段:
- 单体应用阶段;
- 应用数据分离阶段;
- 缓存应用阶段;
- 负载均衡/应用集群阶段;
- 数据库读写分离阶段;
- 使用反向代理和 CDN 加速网站响应速度阶段;
- 使用分布式文件系统和分布式数据库阶段;
- 使用 NoSQL 和搜索引擎阶段;
- 拆分业务,微服务化,中台化阶段;
- 智能算法应用阶段。
架构模式的存在就是为了解决架构存在的问题而总结出来的一套方法论。互联网架构模式,则是为解决互联网应用系统的高性能、高可用、高伸缩、安全等目标,而被众多互联网公司采用的解决方案。主要采用的互联网架构模式包括:分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全。
典型的互联网架构示意图如下:
各层主要采用的技术方案包括:
1) 前端架构层:
- APP/Web 开发技术
- 浏览器/HTTP 优化技术
- CDN
- 动静分离
- 图片服务
- 反向代理
- DNS
2) 网关及应用层架构层:
- 网关架构
- 负载均衡
- 动态页面静态化
- 业务拆分
3) 服务层架构层:
- 分布式文件系统
- 分布式关系型数据库
- NoSQL 数据库
4) 后台架构层:
- 大数据平台
- 搜索引擎
- 推荐引擎
- 数据仓库
5) 运维与安全层:
- 数据采集与展示
- 数据监控与报警
- 攻击与防护
- 数据加密与解密
第二次课的时候,主要是架构案例分析,我印象很深刻的一点,就是李老师强调的,架构要适应业务,而不是非得用上重量级的武器,架构要与业务相匹配,为业务发展保驾护航。回想我们公司,业务架构也从最开始的单体应用(Spring + Structs,前后台部署在一起)的模式,切换到目前主流分布式微服务架构方案---Spring Cloud,由注册中心 Eureka 负责微服务的注册与发现,由微服务网关 Zuul 统一做鉴权并提供对外服务,Feign+Ribbon 则基于 HTTP 协议实现不同微服务之间的负载均衡与调用。目前来说,还缺少调用链监控与微服务的配置中心,服务也缺少容器自动化部署方案,有待进一步学习与探索。期待公司能有朝一日变成大型公司,而我也能成长为技术方面的牛人吧!