一站式解决方案:基于 Arthas 实现服务发现和权限控制

戳上方蓝字“Java笔记虾”关注!

Arthas 是阿里巴巴开源的在线诊断工具,提供了 Dashboard 负载总览Thread 线程占用Stack 堆栈查看Watch 性能观测 等功能。

  1. 服务发现:自动获取接入的应用列表 IP 和端口,无须手动输入 AgentId

  2. 权限控制:基于 Spring Security 实现登录控制,并支持 Nacos 动态绑定账号与服务

您可以访问 GitHub[1] 查阅源码。

演示图例

改造前

一站式解决方案:基于 Arthas 实现服务发现和权限控制

改造后

一站式解决方案:基于 Arthas 实现服务发现和权限控制

登录控制

一站式解决方案:基于 Arthas 实现服务发现和权限控制

配置管理

arthas:
  tunnel:
    users:
      - name: admin
        password: 123456
        roles: '*' # 全部授权
      - name: user
        password: 123456
        roles:
          - eden-gateway # 特定服务授权

如何构建

本项目默认使用 Maven 来构建,最快的使用方式是 git clone 到本地。在项目的根目录执行 mvn package -T 4C 完成本项目的构建。

如何启动

IDEA 启动

本项目不依赖外部组件,可以直接启动运行。

  1. 在项目目录下运行 mvn install(如果不想运行测试,可以加上 -DskipTests 参数)。

  2. 进入 tunnel-server 目录,执行 mvn spring-boot:run 或者启动 ArthasTunnelApplication 类。运行成功的话,可以看到 Spring Boot 启动成功的界面。

  3. 进入 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 的集成。

  1. 引入 Arthas 依赖
<dependency>
    <groupId>io.github.shiyindaxiaojie</groupId>
    <artifactId>eden-arthas-spring-boot-starter</artifactId>
</dependency>
  1. 开启 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]

开源地址

[1]

GitHub: https://github.com/shiyindaxiaojie/arthas

[2]

Docker Hub: https://hub.docker.com/repository/docker/shiyindaxiaojie/arthas-tunnel-server

[3]

eden-architect: https://github.com/shiyindaxiaojie/eden-architect

[4]

eden-demo-cola: https://github.com/shiyindaxiaojie/eden-demo-cola

[5]

eden-demo-layer: https://github.com/shiyindaxiaojie/eden-demo-layer

感谢阅读,希望对你有所帮助 :)   来源:

juejin.cn/post/7281849496983994383

后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

一站式解决方案:基于 Arthas 实现服务发现和权限控制

加我好友,拉你进群

原文始发于微信公众号(Java笔记虾):一站式解决方案:基于 Arthas 实现服务发现和权限控制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/234835.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!