一站式解决方案:基于 Arthas 实现服务发现和权限控制
共 4878字,需浏览 10分钟
· 2024-04-26
来源:juejin.cn/post/7281849496983994383
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利
全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中。全程手摸手,后端 + 前端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,直到项目上线。目前已更新了239小节,累计38w+字,讲解图:1645张,还在持续爆肝中.. 后续还会上新更多项目,目标是将Java领域典型的项目都整一波,如秒杀系统, 在线商城, IM即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,已有1300+小伙伴加入(早鸟价超低)
-
演示图例 -
改造前 -
改造后 -
如何构建 -
如何启动 -
IDEA 启动 -
镜像启动 -
如何部署 -
FatJar 部署 -
Docker 部署 -
Helm 部署 -
如何接入 -
开源地址
Arthas 是阿里巴巴开源的在线诊断工具,提供了 Dashboard 负载总览
、Thread 线程占用
、Stack 堆栈查看
、Watch 性能观测
等功能。
-
服务发现: 自动获取接入的应用列表 IP 和端口,无须手动输入 AgentId -
权限控制: 基于 Spring Security 实现登录控制,并支持 Nacos 动态绑定账号与服务
您可以访问 GitHub 查阅源码。
演示图例
改造前
改造后
登录控制
配置管理
arthas:
tunnel:
users:
- name: admin
password: 123456
roles: '*' # 全部授权
- name: user
password: 123456
roles:
- eden-gateway # 特定服务授权
如何构建
本项目默认使用 Maven 来构建,最快的使用方式是 git clone
到本地。在项目的根目录执行 mvn package -T 4C
完成本项目的构建。
如何启动
IDEA 启动
本项目不依赖外部组件,可以直接启动运行。
-
在项目目录下运行 mvn install
(如果不想运行测试,可以加上-DskipTests
参数)。 -
进入 tunnel-server
目录,执行mvn spring-boot:run
或者启动ArthasTunnelApplication
类。运行成功的话,可以看到Spring Boot
启动成功的界面。 -
进入 web-ui
目录,执行yarn run dev:tunnel
或者yarn run dev:ui
。运行后控制台日志输出http://localhost:8000
地址,点击访问。
镜像启动
本项目已发布到 Docker Hub [2],请执行参考命令运行。
docker run -p 8080:8080 --name=arthas-tunnel-server -d shiyindaxiaojie/arthas-tunnel-server
如何部署
FatJar 部署
执行 mvn clean package
打包成一个 fat jar,参考如下命令启动编译后的控制台。
java -Dserver.port=8080 -jar target/arthas-tunnel-server.jar
Docker 部署
本项目使用了 Spring Boot 的镜像分层特性优化了镜像的构建效率,请确保正确安装了 Docker 工具,然后执行以下命令。
docker build -f Dockerfile-Tunnel -t arthas-tunnel-server:{tag} .
Helm 部署
以应用为中心,建议使用 Helm 统一管理所需部署的 K8s 资源描述文件,请参考以下命令完成应用的安装和卸载。
helm install arthas-tunnel-server ./helm # 部署资源
helm uninstall arthas-tunnel-server # 卸载资源
如何接入
为了减少客户端集成的工作,您可以使用 eden-architect [3] 框架,只需要两步就可以完成 Arthas 的集成。
-
引入 Arthas 依赖
<dependency>
<groupId>io.github.shiyindaxiaojie</groupId>
<artifactId>eden-arthas-spring-boot-starter</artifactId>
</dependency>
-
开启 Arthas 配置
spring:
arthas:
enabled: false # 默认关闭,请按需开启
arthas: # 在线诊断工具
agent-id: ${spring.application.name}@${random.value}
tunnel-server: ws://localhost:7777/ws # Arthas 地址
session-timeout: 1800
telnet-port: 0 # 随机端口
http-port: 0 # 随机端口
笔者提供了两种不同应用架构的示例,里面有集成 Sentinel 的示例。
-
面向领域模型的 COLA 架构 ,代码实例可以查看 eden-demo-cola [4] -
面向数据模型的 分层架构 ,代码实例请查看 eden-demo-layer [5]
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利
全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中。全程手摸手,后端 + 前端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,直到项目上线。目前已更新了239小节,累计38w+字,讲解图:1645张,还在持续爆肝中.. 后续还会上新更多项目,目标是将Java领域典型的项目都整一波,如秒杀系统, 在线商城, IM即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,已有1300+小伙伴加入(早鸟价超低)
1. 我的私密学习小圈子~
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
点“在看”支持小哈呀,谢谢啦