1.1.1.1 log4j2的链接步骤
1.1.1.2 log4j2配置文件的编写,Trace、Span的输出
1.1.1.3 与logback架构的对比
1.1.1.4 log4j2的优点
1.1.1.4.1 高性能、异步化
1.1.1.4.2 插件化易扩展
1.1.1.4.3 Garbage free、自动降级
1.1.2.1.1 串联调用链
1.1.2.1.2 理清服务依赖关系
1.1.2.1.3 接口性能分析
1.1.2.1.4 跟踪业务处理流程
1.1.2.3.1.1 优点
1.1.2.3.1.1.1 spring组件集成
1.1.2.3.1.1.2 Zipkin输出
1.1.2.3.1.1.3 支持HTTP\MQ
1.1.2.3.1.2 基本概念
1.1.2.3.1.2.1 Trace
1.1.2.3.1.2.2 Span
1.1.2.3.1.2.3 Annotation
1.1.2.3.2.1 引入依赖
1.1.2.3.2.2 日志配置添加追踪变量
1.1.2.3.2.3 配置文件添加Sleuth配置及Zipkin配置
1.1.2.3.3.1 发启调用,通过traceid来跨服务查看日志
1.1.2.3.3.2 构造调用出错情况,观察Zipkin UI的输出
1.1.2.3.4.1 搭建步骤
1.1.2.3.4.2 观察Zipkin ui的服务调用输出
1.1.2.3.4.3 查看服务间的依赖
1.1.3.1 ELK架构
1.1.3.1.1 Logstash
1.1.3.1.1.1 组成部分
1.1.3.1.1.1.1 input plugin
1.1.3.1.1.1.1.1 file
1.1.3.1.1.1.1.1.1 path
1.1.3.1.1.1.1.1.2 sincedb_path
1.1.3.1.1.1.1.1.3 codec
1.1.3.1.1.1.1.1.4 multiline支持多行输出
1.1.3.1.1.1.2 out plugin
1.1.3.1.1.1.2.1 grok,编写日志表达式
1.1.3.1.1.1.3 filter plugin
1.1.3.1.1.2 安装
1.1.3.1.2 Elasticsearch
1.1.3.1.2.1 基本概念
1.1.3.1.2.1.1 index
1.1.3.1.2.1.2 Mapping
1.1.3.1.2.1.3 Shard
1.1.3.1.2.1.4 Replicas
1.1.3.1.2.2 安装
1.1.3.1.3 Kibana
1.1.3.1.3.1 Management
1.1.3.1.3.1.1 添加index
1.1.3.1.3.2 Dev Tools
1.1.3.1.3.2.1 操作ES
1.1.3.1.3.3 Discover
1.1.3.1.3.3.1 日志检索及语法
1.1.3.1.3.4 Visualize
1.1.3.1.3.4.1 图表统计
1.2.1.1.1 基于session的身份认证
1.2.1.1.2 基于Token的身份验证
1.2.1.1.3 基于JWT的token身份认证
1.2.1.2.1 鉴权时序图
1.2.1.3.1 优点
1.2.1.3.1.1 安全性高
1.2.1.3.1.2 自包含
1.2.1.3.1.3 跨语言
1.2.1.3.1.4 支持过期、发布者校验
1.2.1.3.2 注意事项
1.2.1.3.2.1 消息体可被base64解密成明文
1.2.1.3.2.2 JWT不适合放大量信息
1.2.1.3.2.3 无法作废未过期的JWT
1.2.2.1 BFF
1.2.2.2 聚合服务
1.2.2.3 瓶颈
1.2.3.1 zuul
1.2.3.2 Kong
1.2.4.1 限流
1.2.4.2 鉴权
1.2.4.3 跨域
1.2.4.3.1 SpringBoot CORS
1.2.4.4 日志
1.2.4.5 路由
1.3.1.1 异常处理器ExceptionHandler
1.3.1.2 异常到错误码的映射
1.3.2.1 在服务提供者添加logbook filter输出日志
1.3.2.2 在服务消费者工程HttpClient添加logbook拦截器
1.3.2.3 日志输出格式http、curl、json
1.3.3.1 用户服务接口设计
1.3.3.2 房产服务接口设计
1.3.3.3 评论博客服务接口设计
1.4.1.1.1 Eureka简介
1.4.1.1.2 创建Eureka Server的步骤
1.4.1.1.3 Eureka配置项的含义
1.4.1.1.3.1 保护模式
1.4.1.1.3.2 自注册
1.4.1.1.3.3 续约过期时长
1.4.1.1.3.4 续约心跳间隔
1.4.1.1.3.5 监控检查上报
1.4.1.1.4 创建服务提供者步骤
1.4.1.1.5 创建服务消费者的步骤
1.4.1.1.6 Eureka DashBoard监控项含义
1.4.1.1.7 实验
1.4.1.1.7.1 一般性实验
1.4.1.1.7.1.1 观察服务启动对应注册中心Eureka的变化
1.4.1.1.7.1.2 观察服务平滑停止对应注册中心Eureka的变化
1.4.1.1.7.1.3 观察服务墙绘停止对应注册中心Eureka的变化
1.4.1.1.7.1.4 触发保护模式开启后的效果
1.4.1.1.7.1.5 开启健康上报,当服务不健康时对应注册中心Eureka的变化
1.4.1.1.7.2 高可用实验
1.4.1.1.7.2.1 关闭所有Eureka Server观察服务运行情况
1.4.1.1.7.2.2 高可用模式下关闭一个Eureka Server观察服务运行情况及注册表的变化
1.4.1.1.8 高可用集群搭建
1.4.1.1.8.1 搭建两个Eureka Server互相注册
1.4.1.1.8.2 创建两个配置文件,通过制定不同profile来启动
1.4.1.1.9 图解SpringCloud Eureka的工作原理
1.4.1.1.10 SpringCloud Eureka的核心特性
1.4.1.1.10.1 高可用
1.4.1.1.10.2 用户认证
1.4.1.1.10.3 Client对注册表缓存
1.4.1.1.10.4 保护模式(解决网络分区问题)
1.4.1.1.10.5 支持通过健康状态判断服务存活
1.4.1.1.10.6 RESTFul API(REST端点)
1.4.1.1.11 SpringCloud Eureka的缺点
1.4.1.1.11.1 不支持事件通知
1.4.2.1.1 Spring RestTemplate介绍
1.4.2.1.2 创建RestTemplate Bean
1.4.2.1.2.1 创建HttpClient Bean
1.4.2.1.2.1.1 连接复用
1.4.2.1.2.1.2 最大连接数
1.4.2.1.2.1.3 单个IP最大连接数
1.4.2.1.2.1.4 读超时
1.4.2.1.2.1.5 连超时
1.4.2.1.2.1.6 添加拦截器支持Httplog输出
1.4.2.1.2.2 集成HttpClient
1.4.2.1.2.3 集成Fastjson作为序列化工具
1.4.2.1.2.4 添加@LoadBalanced注解
1.4.2.1.2.5 同时支持连接池、直连、负载均衡
1.4.2.1.3 对RestTemplate进行分装
1.4.2.1.4 约定服务接口数据协议
1.4.2.1.4.1 通信协议结果对象
1.4.3.1 SpringCloud Ribbon
1.4.3.1.1 Ribbon介绍
1.4.3.1.2 接入Ribbion
1.4.3.1.2.1 服务消费者接入ribbion的步骤(通过Eureka方式)
1.4.3.1.2.2 服务消费者接入ribbion的步骤(脱离Eureka方式)
1.4.3.1.3 自定义Ribbon配置
1.4.3.1.3.1 Java代码方式自定义Ribbion配置
1.4.3.1.3.1.1 创建客户端配置
1.4.3.1.3.1.1.1 IPing(发送ping)Bean
1.4.3.1.3.1.1.2 IRule(负载均衡策略)Bean
1.4.3.1.3.1.2 通过@RibbonClient指定客户端配置类
1.4.3.1.3.2 使用属性自定义Ribbion配置
1.4.3.1.3.2.1 配置属性前缀
1.4.3.1.3.2.2 配置负责均衡策略
1.5.1.1 易测试
1.5.1.2 易开发
1.5.1.3 易部署
1.5.2.1 复杂性高
1.5.2.2 交付率低
1.5.2.3 伸缩性差
1.5.2.4 可靠性差
1.5.2.5 阻碍技术创新
1.5.4.1 易于开发维护
1.5.4.2 独立部署
1.5.4.3 伸缩性强
1.5.4.4 与组织结构相匹配
1.5.4.5 技术异构性
1.5.5.1 服务拆分
1.5.5.2 数据一致性
1.5.5.3 服务通信
1.5.5.4 服务网关
1.5.5.5 高可观察
1.5.5.6 可靠性
1.5.6.1 代码脚手架
1.5.6.2 为每个微服务分配独立数据库
1.5.6.3 正确对待共享库
1.5.6.4 自动化部署
1.5.6.5 持续化集成
1.5.6.6 单体架构向微服务架构迁移的时机
1.5.6.7 SOA VS 微服务
1.6.1.1 单一职责
1.6.1.2 高内聚低耦合
1.6.1.3 团队结构(康威定律)
1.6.1.4 服务拆分粒度适中
1.6.1.5 演进式拆分
1.6.3.1 分析业务模型
1.6.3.2 划分限定上下文
1.6.3.3 确定服务边界(分析共享模型)
1.6.4.1 用户库
1.6.4.2 房产库
1.6.4.3 评论库
1.6.5.1 API Gateway
1.6.5.2 房产服务
1.6.5.3 用户服务
1.6.5.4 评论服务
1.7.4.1 满足功能性需求
1.7.4.2 考虑非功能性需求(扩展性、稳定性、可维护性、伸缩性、高可用、高性能)
1.7.4.3 好的架构是演进来的
1.7.4.4 KISS原则、最小化产品
1.7.5.1 网关服务
1.7.5.2 业务服务
1.7.5.2.1 用户服务
1.7.5.2.2 评论服务
1.7.5.2.3 房产服务
1.7.5.3 监控
1.7.5.4 日志聚合
1.7.5.5 基础组件
1.7.5.6 存储
1.8.2.1 可靠事件模式
1.8.2.2 补偿模式Sagas
1.9.1.1 发生过程
1.9.1.2 解决方法
1.9.1.2.1 舱壁隔离
1.9.1.2.2 超时控制
1.9.1.2.3 服务降级
1.9.1.2.4 熔断机制
1.9.2.1 断路器工作流程
1.9.3.1 接入步骤
1.9.3.2 Hystrix的核心配置
1.9.3.2.1 断路策略(线程池or信号量)
1.9.3.2.2 超时时间
1.9.3.2.3 断路休眠时间
1.9.3.2.4 线程数量
1.9.3.2.5 数据收集时间窗口
1.9.3.2.6 断路开关阀值
1.9.3.3 降级方法的编写与最佳实践
1.9.4.1 模拟级联故障的场景观察线程执行情况
1.9.4.2 编写频繁发请求脚本观察线程池是否占满及日志输出
1.9.4.3 执行发请求脚本最终观察有无断路器开关打开的日志
1.9.4.4 断路器打开后等待10秒观察是否恢复
1.9.5.1 5种状体
1.9.5.2 服务调用QPS
1.9.5.3 服务调用平均延时
1.9.5.4 错误率
1.9.5.5 服务调用线程池运行情况
1.10.1 深度使用
1.10.2 积累疑问
1.10.3 找到源码入口
1.10.4 图形梳理强化记忆