SpringBoot Admin 集成指南(v2.1.1)

SpringBoot Admin用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。

其常见的功能如下:

  • 显示健康状况
  • 显示详细信息,例如
    • JVM和内存指标
    • micrometer.io指标
    • 数据源指标
    • 缓存指标
  • 显示构建信息编号
  • 关注并下载日志文件
  • 查看jvm系统和环境属性
  • 查看Spring Boot配置属性
  • 支持Spring Cloud的postable / env-和/ refresh-endpoint
  • 轻松的日志级管理
  • 与JMX-beans交互
  • 查看线程转储
  • 查看http跟踪
  • 查看auditevents
  • 查看http-endpoints
  • 查看计划任务
  • 查看和删除活动会话(使用spring-session)
  • 查看Flyway / Liquibase数据库迁移
  • 下载heapdump文件
  • 状态变更通知(通过电子邮件,Slack,Hipchat,……)
  • 状态更改的事件日志(非持久性)

    开始使用

开发一个JMeter插件(CsvWriterPostProcessor)

虽然JMeter自带的插件基本能满足大多数场景,但有时候也需要自定义一些插件来实现。网上的JMeter的插件开发文档稀少,通过本人的一些尝试,总结了一些JMeter插件开发相关的经验。

JMeter的核心组件

  • Timer 定时器,用于配置每次sampling之间的等待时间。
  • Sampler 取样器,如果是其他的协议需要实现其他协议的Sampler。
  • ConfigElement 配置组件,主要用于定义前置配置。如数据库连接,csv输入数据集等。
  • Assertion 断言,验证Sampler的结果是否符合预期。
  • PostProcessor 后置处理器,一般用于对Sampler结果进行二次加工。
  • Visualizer 将sampler的结果进行可视化展示。
  • Controller 对sampler进行逻辑控制。
  • SampleListener 监听器,一般用于保存sampler的结果等耗费时间的操作。

    JMeter插件加载机制

通过阅读JMeter源码发现,它的加载插件机制是相当简单的,扫描扩展下的的所有实现了JMeterGUIComponent和TestBean接口的类,然后进行初始化。

1
2
3
ClassFinder.findClassesThatExtend(
JMeterUtils.getSearchPaths(),
new Class[] {JMeterGUIComponent.class, TestBean.class }

所以只要确保插件的jar包在扩展路径下即可,默认路径是: JMETER_HOME/lib/ext

Intellij IDEA如何远程调试

一般情况下,对于分布式系统的调试还是比较麻烦的,比较常见的方式是在远程调用的过程中通过不断的打印log,然后重新部署上线、调试、定位问题,实在是过于麻烦。

实际上Java是支持远程调试的,只是大家平时没有怎么用过罢了,本文通过Intellij IDEA为例讲解如何来使用远程调试。

准备测试程序

1
2
3
4
5
6
7
8
@GetMapping("/list")
public ResponseEntity<?> list() {
List<String> arrayList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
arrayList.add(String.format("arrayList_item_%s", i));
}
return ResponseEntity.ok(arrayList);
}

这个程序很简单,就是循环生成ArrayList对象罢了。

使用Docker容器部署SpringBoot项目

Docker简介

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。

Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

官网地址:(https://docs.docker.com/) 中文:(http://www.docker.org.cn/)

Docker架构

Docker daemon:运行在宿主机(DOCKER-HOST)的后台进程,可通过 Docker 客户端与之通信。

Images:一个只读的镜像模板,可以自己创建一个镜像也可以从网站上下载镜像供自己使用,镜像包含了一个RFS,一个镜像可以创建很多容器。

Container:由Docker Client通过镜像创建的实例,用户在容器中运行应用,一旦创建后就可以看做是一个简单的RFS,每个应用运行在隔离的容器中,享用独自的权限,用户,网络。确保安全与互相干扰 两者在创建后,都是一堆layer的统一视角,唯一的却别是镜像最上面那一层是只读的,不可以修改,但是容器最上面一层是rw的,提供给用户操作。

Repository:镜像仓库。

Netlify-Hexo持续部署最佳实践

Hexo被称为是最佳的静态博客程序之一,然而其繁琐的环境搭建、构建,发布过程,让很多人望之却步,转而使用了传统的WordPress等博客程序,抛开维护成本不说,本着折腾一切的心态,最终研究出了一套完善的自动部署方案。

Hexo特色

  • 超快速度: Node.js 所带来的超快生成速度,让上百个页面在几秒内瞬间完成渲染。
  • 支持 Markdown: Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 Octopress 的大多数插件。
  • 一键部署: 只需一条指令即可部署到 GitHub Pages, Heroku 或其他网站。
  • 丰富的插件: Hexo 拥有强大的插件系统,安装插件可以让 Hexo 支持 Jade, CoffeeScript。

目前市面上还存在很多类似的静态网站生成器,详情请查看:https://www.staticgen.com/

如何实现优雅发布

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×