如今,你们开始愈来愈多的谈论到高可用架构的互联网应用。什么是高可用?高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它一般是指,经过设计减小系统不能提供服务的时间。数组
当咱们谈论服务高可用的时候,咱们一般聚焦在高并发、大流量、高可用性等关键字,企业上云,这些问题也是不可避免的。互联网应用正在由单体应用架构演变为微服务架构,服务的拆分,使得部署在云的运行实例也指数级的增长。架构
可是!测试再充分的服务,在线上运行起来后,均可能会出现问题。这些问题可能跟架构设计有关,也多是为了快速响应用户需求在快速迭代中带来的BUG.这些缺陷如同大堤上的蚁穴,随时可能会引发线上服务的总体崩溃。并发
在这种状况下,咱们就须要研发人员能迅速定位问题,并将修复问题后的版本在用户无感知的状况下快速上线,将缺陷的负面影响最小化。而线上问题的快速定位无非从日志分析、性能监控、线上环境的远程调试等几个方面入手。不一样的方式适用于不一样情况,各有千秋。但在这些解决方案中,基于线上环境的远程调试每每可以迅速分析出缘由并解决,问题的解决速度脱颖而出。socket
什么是Java远程调试?分布式
Java远程调试的原理是两个Java VM之间经过debug协议进行通讯,而后以达到远程调试的目的。二者之间能够经过socket进行通讯,被debug程序的Java虚拟机在启动时开启debug模式,启动debug监听程序。JDWP是Java Debug Wire Protocol的缩写,它定义了调试器(debugger)和被调试的Java虚拟机(target vm)之间的通讯协议。微服务
target vm中运行着咱们但愿要调试的程序,它与通常运行的Java虚拟机没有什么区别,只是在启动时加载了Agent JDWP从而具有了调试功能。而debugger就是咱们熟知的调试器,它向运行中的target vm发送命令来获取 target vm运行时的状态和控制Java程序的执行。Debugger和target vm分别在各自的进程中运行,他们之间的通讯协议就是JDWP。高并发
如何使用开发者中心进行在线调试?工具
若是你已经使用了开发者中心部署应用(上云),那么,能够很是荣幸的告诉你,看完下面的步骤,只需几秒钟的配置,就能够解救你于水火之中。性能
抛开一切烦恼,掏出你的笔记本电脑,准备开始具体的配置吧。开发工具
操做步骤
应用属性增长环境变量
CATALINA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
如图:
应用增长调试端口,需和步骤1中的属性address=8000一致,如8000
如图:
保存并重启实例
实例重启完毕后,点击须要远程调试的实例控制台
在实例控制台中输入echo $PORT0,$PORT1,输出信息为应用放开的端口对应该实例的数组,PORT0对应8080端口,PORT1对应实例的8000端口(即远程调试使用的端口号)
查看实例运行的主机
配置开发工具IDE的远程调试信息为步骤6的IP地址和步骤5得到的端口
至此,大功告成,你能够轻松的进行问题排查了。此过程也能够用于平常开发过程当中的在线定位问题,面对众多的微服务,无需再烦恼了。