面试官:“同学,你做的这几个项目都不错。但怎么问QPS你就胡说呢?”

news2024/10/6 10:37:31

作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!😄

这位同学,你比上一位面试者好多了,你的简历中做的几个项目都不错。既有业务项目,也有技术项目,看得出你对编程开发是有一定的经验积累的。那么我还想了解下,这些项目在运行中的一个数据效果是怎么样的。比如;tps、qps、响应时间、数据库负载等,都是什么情况,你用的什么监控工具。另外你这里还些了微服务的架构,那么微服务间的链路调用是怎么监控的。

咋样,是不一下就慌了。张口就喊:“java 崩盘!” 以前靠背题吹牛逼就能入职,现在得把吹的牛逼落地了。而越来越多的面试官也更喜欢用结果推过程,从过程中再考察细节。一上来就问八股文的越来越少了。

所以,做完项目,最好在配上对应的数据,这样才更有说服力。—— 所以本文小傅哥会教会你,如何配置一套全链路监控系统,并完成测试获取系统运行的数据。此外这是整套《@小傅哥 Java 简明教程》其中的一节,更多内容可以进入这里学习;https://bugstack.cn/md/road-map/road-map.html

一、章节目的

本章节通过 Docker 方式部署一套 skywalking 非入侵的全链路监控系统,并在对应的测试工程中通过 skywalking-agent 字节码增强组件,采集系统运行时的各项信息到 skywalking-ui 监控平台观察数据。

  • 官网:https://skywalking.apache.org/ - 如果你想了解更多关于此类系统的设计和实现,可以阅读小傅哥的《字节码编程》
  • 源码:https://gitcode.net/KnowledgePlanet/road-map/skywalking - 这是小傅哥整理好的一套可运行的监控和系统,读者可以下载后对照本文进行验证使用。

二、基本环境

  • Docker version 1.13.1
  • Docker compose - 用于在云服务器环境中执行的 docker-compose 文件
  • Portainer Docker 容器管理面板

以上内容安装,参考【Java简明教程/发布部署】:https://bugstack.cn/md/road-map/road-map.html - 发布部署

三、监控配置

skywalking 的安装,需要 elasticsearch - 存放数据、skywalking-oap 接收数据、skywalking-ui 界面展示。以及还需要一个 skywalking-agent 用于配置到应用程序中,采集监控数据。注意这些内容在官网中,都已提供,地址:https://skywalking.apache.org/downloads/

因为小傅哥这里提供了Docker的自动部署以及下载好了 skywalking-agent 所以你就不需要一个个去下载安装了。接下来小傅哥会分别介绍在本地环境云服务器两套环境安装,这样可以更加方便小伙伴做测试验证。

在进行下面的步骤前,请先下载 skywalking 监控工程;https://gitcode.net/KnowledgePlanet/road-map/skywalking

1. 本地环境

脚本/road-map/skywalking/docs/dev-ops/skywalking - 你可以打开工程找到这个位置,查看最新脚本。

version: '3.8'
services:
  elasticsearch:
    image: elasticsearch:7.16.2
    container_name: elasticsearch
    ports:
      - "9200:9200"
    healthcheck:
      test: [ "CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es_data:/usr/share/elasticsearch/data

  oap:
    image: apache/skywalking-oap-server:8.9.0
    container_name: oap
    depends_on:
      elasticsearch:
        condition: service_healthy
    links:
      - elasticsearch
    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: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      SW_HEALTH_CHECKER: default
      SW_TELEMETRY: prometheus
      JAVA_OPTS: "-Xms1024m -Xmx1024m"

  skywalking-ui:
    image: apache/skywalking-ui:8.9.0
    container_name: skywalking-ui
    depends_on:
      oap:
        condition: service_healthy
    links:
      - oap
    ports:
      - "9090:8080"
    environment:
      SW_OAP_ADDRESS: http://oap:12800
  • 在 Docker 安装并正确✅启动后,你就可以点击这个按钮了。它会帮你自动运行安装出整套的 skywalking 监控系统。非常方便。
  • 如果你点击红圈下面的单个按钮,那么代表的是只安装当前一个应用。
  • 你可以通过命令执行 skywalking-docker-compose.yml 的安装:/usr/local/bin/docker-compose -f /docs/dev-ops/skywalking/skywalking-docker-compose.yml up -d - 在云服务器端也是使用这个命令安装。

访问验证:http://localhost:9090/ - 我设置的端口是9090,如果你是其他的则需要修改。

2. 云服务器

  • 准备一台2核4G的云服务器,整个服务启动后会占用2-3G左右
  • 下载 ssh 工具,用于连接云服务。这里小傅哥推荐使用 Termius 非常好用!
  • docker-compose 安装,参考:https://bugstack.cn/md/road-map/road-map.html - 发布部署,Docker#7

2.1 文件上传

通过 ssh 的 sftp 工具,把 skywalking/docs 全部上传到云服务器。

2.2 执行脚本

[root@dev-ops ~]# cd /docs/
[root@dev-ops docs]# ls
dev-ops  skywalking-agent  sql
[root@dev-ops docs]# cd dev-ops/
[root@dev-ops dev-ops]# ls
environment  skywalking
[root@dev-ops dev-ops]# cd skywalking/
[root@dev-ops skywalking]# ls
skywalking-docker-compose.yml
[root@dev-ops skywalking]# /usr/local/bin/docker-compose -f /docs/dev-ops/skywalking/skywalking-docker-compose.yml up -d
[+] Building 0.0s (0/0)                                                                          
[+] Running 3/3
 ✔ Container elasticsearch  Healthy                                                         0.5s 
 ✔ Container oap            Healthy                                                         1.0s 
 ✔ Container skywalking-ui  Running                                                         0.0s

安装完成记得开放端口;

  • 9090 端口;skywalking-ui 界面端口
  • 11800 端口;监控数据上报端口

安装完成后就可以访问监控界面了;http://180.76.138.**:9090/ - 替换为你的IP地址

四、数据上报

监控数据的上报使用的是 Javaagent 技术,在程序编译时候通过字节码增强技术,在需要监控的位置自动加上额外的监控代码,来采集系统的运行数据。所以我们这里可以把 Javaagent 配置到程序启动上,也可以配置到 Docker 镜像打包上。

1. 程序启动 - 加入探针

配置到 IDEA 程序启动中,VM Options 参数:-javaagent:/Users/fuzhengwei/1024/KnowledgePlanet/road-map/skywalking/docs/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-app-dev -Dskywalking.collector.backend_service=127.0.0.1:11800

  • 注意修改;地址应用名IP【如果是云服务,就配置云服务的IP地址】

2. 镜像打包 - 加入探针

当程序需要运行在云服务的 Docker 容器了,就不能这样配置了,需要把配置打包到镜像里,更加方便执行。

# 基础镜像
FROM openjdk:8-jre-slim
# 作者
MAINTAINER xiaofuge
# 配置
ENV PARAMS=""
# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD /target/skywalking-app.jar /skywalking-app.jar
## 在镜像运行为容器后执行的命令
ENTRYPOINT ["java", "-Xmx512m", "-javaagent:/docs/skywalking-agent/skywalking-agent.jar", "-Dskywalking.agent.service_name=skywalking-app", "-Dskywalking.collector.backend_service=180.76.138.41:11800", "-jar", "/skywalking-app.jar"]
  • 注意;/docs/skywalking-agent/skywalking-agent.jar 这个是通过 SFTP 工具上传到云服务器端的。但不在 Docker 容器里,等部署程序的时候还需要做一次文件映射。

五、启动服务

如果你希望在把应用程序部署到云服务端,一种是通过 IDEA 连接 Docker 服务,另外一种是把应用程序的镜像发布到Docker Hub。这里我们通过 IDEA 连接 Docker 服务。参考:https://bugstack.cn/md/road-map/road-map.html - 开通 2375 端口,用完记得关闭。

脚本skywalking/src/bin/main/start.sh

CONTAINER_NAME=skywalking-app
IMAGE_NAME=fuzhengwei/skywalking-app:1.0
PORT=9091

echo "容器部署开始 ${CONTAINER_NAME}"

# 停止容器
docker stop ${CONTAINER_NAME}

# 删除容器
docker rm ${CONTAINER_NAME}

# 启动容器 skywalking-agent 下载:https://archive.apache.org/dist/skywalking/java-agent/8.9.0/apache-skywalking-java-agent-8.9.0.tgz
docker run --name ${CONTAINER_NAME} \
-p ${PORT}:${PORT} \
-v /docs/skywalking-agent/:/docs/skywalking-agent/ \
-d ${IMAGE_NAME}

#docker run --name skywalking-app \
#-p 9091:9091 \
#-v /docs/skywalking-agent/:/docs/skywalking-agent/ \
#-d fuzhengwei/skywalking-app:1.2

echo "容器部署成功 ${CONTAINER_NAME}"

docker logs -f ${CONTAINER_NAME}
  • 你可以在云服务执行 start.sh 脚本,或者直接复制 docker run 命令,去执行启动。
  • 注意;-v /docs/skywalking-agent/:/docs/skywalking-agent/ \ 是你的映射地址,只有这样才能拿到 skywalking-agent
  • 另外记得按照 MySQL【environment-docker-compose.yml】 到云服务以及执行 road-map.sql 文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子签名软件有哪些?10大电子签名平台盘点

目录 一、电子签名软件有哪些 1.e签宝:国内签名领域老大哥 2.上上签:开创SaaS电子签极简模式 3.法大大:数智化签约管理平台 4.数字认证:中国电子认证第一股 5.契约锁:主攻中大型客户无缝集成各类系统 6.安心签&…

持有NPDP产品经理证书可以加薪吗?

NPDP(New Product Development Professional)是指产品经理国际资格认证,由美国产品开发与管理协会(PDMA)所发起的唯一国际公认新产品开发专业认证。NPDP是集理论、方法与实践为一体的全方位知识体系,为公司组织层级进行规划、决策…

破圈丨2023年绿色积分消费返利:云联惠3.0升级版【循环购】商业模式

破圈丨2023年绿色积分消费返利:云联惠3.0升级版【循环购】商业模式 京东供应链商品/自营商品/供应商商品 平台上面产品超过300w款产品,均为京东供应链货品,由京东统一仓储和配送,从源头上面杜绝假冒伪劣产品的存在,然…

AI绘图是什么技术?前景如何?

大家好,我是权知星球,人工智能最近大火,各大应用领域层出不穷,今天跟大家讨论一下AI绘图是什么技术?前景如何? 人工智能绘图是什么? 人工智能绘画是指利用人工智能进行绘画的过程,属…

redhat 6.4安装oracle11g RAC (三)

为数据和快速恢复去创建ASM磁盘组 只在节点rac1执行即可,进入grid用户下 [gridrac1 grid]$ srvctl status asm -a ASM is running on rac2,rac1 ASM is enabled. [gridrac1 grid]$ ps -ef|grep lsnr|grep -v grep|grep -v ocfs|awk {print$9} LISTENER_SCAN1 LISTE…

Databend 开源周报 第 98 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 后台服务 Dat…

强化学习从基础到进阶-案例与实践[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

zerotier自建planet

ZeroTier 是一个由 C 开发的软交换机,可以让多台内网机器组成一个私有的局域网。ZeroTier 的节点分为三类: Planet Server: 官方的根服务器,用于记录和配置每个局域网下客户端信息(以下简称 Planet);Moon …

Qt学习10:MainWindow浅析

文章目录 QMainWindow的基本结构QMenuBarQToolBarQStatusBarQDockWidget QSystemTrayIcon 文章首发于我的个人博客:欢迎大佬们来逛逛 QMainWindow的基本结构 QMenuBar:菜单栏QToolBar:工具栏QDockWidget:浮动窗口QStatusBar&…

基于ENVI的遥感影像解译——以Landsat8数据为例(上)

遥感影像解译是一种指从图像获取信息的基本过程。即根据各专业(部门)的要求,运用解译标志和实践经验与知识,从遥感影像上识别目标,定性、定量地提取出目标的分布、结构、功能等有关信息,并把它们表示在地理…

火力全开,鏖战争锋|SCTF 2023圆满落幕!

2023年6月19日09:00,第八届XCTF国际联赛分站赛——SCTF 2023圆满落幕。本次赛事由XCTF国际联赛合作单位——成都信息工程大学Syclover战队组织,由赛宁网安提供技术支持。 经过持续48小时的夺旗厮杀,联合战队Nu1L最终力压群雄,夺得…

什么是mAP(mean average Precision)

Mean Average Precision,即 平均AP值 。AP(Average precision)单类标签平均(各个召回率中最大精确率的平均数)的精确率。AP: PR( Precision-Recall)曲线下面积,mAP(Mean Average Pre…

树莓派启用无密码 sudo

启用无密码 sudo,可以在不提供密码的情况下在树莓派上运行程序。 登录 Raspberry Pi 命令行界面。假设 Raspberry Pi 的默认用户名和密码分别为 pi 和 raspberry。在命令行界面中,键入以下命令: sudo nano /etc/sudoers 3. 通过添加以下行启…

被业务员缠着要数据,数据分析师除了加班还有第二种选择吗?

知乎的大数据给我推了这样一个问题:身为数据分析师,却被业务当做取数机? 热度很高,看来很多数据分析师有相似的处境。 作为一个数据分析师,大部分时间却忙于取数,即使996加班也忙不完,不仅没…

Word怎么删除空白页,4个方法轻松解决!

案例:我在编辑文档的时候会遇到空白页,我不能直接对它进行删除操作。我想知道如何删除Word里面的空白页?方法越简单越好! Word是广泛使用的办公软件之一,但有时在编辑文档时会遇到一些空白页的问题。空白页的存在可能…

阿里云学生验证流程(申请入口、学生认证图文教程)

阿里云学生用户完成学生认证可以领取一台阿里云服务器,那么问题来了,阿里云学生验证申请入口​在哪?阿里云百科分享阿里云学生验证入口网页链接及学生认证全流程: 目录 阿里云学生验证入口及申请流程 打开学生验证申请入口 支…

BUG越改越多?微信团队用自动化测试化险为夷

👉腾小云导读 作为后台开发 Coder,你可能会对以下场景感到似曾相识:历史上处理过的 BUG 反复横跳;版本兼容逻辑多,修复一个 BUG 触发了更多 BUG;上线时系统监控毫无异常,过段时间用户投诉某个页…

关于iOS16 以后屏幕旋转不得不说的事

由于笔者最近刚完成了一个强制屏幕横屏的需求 所以 顺便记录一下 实现过程中遇到 block点 也为广大的iOS开发者做一个笔记: 废话不多说直接上代码 //适配iOS16.0的横竖屏方法public static func switchInterfaceWtihIos16(orientation: UIInterfaceOrientation , o…

墨水屏服务更新及测试

一、更新墨水屏服务 ①删除tomcat/webapps/esls_new 缓存目录 ②替换新的esls_new.war ③重启tomcat,等待war包解压完成 ④修改数据库配置applicationContext-common.xml和回调接口配置urlConfig.properties ⑤重启tomcat 重启tomcat: tomcat/bin/shutdown.s…

我们还需要 SRE 吗?

在 「一文讲透研发,SRE,运维,DevOps 的区别」里,我们讲了几大工种的区别,这篇我们重点讲一下 SRE (Site Reliability Engineering)。 SRE 的兴起 SRE 最早起源于 2003,由 Google 提出。SRE 既是一种理念&a…