网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即 100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合 起来,一共有12种。下面看下汇总表:
从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的 影响较为明显,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器 进行的压测,对CPU和memory的影响都差不多在10%之内。
四. 链路追踪的实际应用预览
4.1 捋清业务
我们都知道,在一般场景下,我们很难直观的了解系统的运行、业务的流程,因为传统的都是文字需求说明和枯燥的代码。通过链路追踪,可以根据调用链路来捋清楚服务间的调用关系,如果 API 设计符合规范,甚至可以直观的了解调用的服务作用。这对于刚刚接触系统的开发人员十分重要。
4.2 分析耗时
链路的基本功能,服务间的调用耗时记录,如果服务耗时过长,会影响整体的用户体验,甚至会抛出超时异常等,这样的情况在微服务架构中也是时有发生。
4.3 可视化错误
微服务调用链路发生错误,可以直观的显示查看,定位到被调用服务的接口,及时排查微服务中错误原因。
4.4 优化链路
显示完整的调用链路,根据业务分析合理性、可读性、健壮性,是否重复调用某一个服务,是否链路过长,有没有可以优化的,链路是否清晰。有些场景比较复杂,比如数据中心比较分散,服务分布在不同的数据中心,但是服务中心之间因为地域原因,距离远,延迟高,这可能不符合设计要求,因此就要根据链路来找到最近的数据中心,然后配置调用最近的数据中心的服务。
4.5 生成网络拓扑
通过服务追踪系统中记录的链路信息,可以生成一张系统的网络调用拓扑图,它可以反映系统都依赖了哪些服务,以及服务之间的调用关系是什么样的,可以一目了然。除此之外,在网络拓扑图上还可以把服务调用的详细信息也标出来,也能起到服务监控的作用。
4.6 SkyWalking 主要功能特性
- 多种监控手段,可以通过语言探针和service mesh获得监控的数据;
- 支持多种语言自动探针,包括 Java,.NET Core 和 Node.JS;
- 轻量高效,无需大数据平台和大量的服务器资源;
- 模块化,UI、存储、集群管理都有多种机制可选;
- 支持告警;
- 优秀的可视化解决方案;
五. 使用Docker安装部署SkyWalking
5.1 查看官网版本
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking/
文档: https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档: https://skyapm.github.io/document-cn-translation-of-skywalking/
从官网可以看出 最新版本已经9.0版本了,但是我们使用es作为存储最好是使用明确存储了方式的版本 8.7.0
5.1 拉取镜像
5.1.1 尝鲜版
docker pull elasticsearch:7.12.0
默认es存储数据镜像
docker pull apache/skywalking-oap-server:8.7.0-es7
webUI界面镜像
docker pull apache/skywalking-ui:8.7.0
制作微服项目镜像
docker pull openjdk:8-alpine3.9
5.1.2 稳定版
docker pull elasticsearch:7.9.0
默认es存储数据镜像
docker pull apache/skywalking-oap-server:8.1.0-es7
webUI界面镜像
docker pull apache/skywalking-ui:8.1.0
制作微服项目镜像
docker pull openjdk:8-alpine3.9
5.1.3 备份镜像
最新版:
docker save apache/skywalking-oap-server:8.7.0-es7 apache/skywalking-ui:8.7.0 elasticsearch:7.12.0 -o skywalking8.7.0.tar
稳定版:
docker save apache/skywalking-oap-server:8.1.0-es7 apache/skywalking-ui:8.1.0 elasticsearch:7.9.1 -o skywalking8.1.0.tar
5.2 docker-compose 启动SkyWalking
5.2.1 docker-compose的安装
- 下载v2.2.2版本的docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composeln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose --version
- 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 测试安装是否成功
5.2.2 编写SkyWalking的docker-compose文件
这里使用最新版本的Skywalking镜像
version: '3'
services:
es7:
image: elasticsearch:7.12.1
container_name: es7
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
volumes:
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
ports:
- 9200:9200
- 9300:9300
oap:
image: apache/skywalking-oap-server:8.7.0-es7
container_name: oap
depends_on:
- es7
links:
- es7
ports:
- "11800:11800"
- "12800:12800"
healthcheck:
test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: es7:9200
SW_HEALTH_CHECKER: default
TZ: Asia/Shanghai
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms2048m -Xmx2048m"
ui:
image: apache/skywalking-ui:8.7.0
![img](https://img-blog.csdnimg.cn/img_convert/ff6f5ecc3848fce980f7056d6cf4104a.png)
![img](https://img-blog.csdnimg.cn/img_convert/cab270026cb0fe4dfc9b33f9bb350676.png)
![img](https://img-blog.csdnimg.cn/img_convert/a16e985e0f6e862056b2eeb4fa3c8521.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**