《Spring Cloud微服务实战》读书笔记
第一章 基础知识
微服务架构,与单体系统的区别,实施步骤(略),选择Spring Cloud,简介。
第二章 微服务构建:spring boot
SB框架简介,yaml,
配置文件加载顺序:
命令行
SPRING_APPLICATION_JSON中的属性(配置在系统环境变量的内容)
java:comp/env中的JNDI属性
Java的系统属性,可以通过System.getProperty获得
操作系统环境变量
random.*配置的随机属性
位于当前应用的jar包之外,针对不同{profile}环境的配置文件内容,application-{profile}.properties或者yaml文件内容
位于当前应用的jar包之内,针对不同{profile}环境的配置文件内容,application-{profile}.properties或者yaml文件内容
位于当前应用的jar包之外,application.properties和yaml的配置文件内容
位于当前应用的jar包之内,application.properties和yaml的配置文件内容
在@Configuration注解修改的类,通过@PropertySource定义的属性。
应用默认属性,使用SpringApplication.setDefaultProperties定义的内容。
第三章 服务治理:Eureka
第四章 客户端负载均衡:Ribbon
第五章 服务容错保护:Hystrix
第六章 声明式服务调用:Feign
第七章 API网关服务:Zuul
第八章 分布式配置中心:config
第九章 消息总线:Bus
第十章 消息驱动:stream
第十一章 分布式服务跟踪:Sleuth
形式:[appname, traceId, spanId, exportable]
跟踪原理:
- 唯一标志TraceId
- 统计各处理单元的延迟,引入SpanID,开始和结束两个节点信息,以及其他元数据。
sleuth自动为当前应用构建各通信通道的跟踪机制:
- 通过MQ传递请求
- 通过zuul代理传递的请求
- 通过RestTemplate发起请求
头信息在sleuth.Span源码里:X-B3-TraceId、X-B3-SpanId、X-B3-ParentSpanId、X-B3-Sampled、X-Span-Name。
抽样收集:
抽样收集策略是通过Sampler接口实现,默认使用PercentageBasedSampler接口,也可以使用AlwaysSampler。
与LogStash整合,创建bootstrap.properties文件(首先加载),其次加载logback-spring.xml,最后加载application.properties。除了logback配置的LogStash Appender,还可以使用LogStashTcpSocket-Appender将日志内容直接通过TCP socket输出到LogStash服务端。
与Zipkin整合
原因:ELK平台缺少对请求链路中各个阶段时间延迟的关注,以及延迟监控、时间消耗。
基于Google dapper。架构,四个核心组件:Collector、Storage、RESTful API、Web UI;
默认的收集方式是HTTP,可以换成MQ,减轻压力。
收集原理
Span:
Trace:
Annotation:
cs(Client Send):
sr(Server Received):
ss(Server Send):
cr(Client Received):
BinaryAnnotation:
数据存储
支持MySQL,ES,Cassandra等;注意选择的MySQL版本要和zipkin版本对应好,否则会出现问题。数据库的脚本在依赖zipkin-storage-mysql jar包里面可以找到:mysql.sql。
API接口
/api/v1/dependencies:GET
/api/v1/services:GET
/api/v1/span:GET
/api/v1/spans/:POST
/api/v1/trace/{traceId}:GET
/api/v1/traces/:GET,