Spring Boot 与 Kubernetes 云原生微服务实践 笔记 (5)

135 阅读2分钟

*time.geekbang.org/course/intr…

课程和背景介绍

课程重点是:微服务和云原生架构,运用Spring boot 和 kubernetes。_________________________________________________________________________________________________

可运维架构设计和实践

软件工程阶段可划分为:需求分析 -> 架构设计 -> 实现测试 -> 部署运维 。在部署运维之前,我们必须确保生产就绪(production ready)。生产就绪包含:功能测试OK,配置管理,日志监控,Metrics监控,健康检查(spring 内置),性能测试OK,高可用考量,扩展升级考量(灰度测试,蓝绿部署等),安全性考量,调用链监控

配置管理

列出了3中工具:Apollo,SpringCloudConfig,K8s ConfigMap

调用链监控

演进史:

2002 eBay CAL 第一个调用链监控工具

2010 Google Dapper论文 开启了调用链监控工具

2012 Twitter Zipkin 参考Google论文,并开源了项目

2015 Apache Skywalking 参考了Google论文,用Java开发

列出了3中工具:CAT,Zipkin,Skywalking

结构化日志和审计日志

结构化日志是有结构的,可以是json的,structlosg4j就是java平台的结构化日志库。

审计日志是记录关键操作的,也可以用于debug. 比如作为一个提供接口的微服务,可以在每一次调用某个接口的时候,可以记录是哪个服务调用的,哪个用户ID,操作的目标类型,目标ID,更新的内容。审计日志也可以是结构化的,便于管理。

除了ELK (Elastic search, logbash, kibana)可以收集和管控日志,还可以用Sentry(集中异常监控). 

监控架构的设计

EFK + K8s

推荐使用fluentd做日志收集,日志直接打印到console上,fluentd会收集所有docker中的日志。在发送给elk之前,可以在中间加一层kafka,目的是日志如果过大的话,可以通过kafka削弱对elk的压力。自己可以开发一个Log Parser,来做一个日志的过滤和解析,然后发送给elastic search。最后用kibana来查询elastic search中的日志。

Prometheus + K8s

Prometheus是业界metrics监控和告警的标配。用Micrometer即成Spring自带的Actuator来做数据收集。Prometheus是有发现服务的功能的。最后通过Alert manager做警告。用grafana做页面显示。

SkyWalking + K8s

SkyWalking是字节码注入。需要在应用中安装Skywalking Agent. 在java -jar启动的时候,需要带上。也可以直接用带有Skywalking Agent的基础镜像。是非侵入的,不用自己埋点。最后调用链存储在elastic saerch中。

_________________________________________________________________________________________________

cover了课程第七章的内容