课程简介
互联网架构师应该如何设计大规模互联网系统架构?本课程从介绍一个典型的大规模互联网系统架构出发,深入讨论了互联网架构中接入层、逻辑层、数据层(又分为数据库层与缓存层)的设计准则、关键技术与常见实践。
目标收益
通过学习本课程,学员能够真实掌握实现一个典型的大规模互联网架构所涉及的技术、常见的问题与解决方案、多种解决方案各自的优缺点、在不同业务场景下的技术选型,有效的启发思路、激发兴趣、掌握大规模互联网架构中解决问题的基本方法。
培训对象
各类互联网/IT/软件企业和研发机构的软件架构师、软件设计师、程序员。对于有明确互联网产品业务需求的个人和团队,效果更佳。
课程大纲
一、大规模互联网系统架构与设计核心准则 |
(1)典型大规模互联网系统架构 (2)可用性的概念以及设计准则 (3)扩展性的概念以及设计准则 (4)负载均衡的概念以及设计准则 (5)一致性的概念以及设计准则 |
二、互联网架构【接入层】核心技术与架构实践 |
(1)http接入层核心技术与架构实践 1.1)http接入层可用性设计 1.2)http接入层扩展性设计 1.3)http接入层负载均衡设计 1.4)http接入层session一致性设计 1.5)DNS轮询的原理与实践 1.6)反向代理技术的原理与实践 1.7)lvs与keepalived的原理与实践 1.8)APP接入的DNS优化 1.9)动静分离与cdn 1.10)典型的http接入层架构设计总结 (2)cdn技术的原理与启示 2.1)cdn简介 2.2)cdn的原理与使用场景 2.3)源站实践 2.4)镜像站与数据推拉同步实践 2.5)数据一致性实践 2.6)智能DNS的核心技术 2.7)回源的概念与预防 (3)tcp接入层核心技术与架构实践 3.1)tcp接入层可用性设计 3.2)tcp接入层扩展性设计 3.3)tcp接入层负载均衡设计 3.4)tcp接入层session的设计、超时检测、session踢出设计 3.5)单机接入20wTCP连接的核心技术 3.6)典型的tcp接入层架构设计总结 (4)接入层安全性设计 (5)典型系统实战-tcp消息推送系统的架构与实践 5.1)tcp消息推送系统解决什么问题 5.2)tcp消息推送系统架构简介 5.3)tcp消息推送系统核心业务流程c2s/s2c/c2c 5.4)聊天消息的可靠投递 5.5)系统消息投递优化 5.6)离线消息的特殊性设计 |
三、互联网架构【逻辑层】核心技术与架构实践 |
(1)接入层线程模型与逻辑层线程模型实现细节 1.1)并发的基本概念 1.2)接入层线程模型简介(IO线程与work线程异步) 1.3)接入层线程模型存在的问题 1.4)逻辑层线程模型简介(纯异步) 1.5)单进程单线程如何做到1Wqps并发核心技术 1.6)纯异步高并发服务模型总结 (2)逻辑层可用性、扩展性、负载均衡性设计与实践 2.1)连接池技术 2.2)id串行化技术 2.3)异构服务负载均衡技术与保险丝算法 (3)互联网逻辑层核心组件与服务 3.1)DAO与ORM的应用场景与解决的问题 3.2)配置中心解决的问题与实践 3.3)消息总线解决的问题与实践 (4)典型系统实战-搜索系统设计与实践 4.1)搜索系统典型业务介绍 4.2)搜索系统典型架构设计 4.3)搜索系统核心实现技术 |
四、互联网架构【数据层-固化存储】核心技术与架构实践(上) |
(1)数据库设计基本概念 (2)数据库架构-可用性设计与实践 2.1)读高可用设计 2.2)写高可用设计 2.3)实战解决方案 (3)数据库架构-读性能设计与实践 3.1)索引提速设计 3.2)从库扩容设计 3.3)缓存扩容设计 (4)数据库架构-一致性设计与实践 4.1)主从不一致解决方案 4.2)缓存不一致解决方案 (5)数据库架构-扩展性设计与实践 5.1)秒级扩容方案 5.2)字段扩展方案 5.3)数据迁移方案 (6)数据库架构-水平切分设计与实践 6.1)“单Key型”表结构水平切分 6.2)“1对多型”表结构水平切分 6.3)“多对多型”表结构水平切分 6.4)“多Key型”表结构水平切分 (7)数据库中间件与分库SQL实战 7.1)IN语句的玩法 7.2)非patition key上的SQL玩法 7.3)夸库分页的玩法 |
五、互联网架构【数据层-缓存存储】核心技术与架构实践(下) |
(1)缓存的概念与原理 (2)常见缓存的介绍与使用选型 2.1)memcache的介绍与使用场景 2.2)redis的介绍与使用场景 2.3)leveldb的介绍与使用场景 (3)不同业务场景对缓存的典型使用 3.1)只读非高可用业务缓存实践 3.2)只读高可用业务缓存实践 3.3)读写非高可用业务缓存实践 3.4)读写高可用业务缓存实践 (4)缓存架构设计核心 4.1)缓存的可用性设计 4.2)缓存的扩展性设计 4.3)缓存的负载均衡性设计 4.4)缓存的一致性设计 (5)典型系统实战-计数系统的设计与实践 5.1)计数系统典型业务介绍 5.2)列扩展计数系统的实践与缺陷(DB计数) 5.3)行扩展计数系统的实践与缺陷(DB计数) 5.4)KV缓存计数系统的实践与缺陷(缓存计数) 5.5)计数系统终极缓存优化方案 |
六、互联网架构典型协议设计 |
(1)协议的基本概念 (2)常用协议介绍 2.1)文本协议 2.2)二进制协议 2.3)流式xml/json协议 (3)系统设计协议选型 3.1)文本协议的优缺点与选型 3.2)二进制协议的优缺点与选型 3.3)流式xml/json协议的优缺点与选型 (4)协议设计细节 4.1)协议设计如何进行包错位检测 4.2)协议设计如何考虑兼容性 4.3)协议设计如何考虑扩展性 4.4)协议设计如何考虑可调试性 4.5)协议设计如何支持异步 4.6)协议设计如何支持变长 4.7)协议设计如何支持各类业务 5)典型协议设计实战 5.1)DNS系统协议设计 5.2)短域名服务协议设计 5.3)实时监控系统协议设计 5.4)通用统计协议设计 |
七、大作业实战 | 注:所有内容均来自互联网一线案例 |
一、大规模互联网系统架构与设计核心准则 (1)典型大规模互联网系统架构 (2)可用性的概念以及设计准则 (3)扩展性的概念以及设计准则 (4)负载均衡的概念以及设计准则 (5)一致性的概念以及设计准则 |
二、互联网架构【接入层】核心技术与架构实践 (1)http接入层核心技术与架构实践 1.1)http接入层可用性设计 1.2)http接入层扩展性设计 1.3)http接入层负载均衡设计 1.4)http接入层session一致性设计 1.5)DNS轮询的原理与实践 1.6)反向代理技术的原理与实践 1.7)lvs与keepalived的原理与实践 1.8)APP接入的DNS优化 1.9)动静分离与cdn 1.10)典型的http接入层架构设计总结 (2)cdn技术的原理与启示 2.1)cdn简介 2.2)cdn的原理与使用场景 2.3)源站实践 2.4)镜像站与数据推拉同步实践 2.5)数据一致性实践 2.6)智能DNS的核心技术 2.7)回源的概念与预防 (3)tcp接入层核心技术与架构实践 3.1)tcp接入层可用性设计 3.2)tcp接入层扩展性设计 3.3)tcp接入层负载均衡设计 3.4)tcp接入层session的设计、超时检测、session踢出设计 3.5)单机接入20wTCP连接的核心技术 3.6)典型的tcp接入层架构设计总结 (4)接入层安全性设计 (5)典型系统实战-tcp消息推送系统的架构与实践 5.1)tcp消息推送系统解决什么问题 5.2)tcp消息推送系统架构简介 5.3)tcp消息推送系统核心业务流程c2s/s2c/c2c 5.4)聊天消息的可靠投递 5.5)系统消息投递优化 5.6)离线消息的特殊性设计 |
三、互联网架构【逻辑层】核心技术与架构实践 (1)接入层线程模型与逻辑层线程模型实现细节 1.1)并发的基本概念 1.2)接入层线程模型简介(IO线程与work线程异步) 1.3)接入层线程模型存在的问题 1.4)逻辑层线程模型简介(纯异步) 1.5)单进程单线程如何做到1Wqps并发核心技术 1.6)纯异步高并发服务模型总结 (2)逻辑层可用性、扩展性、负载均衡性设计与实践 2.1)连接池技术 2.2)id串行化技术 2.3)异构服务负载均衡技术与保险丝算法 (3)互联网逻辑层核心组件与服务 3.1)DAO与ORM的应用场景与解决的问题 3.2)配置中心解决的问题与实践 3.3)消息总线解决的问题与实践 (4)典型系统实战-搜索系统设计与实践 4.1)搜索系统典型业务介绍 4.2)搜索系统典型架构设计 4.3)搜索系统核心实现技术 |
四、互联网架构【数据层-固化存储】核心技术与架构实践(上) (1)数据库设计基本概念 (2)数据库架构-可用性设计与实践 2.1)读高可用设计 2.2)写高可用设计 2.3)实战解决方案 (3)数据库架构-读性能设计与实践 3.1)索引提速设计 3.2)从库扩容设计 3.3)缓存扩容设计 (4)数据库架构-一致性设计与实践 4.1)主从不一致解决方案 4.2)缓存不一致解决方案 (5)数据库架构-扩展性设计与实践 5.1)秒级扩容方案 5.2)字段扩展方案 5.3)数据迁移方案 (6)数据库架构-水平切分设计与实践 6.1)“单Key型”表结构水平切分 6.2)“1对多型”表结构水平切分 6.3)“多对多型”表结构水平切分 6.4)“多Key型”表结构水平切分 (7)数据库中间件与分库SQL实战 7.1)IN语句的玩法 7.2)非patition key上的SQL玩法 7.3)夸库分页的玩法 |
五、互联网架构【数据层-缓存存储】核心技术与架构实践(下) (1)缓存的概念与原理 (2)常见缓存的介绍与使用选型 2.1)memcache的介绍与使用场景 2.2)redis的介绍与使用场景 2.3)leveldb的介绍与使用场景 (3)不同业务场景对缓存的典型使用 3.1)只读非高可用业务缓存实践 3.2)只读高可用业务缓存实践 3.3)读写非高可用业务缓存实践 3.4)读写高可用业务缓存实践 (4)缓存架构设计核心 4.1)缓存的可用性设计 4.2)缓存的扩展性设计 4.3)缓存的负载均衡性设计 4.4)缓存的一致性设计 (5)典型系统实战-计数系统的设计与实践 5.1)计数系统典型业务介绍 5.2)列扩展计数系统的实践与缺陷(DB计数) 5.3)行扩展计数系统的实践与缺陷(DB计数) 5.4)KV缓存计数系统的实践与缺陷(缓存计数) 5.5)计数系统终极缓存优化方案 |
六、互联网架构典型协议设计 (1)协议的基本概念 (2)常用协议介绍 2.1)文本协议 2.2)二进制协议 2.3)流式xml/json协议 (3)系统设计协议选型 3.1)文本协议的优缺点与选型 3.2)二进制协议的优缺点与选型 3.3)流式xml/json协议的优缺点与选型 (4)协议设计细节 4.1)协议设计如何进行包错位检测 4.2)协议设计如何考虑兼容性 4.3)协议设计如何考虑扩展性 4.4)协议设计如何考虑可调试性 4.5)协议设计如何支持异步 4.6)协议设计如何支持变长 4.7)协议设计如何支持各类业务 5)典型协议设计实战 5.1)DNS系统协议设计 5.2)短域名服务协议设计 5.3)实时监控系统协议设计 5.4)通用统计协议设计 |
七、大作业实战 注:所有内容均来自互联网一线案例 |