目录
一、前言
近日,水壶哥所在公司要在已有的微服务系统中,新增一个日志管理微服务,具体作用是用来记录各个微服务中Controller和Service的调用日志,并且要收集各个微服务间的调用链路,这个开发日志管理服务的重任很荣幸的落在了水壶哥的身上,秉着要将项目吃透,将功能做细的原则,水壶哥从头搭建了一套测试平台,其中涵盖了SpingCloud、dubbo、nacos、zipkin、rabbitmq等各项技术,在这里,水壶哥就将这套平台的一些心得体会分享出来。
二、用到的技术
1、dubbo
2、nacos
微服务的注册中心选用nacos
3、zipkin
zipkin的作用是收集链路调用记录。
4、RabbitMq
rabbitmq用来保存日志到消息队列,这样当有大量日志并发的时候,可以将日志暂时保存到消息队列中,日志模块再慢慢的从队列中取出消息保存到数据库。
5、数据库
日志采用MongoDB数据库存储
三、开发使用的IDE
水壶哥用idea(版本号2020.3)如果没有idea,推荐使用eclipse
四、搭建开发环境
第一步:安装jdk
项目依赖jdk11版本,自行下载jdk11或使用资源包中提供的jdk,下载地址:Java Downloads | Oracle,然后配置java环境变量,具体步骤自行百度。
第二步:安装Nacos并运行
将资源包中的nacos解压到磁盘后,在命令行进入nacos-server-2.1.0\bin目录,随后执行startup.cmd -m standalone命令即可启动。
启动成功后出现如下界面:
在浏览器中访问http://localhost:8848/nacos/index.html会出现如下界面:
输入默认的用户名nacos和密码nacos,进入主界面,如下图所示:
可以看到此时并没有注册任何服务。
第三步:安装并运行RabbitMq
首先要安装Erlang OTP,运行资源包下的otp_win64_25.0.3.exe文件,进入安装界面
保持默认选项一路下一步,最后在系统环境变量中设置ERLANG_HOME,指向 Erlang OTP的安装目录
笔者将Erlang OTP安装到了D:\DEVTOOLS2017目录下。随后在path中添加%ERLANG_HOME%\bin,如图所示
最后解压资源包中的rabbitmq-server-windows-3.10.7.zip,将其中的rabbitmq_server-3.10.7目录解压到磁盘,解压后的目录结构如下:
在命令行进入sbin目录,然后运行rabbitmq-server.bat start命令,即可启动rabbitmq,启动成功后的界面如下:
在浏览器访问http://localhost:15672/ 出现如下界面
输入默认帐号guest和密码guest,进入主界面
第四步:启动zipkin
将资源包中的zipkin-server-2.23.18-exec.jar复制到磁盘中,随后在命令行执行Java -jar zipkin-server-2.23.18-exec.jar即可启动zipkin,启动成功后的界面如下
在浏览器访问http://localhost:9411/可以看到如下界面,这时候还没有抓取到任何链路
五、运行项目
将资源包中的spring-cloud-bookmanager文件夹做为maven项目,用idea打开
项目结构如下所示
如果项目有异常,请点击一下maven操作框的刷新按钮,idea会自动添加maven依赖
点击右上角下拉框会看到四个主程序
依次运行BookLogMainApplication、ConfigApplication、BookUserApplication、BookMainApplication,如果运行过程中报以下错误,请将开发环境设置为java11
具体设置方法如下:
启动成功后,可以看到nacos服务列表中已经注册了四个服务
六、各种链路测试
打开BookMainController,笔者在其中写了三种链路测试:dubbo链路测试、ribbon链路测试、混合链路测试。
1、dubbo链路测试
dubbo链路测试,顾名思义每个节点之间完全依靠dubbo接口调用,在浏览器访问http://localhost:8083/saveBook如果浏览器什么都没显示,说明运行正常,这时候刷新一下zipkin界面,可以看到抓取到了一条链路
点进去看详细,会看到各链路之间的调用关系
2、ribbon链路测试
ribbon链路测试,顾名思义每个节点之间完全依靠ribbon方式调用,在浏览器访问http://localhost:8083/updateBook如果浏览器什么都没显示,说明运行正常,这时候刷新一下zipkin界面,可以看到又抓取到了一条新链路
3、混合链路测试
混合链路测试,是指一条链路中既有dubbo调用,又有ribbon调用,在浏览器访问http://localhost:8083/deleteBook如果浏览器什么都没显示,说明运行正常,这时候刷新一下zipkin界面,可以看到又抓取到了一条新链路
七、需要注意的问题
1、MongoDB数据库
项目中用到了MongoDB数据库,资源包中并没有安装程序,如果需要安装请自行下载安装,如果只是单纯的学习链路调用,可以不用按照MongoDB,需要将代码中涉及到MongoDB的部分删除即可。共有以下几个部分: