简介
在大型网站架构的演变过程中,集中式的架构设计出于系统的可扩展性、可维护性以及成本等多方面的因素考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC server, 构建一个低成本、高可用、高可扩展、高吞吐的集群系统,以支撑海量的用户访问和数据存储,理论上具备无限的扩展能力。分布式系统的设计,是一门复杂的学问,它涉及到包括通信协议、远程调用,服务治理,系统安全、存储、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等方方面面,而本课程将为大家展现大型电商分布式网站的全貌。
目标
1.使学员深入了解大型分布式网站的概况和全貌
2.详细介绍大型电商网站所面临的一些常见场景
3.理解在不同场景下,该如何选择技术手段解决问题
4.理解大型网站稳定性保障、监控、性能优化、数据分析、数据挖掘等方方面面的知识
5.结合学员提问,介绍一些大纲中没有提到的知识点,帮助大家扩展知识面
课程时长
2天(12H)
受众人群
有一定java和linux基础的学员
分享提纲
第1天 | 方向 | 内容安排 |
3小时 | 大型分布式电商网站全貌及演变历程 | 集中式、垂直式、分布式应用架构的变迁思路 SOA体系架构,服务化的演变 SOA的基础--rpc远程调用 --rpc与通信协议 --对象序列化方式的选择 --异构系统还是同构系统 --远程调用的实现方式,基于http协议的远程调用,基于tcp协议的远程调用 服务的路由和负载均衡 --为什么需要服务治理 --服务的负载均衡,复杂环境下负载均衡所面临的问题(负载不均、多机房) --负载均衡算法及其扩展 --如何动态配置路由规则 --服务上线下线的动态感知 --客户端容灾方案的实现 --如何使用zookeeper实现服务路由和负载均衡 SOA架构所面临的问题 |
3小时 | 大型分布式网站的基础设施 | 分布式系统基础设施之缓存 --缓存的使用场景 --数据一致性的保障 --缓存的负载均衡问题,雪崩效应的产生 --如何解决缓存的负载均衡问题 --缓存的强依赖及可靠性的解决 --memcache的介绍及使用 分布式系统基础设施之持久化存储 --IOE太贵,无法扩展,mysql+pc server节约成本 --pc server的承载有限,业务拆分的实施,mysql复制策略 --读的压力过大,读写分离 --单表数据量太大,则分表 --写入压力太大,则分库 分布式系统基础设施之持久化存储 --为提升性能,mysql的取舍--海量数据,高并发写入,该hbase上场了 --hbase的api,row key的设计 --什么场景不适合使用hbase --小而美的redis,多种数据类型,快速存取 --redis数据类型的介绍,使用案例 分布式系统基础设施之消息系统 --消息系统的使用场景,为什么要使用消息系统 --消息发送的两种模式,p2p和订阅 --消息发送的一致性和可靠性,最终一致性解决方案 --消息投递的顺序问题的产生及消息内容的去重 分布式系统基础设施之垂直化搜索引擎 垂直化搜索的使用场景 基于lucene的搜索引擎的基本原理 --构建索引 --索引更新与查询 --结果排序 --高亮 --中文分词 --索引优化 --搜索引擎的扩展性 --使用搜索引擎所面临的问题 |
第二天 | 方向 | 内容安排 |
3小时 | 大型网站的稳定性保障 | 保障分布式系统的稳定性 在线日志分析及常用命令 在线日志分析的技巧,sed、awk、shell的及使用 如何查看服务器当前的状态,服务器的监控指标解析 --load、cup利用率 --磁盘剩余空间 --网络traffic --磁盘IO --内存使用 --qps、rt jvm gc对稳定性和性能的影响 如何分析jvm产生的gc日志 保障分布式系统的稳定性 集群监控及流量控制 --服务器的心跳检测实现方法 --大流量到来前,服务器的容量评估及应用水位的检测 --如何对流量进行控制 --服务稳定性的实现方案: 依赖管理&服务分级&优雅降级&开关&应急预案 高并发系统与普通系统的区别 --原子操作解决了什么问题 如何设计高并发系统 --java的多线程同步及锁的机制 --分布式条件下数据一致性及系统可扩展性的保障 --高并发条件下减库存的案例 性能优化--找出系统的性能瓶颈 --找出前端的性能问题 --监测网页的响应时间 --监测java方法的响应时间 |
3小时 | Workshop 老师&学员共同实现 | 1.实现一个分库分表的简单的case 2.jvm堆内存问题排查、常见参数的配置 3.监测java方法的响应时间 |