从零入门 Serverless | SAE 的远程调试和云端联调
作者 | 弈川 阿里巴巴云原生团队
导读:本节课程包含三部分内容,前两个部分简单介绍远程调试以及端云联调的原理,最后在 Serverless 应用引擎中进行实际演示。
经过之前课程的学习,相信大家对于 Serverless 应用引擎(SAE)已经有了一定的了解,SAE 是一款基于容器与 kuberneters 的应用 PaaS 平台,在 SAE 提供的 Serverless 场景下,我们不需要再关注底层资源的运维,只需要关注应用的业务逻辑本身。但是,我们在开发测试阶段通常会需要用到调试功能,因此,为了方便用户调试,我们提供了远程调试功能,目前只支持 Java 程序的远程调试。
远程调试
Java 远程调试原理
众所周知,我们的 Java 程序是运行在 Java 虚拟机(JVM)之上的,JVM 不单单为我们的 Java 程序提供了跨平台能力,并且也提供了相应接口与协议方便远程调试。JDK 中有一个叫 JPDA 的体系来规范与支持 Java 程序的调试,在这个体系中,调试发起者与被调试程序的 JVM 底层分别由 JDI 与 JVMTI 模块来支持,而两个接口之间则是有 JDWP 来负责相互之间的通信。
由此可见,远程调试的本质就是两个 JVM 通过一个连接保持通信,被调试的程序作为服务端,在某个指定的端口监听调试指令,而调试发起者则是作为客户端连接目标端口,发送各种调试指令并且接收调试状态。
我们此时已经了解了 Java 程序远程调试的原理,那么对于部署在 SAE 中的 Java 应用是如何实现远程调试的?
SAE 中的 Java 远程调试
首先,在 SAE 部署的 Java 应用需要先开启调试模式,因此需要在部署应用时添加相关的启动命令。另外,由于 SAE 的应用默认是无法提供公网访问的,所以需要一个 SLB 提供公网访问能力。以上两条都设置好之后,最后可以获得一个调试程序用 IP 与端口,将这个 IP+端口 设置到 IDE 中就能够开始远程调试了。
注:以上操作见文章【实操演示】部分。
端云联调
除了远程调试,对于微服务的应用,端云联调也是一个非常重要的功能。
我们在微服务架构下的开发测试过程中,经常会遇到需要上线一个新的服务或者更新一个旧服务的版本的情况。如果没有端云联调,我们只能先在测试环境测试之后再上线生产环境。而通常测试环境与生产环境有着这样那样的差异,导致有些隐藏的问题无法被及时发现。
而有了端云联调功能后,在正式上线之前,我们能够直接实现本地服务与部署在云端的服务相互调用,这样就能够方便我们更加贴近实际生产环境进行调试。
首先,部署在 SAE 上的服务与本地网络上是有隔离的,所以需要在同一个 VPC 下购买一个 ECS 充当跳板机。借助这个跳板机我们可以通过 IDEA 的插件完成本地服务在云端注册中心的注册与服务发现。最后即可完成端云互联,进行端云联调。
实操演示
最后对 SAE 提供的远程调试与端云联调功能进行实际演示,演示过程请点击这里进行观看。
最新文章
- 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?
- AD域-让共享目录只显示用户有权限访问的文件夹
- java CountDownLatch
- Jlink更新新固件USB连接不上的问题
- eclipse中servers(服务器)的配置
- <;Chapter 2>;2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)
- YII访问数据库
- 15个网页设计必备的Google Chrome 扩展
- 接上一篇博客(解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. )
- CSS发光边框文本框效果
- 【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link failure;The last packet sent successfully to the server was 1 milliseconds ago
- 那些年,我们被耍过的bug——haslayout
- activity生命周期分析(两个activity之间跳转的生命周期执行顺序)
- SQLITE3 使用总结(3~5)(转)
- Mybatis夺标关联查询一对多实例
- Dockerfile的HEALTHCHECK指令
- 安卓逆向学习---深入Smali文件
- 【CJOJ2375】 【HZOI 2015】偏序 II(cdq分治,树状数组)
- java 从网络Url中下载文件 (转)
- 查看chekpoit文件
热门文章
- ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上)
- [源码解析] 深度学习流水线并行 GPipe(3) ----重计算
- Ajax的GET,POST方法传输数据和接收返回数据
- 读《深入理解java虚拟机》小结
- 求证:-1/2 <;= {2x} - {x} <; 1/2
- MySQL数据完整性约束
- vue 点击复制当前网址
- DorisDB升级为StarRocks,全面开源!
- 使用Mosquitto实现MQTT客服端C语言
- Activiti 学习(二)—— Activiti 流程定义和部署