【课程背景】
随着互联网时代的到来,数据量急剧增加,并发量也越来越大,用户对于系统的体验和要求也变得越来越高,从而对系统可靠性、性能及可扩展性目标也提出了更大的挑战,企业的架构设计和开发人员熟悉业界主流成熟中间件的使用方法和场景就显得尤为重要。
本课程围绕业界主流成熟中间件,以场景化案例方式贯穿整个课程,让学员不仅掌握常用成熟中间件的使用方法和场景,同时也能深刻理解如何高效使用和运维中间件,从而最终达到提高软件整体的可靠性、性能及可扩展性的目标,从而满足公司数字化转型和中心市场化转型的技术需要。
【课程收益】
Ø 掌握业界主流中间件应用场景
Ø 掌握业界主流中间件技术选型
Ø 掌握业界主流中间件的底层原理
Ø 掌握业界主流中间件的最佳实践
【课程对象】CTO、技术总监、研发负责人、架构师、研发工程师、售前技术工程师、运维工程师
【课程时间】1天
【课程大纲】
一、中间件概述及应用场景
1、中间件相关概念
Ø 中间件的定义
Ø 为什么使用中间件
2、中间件分类及应用场景
Ø 消息中间件及应用场景分析
Ø 缓存类中间件及应用场景分析
Ø 分布式协调类中间件及应用场景分析
Ø 检索类中间件及应用场景分析
Ø 链路跟踪类中间件及应用场景分析
Ø 链路跟踪类中间件及应用场景分析
Ø 日志采集类中间件及应用场景分析
Ø 主流微服务中间件及应用场景分析
Ø 数据库中间件之应用场景分析
案例:亿级流量分布式架构设计思路
二、缓存类中间件
1、缓存
Ø 缓存的定义
Ø 缓存能解决什么问题?
Ø 缓存架构之分布式缓存与集中式缓存
Ø 缓存的基本原则
2、分布式缓存
Ø 分布式缓存的持久化
Ø 分布式缓存的高可用
Ø 分布式缓存的横向扩展
Ø 分布式缓存常见业务场景分析
Ø 多级缓存
3、分布式缓存之Redis
Ø 分布式缓存的持久化
Ø 分布式缓存的高可用
Ø 分布式缓存之Redis
Ø Redis常用数据结构及其应用场景
Ø Redis高级特性:发布/订阅、过期设置、事务支持
Ø Redis持久化策略之rdb与aof
Ø Redis主从复制
Ø Redis集群
Ø Redis集群扩容
Ø 如何避免缓存失效,降低缓存性能?
Ø 缓存雪崩原理以及如何应对?
Ø 热点缓存key重建,优化性能
Ø Key高性能巧妙设计必须遵循的规范
Ø Redis降低性能的慎用命令
Ø Redis过期清除策略
案例:基于redis实现的缓存会话共享案例分析
上机实战:redis集群搭建与部署
上机实战:基于redis实现热数据缓存
上机实战:基于redis实现分布式锁
三、消息类中间件
1、消息类中间件
Ø 分布式系统之同步调用案例分析
Ø 分布式系统同步调用存在问题与优化方向
Ø 消息队列之分布式系统异步调用案例分析
Ø 消息队列之削峰填谷案例分析
Ø 消息中间件选型与对比
Ø 消息队列编程模型之点对点
Ø 消息队列编程模型之发布/订阅
2、消息中间件之Kafka
Ø 分布式系统之同步调用案例分析
Ø 分布式消息系统之Kafka
Ø Kafka数据分段
Ø Kafka应用模型
Ø Kafka集群部署架构
Ø Kafka相关术语
Ø Kafka下载和安装
Ø Kafka topic管理
Ø Kafka消息的收发
Ø Kafka单播、多播
Ø Kafka消费者分组及偏移量
Ø Kafka的日志
Ø Kafka集群配置与消息的收发
Ø Kafka调优
Ø 如何避免消息重复消费?
Ø 如何避免消息堆积?
Ø 延时队列使用
Ø 如何提升消息丢列的消息并发消费能力?
案例:基于kafka设计的千万级账单推送系统
实战:微服务架构下基于消息队列实现微服务间数据最终一致性
四、分布式协调类中间件
1、分布式协调中间件
2、分布式协调中间件之ZooKeeper
Ø ZooKeeper诞生的背景和它的作用
Ø ZooKeeper单机版安装、常用命令
Ø ZooKeeper集群版的安装、节点角色
Ø ZooKeeper的接入和使用
Ø ZooKeeper运行机制剖析
Ø ZooKeeper的典型应用场景与实现思路
Ø ZooKeeperWatch机制的运行流程
案例:基于ZooKeeper实现的服务注册与发现
五、检索类中间件
1、全文检索
Ø 全文检索的定义
Ø 全文检索解决了什么问题?
Ø 搜索引擎的应用场景
2、分布式检索与分析之ElasticSearch
Ø 搜索引擎的应用场景
Ø 分布式检索与分析之ElasticSearch
Ø ElasticSearch VS Lucence
Ø ElasticSearch VS Solr
Ø 分词技术与原理
Ø 分词之倒排索引
Ø 基于倒排索引实现的案例演示
Ø ElasticSearch的核心概念
Ø ElasticSearch副本集定义与原理
Ø ElasticSearch分片定义与原理
Ø ElasticSearch安装与配置注意事项
Ø ElasticSearch可视化之Kibana
Ø IK分词器的应用
Ø ElasticSearch数据管理与基本操作
Ø ElasticSearch的查询
Ø ElasticSearch批量文档处理
Ø ElasticSearch文档映射
Ø ElasticSearch集群环境与原理深入剖析
案例:基于ElasticSearch实现的热搜评论
六、链路跟踪类中间件
1、微服务架构面临问题
Ø 如何快速发现问题?
Ø 如何判断故障影响范围?
Ø 如何梳理服务依赖及依赖的合理性?
Ø 如何分析链路性能问题及实时容量规划
2、微服务分布式链路追踪技术实现
Ø 分布式链路追踪的定义与应用
Ø 分布式链路追踪之Spring Cloud Sleuth
Ø Spring Cloud Sleuth相关概念
Ø Spring Cloud Sleuth链路跟踪数据实现
Ø Zipkin实现链路跟踪数据的收集、存储、查找和展现
Ø 基于Zipkin+Sleuth整合
Ø 如何提升链路跟踪数据的存储性能?
Ø 如何确保链路跟踪数据不被丢失?
Ø 如何确保链路跟踪服务端离线期间数据的留存?
Ø 与Skywalking对比
七、日志采集类中间件
1、日志分析面临问题
Ø 传统日志系统存在问题分析
Ø 如何实现日志统一搜集、统一存储、统一查询?
2、日志中心解决方案ELK
Ø ELK应用案例分析
Ø ELK核心组成
Ø ELK之ElasticSearch
Ø ELK之logstash
Ø ELK之kibana
Ø ELK之工作流程剖析
Ø ELK常见应用架构
Ø ELK典型应用架构
Ø 海量日志的ELK集群架构
案例:基于ELK实现的访问日志分析
八、主流微服务中间件
1、分布式系统下数据库面临问题
Ø 本地事务VS分布式事务
Ø 二阶段提交协议过程与原理分析
Ø 二阶段提交协议的缺点
Ø 三阶段提交
Ø 分布式事务的目标
Ø 分布式事务之强一致性应用场景
Ø 分布式事务之最终一致性应用场景
2、分布式事务框架之Seata
Ø 分布式事务框架之Seata
Ø Seata支持的4种模式
实战:微服务架构下基于Seata的4种模式实现微服务间数据强一致性
九、数据库中间件
1、分布式系统下数据库面临问题
Ø 什么是分库分表?
Ø 什么情况下需要分库分表?
Ø 分库分表之垂直分表
Ø 分库分表之垂直分库
Ø 分库分表之水平分表
Ø 分库分表之水平分库分表
Ø 分库分表带来的问题-跨库关联查询
Ø 分库分表带来的问题-分布式事务
Ø 分库分表带来的问题-排序翻页函数计算
Ø 分库分表带来的问题-全局主键避重
Ø 如何选择合适的数据分片键?分片键常用算法有哪些?
Ø 如何自定义分片键的算法?
2、分库分表主流中间件之客户端分库分表ShardingJDBC
Ø 分库分表主流中间件之客户端分库分表ShardingJDBC
Ø ShardingJDBC对于现有应用的SQL或ORM有什么要求或局限性?
Ø 分库分表主流中间件之服务端分库分表MyCat
Ø 分布式数据库NoSQL
实战:基于ShardingJDBC实现的分库分表之广播表、绑定表方案