一种简单快捷的 java 热部署方式

简介: 本文热部署插件(Arthas Hot Swap)是基于 Arthas redefine 命令实现的,使用该插件进行远程热部署无需任何配置,无需使用 debug 端口,只需几个简单动作就能完成。

1.png

作者 | 周忠太 阿里巴巴淘系技术部的一个搬砖工

【Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿】

Arthas Hot Swap 插件介绍

引言

热部署是帮助开发人员提高效率的利器,如果你的开发语言是 java,开发环境是远程服务器,远程服务器 debug 端口被限制,那么你可能无法通过 debug HotSwap 实现热部署,那么本文介绍的 IntelliJ IDEA 插件可以帮助你在远程服务器实现热部署,而且操作简单快捷。

本文热部署插件(Arthas Hot Swap)是基于 Arthas redefine 命令实现的,使用该插件进行远程热部署无需任何配置,无需使用 debug 端口,只需几个简单动作就能完成。gitHub 地址:https://github.com/xxxtai/arthas-hotswap

使用方法

  1. IntelliJ IDEA 安装插件“Arthas Hot Swap”,从 gitHub Releases 下载安装包;
  2. 热部署使用的是 class 文件,所以需要先使用“mvn compile”编译相关工程,后续可以使用 IDEA 的 Recompile 编译单个文件,节省编译时间;
  3. 选择需要热部署的 java 源文件或者 class 文件,在类名或方法名上单击右键,选择“Arthas Hot Swap”的“Swap this class”,插件后台执行成功后会把热部署需要的命令复制到粘贴板;
  4. 登录远程服务器,粘贴热部署命令并执行,热部署完成,该机器运行着最新的class。机器第一次执行热部署命令,可能失败,再执行一次试下。

2.png

第一步:选择 Arthas Hot Swap 插件选项

3.png

第二步:登录远程服务器粘贴命令并执行

4.png

第三步:执行完成,热部署成功

热部署的限制

由于是基于 Arthas 的 redefine 命令实现的热部署,redefine 又是基于 Instrumentation API 实现的热部署,所以和 IDEA 的 debug HotSwap 是有一样的限制。限制如下:无法修改类名、方法名,无法修改类属性名称,无法新增类属性,无法新增非静态方法。由于本插件暂时无法获取内部类的 class 文件,所以暂时不支持修改内部类。

Arthas Hot Swap 插件原理

Arthas 是阿里巴巴开源的 Java 代码诊断工具。Arthas 的 redefine 命令是基于 Instrumentation API 实现的热部署,因此和 HotSwap 热部署方式一样,有同样的限制。Arthas 的 redefine 命令其实是把 Instrumentation API 的redefineClasses 方法包装后提供给用户,那么我们就可以根据 redefine 命令发挥想象力,实现热部署。

Arthas 官方文档推荐使用 jad/mc/redefine 等一连串命令实现 class 远程热替换,流程大概是:jad 命令对老 class 进行反编译 ->vim 编辑源码 ->mc 命令编译源码 ->redefine 热替换 class。这种方式存在两个问题:一是太麻烦,二是 mc 编译大概率会失败。如果能这样就好,本地修改代码编译后上传 class 文件到远程服务器,再使用 redefine 命令热替换 class。因此官方文档又推荐,首先将 class 二进制文件转换成 base64 编码,然后再复制粘贴到远程服务器,再把 base64 编码转换成 class 文件,最后,使用 redefine 进行热替换。这么麻烦,还不如重新部署呢。所以 redefine 命令比较鸡肋。

Arthas 官方推荐的热替换方法最大的问题在于,上传 class 文件到远程服务器进行热替换的流程太麻烦,那么这些麻烦且固定的流程为何不交给机器来做呢。所以,本文推荐的“Arthas Hot Swap”插件就有必要了,该插件就是为了提升使用 Arthas 进行热替换的效率,几个简单的动作就能热替换一个 class 文件,可以解决开发过程中 80% 的热部署需求,剩下的 20% 用重新部署解决就好了。

Arthas Hot Swap 插件执行流程

  1. 根据用户选择的源文件找到 class 文件,默认在 /target/classes 路径下面查找,用户也可以直接选择 class 文件;
  2. 使用 AES-128 加密 class 文件,输出 base64 编码;
  3. 加密的 class 文件上传至 oss,返回 oss 访问地址;
  4. 渲染热部署需要执行的脚本,渲染后的脚本也上传至 oss,返回 oss 访问地址;
  5. 组装热部署命令,并自动复制到粘贴板。

远程服务端热部署执行流程

  1. 登录远程服务器,粘贴热部署命令并执行;
  2. 下载热部署脚本,执行热部署脚本;
  3. 创建工作空间;
  4. 检查是否安装 openssl,没有安装则进行安装;
  5. 下载 AES-128 加密的 class 文件;
  6. 使用 openssl enc 解密得到 class 二进制文件;
  7. 通过脚本方式安装 arthas;
  8. 创建与 arthas 通信的管道并启动 arthas;
  9. arthas 选择 java 进程,默认选择第一个;
  10. arthas 执行 redefine 命令热替换 class 文件;
  11. 打印热替换结果。

Arthas 征文活动火热进行中

Arthas 官方正在举行征文活动,如果你有:

  • 使用 Arthas 排查过的问题
  • 对 Arthas 进行源码解读
  • 对 Arthas 提出建议
  • 不限,其它与 Arthas 有关的内容

 

 


原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

赠书 | IoT 的真正目标是什么

以往在构建物联网局域网系统时,为了方便考虑,在云端进行数据处理和分析已经成了常识。但是这种做法已经无法应对现在的情况。在物联网中边缘计算的必要性想要获取数据就要增加连接的设备数量,提高从传感器采集数据的记录(获取&…

AI 腾讯云人脸核身之独立H5接入

文章目录一、概述二、合作方后台上送身份信息~实现流程2.1. 前端入参2.2. 后端固定参数2.3. 获取 Access Token2.4. 获取 SIGN ticket2.5. 生成签名2.6. 合作方后台上送身份信息三、启动H5人脸核身3.1. 获取h5faceId3.2. 获取nonce3.3. 获取nonceTicket3.4. 计算启动签名3.5. 构…

最佳实践:使用阿里云CDN加速OSS访问

简介: 用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制。如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行分发,访问速度更快&#…

IDEA 2022 CPU占用100%的问题及解决方法

禁用下面这三个插件然后重启IDEA即可: Package Checker Package Search Ktor 下面的内容可以不用看了,只要禁用这仨插件就行

无服务计算应用场景探讨及 FaaS 应用实战

简介: 无服务计算本身是一个概念或者理论模型,落地到具体技术上主要有函数即服务(FaaS)以及后端即服务(BaaS)两种形式,阿里云提供函数即服务 FaaS 产品。 作者 | 宋文龙(闻可&#x…

想学 Python?那这套教程再适合你不过了!!

如果你想问最近这些年什么编程语言最值得学习,我相信很多人都会告诉你是Python!所以不仅是开发小白,甚至很多开发老手,也都开始学习Python,作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

2020-09-01

简介: 《5天入门视觉AI》电子书来了!身份证识别、电子相册两大实践场景带你快速入门视觉AI应用开发! 阿里云“在家实践”全新出击! 《5天入门视觉AI》电子书正式上线! 视觉AI训练营必备教材! 身份证识别、电…

再见 Nacos,我要玩 Service Mesh 了!

作者 | 姜桥出品 | CSDN云计算&#xff08;ID:CSDNcloud&#xff09;前面的文章<<干货|如何步入Service Mesh微服务架构时代>>实战演练了Service Mesh微服务架构的具体玩法&#xff0c;该案例中通过IstioKubernetes的组合&#xff0c;一组以Spring Boot框架开发的服…

顶会论文看不懂?阿里巴巴技术专家为你全方位解读!

简介&#xff1a; 由阿里云开发者社区联合新零售智能引擎事业群共同打造的《KDD 论文精华解读》电子书重磅发布&#xff01;覆盖推荐系统、图神经网络预训练、买家秀视频标题生成、在线电视剧的受众竞争力预测和分析等 10 内容&#xff0c;免费下载电子书感受科技的震撼&#x…

Python C扩展的引用计数问题探讨

简介&#xff1a; # Python GC机制 对于Python这种高级语言来说&#xff0c;开发者不需要自己管理和维护内存。Python采用了引用计数机制为主&#xff0c;标记-清除和分代收集两种机制为辅的垃圾回收机制。 首先&#xff0c;需要搞清楚变量和对象的关系&#xff1a; * 变量&…

云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator

作者 | 刘睿、杜恒 导读&#xff1a;RocketMQ Operator 现已加入 OperatorHub&#xff0c;正式进入 Operator 社区。本文将从实践出发&#xff0c;结合案例来说明&#xff0c;如何通过 RocketMQ Operator 在 Kubernetes 上快速搭建一个 RocketMQ 集群&#xff0c;并提供一些 Ro…

Spring Security BadCredentialsException: Bad credentials问题解决

问题描述&#xff1a; org.springframework.security.authentication.BadCredentialsException: Bad credentials 问题分析&#xff1a; 1、数据库里面的密码没有加密&#xff0c;导致输入正确密码也匹配不上。 解决办法&#xff1a;使用PasswordEncoder先将当前密码加密&…

携程在港挂牌:两次疫情两次上市 穿越周期初心不灭

携程香港联合交易所上市庆祝仪式现场 2021年4月19日9点30分,携程集团正式在香港联合交易所上市&#xff0c;股份代号&#xff1a;9961.hk。这是继2003年在美国纳斯达克上市后&#xff0c;携程在香港的第二次上市。在上海市凌空SOHO携程总部大楼前&#xff0c;8位携程客人代表数…

淘宝直播在智能互动领域的探索及落地

简介&#xff1a; 随着带宽成本的降低和端上算力的提升&#xff0c;在直播、短视频中基于流的互动玩法也将越来越丰富&#xff1b;无论是基于人脸、手势、分割算法的智能化贴纸&#xff0c;还是结合算法的小游戏有了越来越好的舞台&#xff1b;业界短视频和直播主要针对的娱乐性…

基于实时计算Flink的机器学习算法平台及场景介绍

作者&#xff1a;高旸&#xff08;吾与&#xff09;&#xff0c;阿里巴巴高级技术专家 1. 前言 随着互联网“人口红利”的“消耗殆尽”&#xff0c;基于“T1”或者离线计算的机器学习平台及推荐系统转化率与效果日趋“平淡”。后疫情时代的新社会模式及经济形态必将催生出新的…

SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)

简介&#xff1a; 本篇是“SpringCloud 应用在 Kubernetes 上的最佳实践”系列文章的第六篇&#xff0c;主要介绍了如何保障生产环境服务稳定&#xff0c;做到随时发布&#xff0c;从而加快业务的迭代和上线速度。 文&#xff1a;骐羽 前言 在应用发布上线的时候我们最担心的…

mPaaS:全新移动开发平台,只为打造性能更优越的App

简介&#xff1a; 基于移动开发现状与技术演进预判&#xff0c;提供移动开发强力解决方案&#xff0c;洞察 mPaaS 如何帮助企业有效降低技术门槛&#xff0c;减少研发成本&#xff0c;搭建更稳定、更流畅的移动 App。 mPaaS 是源自于支付宝的移动开发平台&#xff0c;为移动开发…

德勤2021技术趋势:繁琐、点状的匠人AI时代将终结,MLOps时代来临

作者 | 宋慧 出品 | CSDN 头图 | 付费下载于视觉中国 德勤在近日发布《2021 年技术趋势》报告&#xff0c;这已经是德勤连续第十二年发布全球技术趋势报告。纵观今年的九大技术趋势&#xff0c;德勤给出的主题关键词是“韧性”&#xff0c;建议企业运用技术实现敏捷发展、构建…

Security RBAC 表结构+权限查询sql

文章目录1. 表结构2. 权限查询sql1. 表结构 /*Navicat Premium Data TransferSource Server : 127.0.0.1Source Server Type : MySQLSource Server Version : 80026Source Host : localhost:3306Source Schema : sys-adminTarget Server Type …

蚂蚁架构师郭援非:分布式数据库是金融机构数字化转型的最佳路径

简介&#xff1a; OceanBase立志于成为世界领先的企业级数据技术解决方案提供商。 2020年8月26-28日&#xff0c;在中科软科技举办的中国财险科技应用高峰论坛上&#xff0c;蚂蚁集团高级解决方案架构师郭援非发表了《OceanBase分布式关系数据库助力保险业务创新》的主题演讲&…