• 微服务-开发框架之springboot by 大雄daysn


    目录

    一、关于springboot

     二、springboot的实践

    2.1发布一个rest的api

    2.2端点

    2.3健康检查

    2.4远程监控

    一、关于springboot

           由来:spring1.0-2.0用xml配置bean,很好,当xml多起来的时候配置很复杂。于是spring3.0出现了java注解。但是我们并没有改变一个事实,spring到4.0都没有改变javaweb的运行模式,我们非得把war包部署到server上,才可以对外提供服务。那么我们能不能用main方法启动一个服务呢?于是boot就有了。

      springboot创建的应用程序是jar包,当然也可以打包成war放到tomcat,我现在就是这么做的。

    二、springboot的实践                                                                                                                                         2.1发布一个rest的api

           建立个springboot工程,然后我们建立一个这样的application。

        

    访问以下/hello,我们能得到这样的回应。

    当然我们一般把controller拆出去,符合单一职责。

    就像这样的。事实上我们还可以省略上面的get ,也就是@RequestMapping(value = "/hello"),默认是get方法,不过我是不赞成的,而且一般我们都用getMapping之类的,这样可读性会好好多。

     2.2 端点

     提到端点就要说到Actuator(执行器)插件,把刚刚的例子加上这个依赖再跑一遍。

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

    这里介绍一个名词metrics,度量指标

    加入以上依赖后跑起来刚刚的demo,日志打印出了执行器的相关信息

    现在我们访问以下试试

    首先是info

    访问/metrics

    401鉴权失败,我们查看日志

    : Full authentication is required to access actuator endpoints. Consider adding Spring Security or set 'management.security.enabled' to false.

    也就是说访问端点信息需要身份的认证,请将management.security.enabled设置为false来关闭验证功能,好像1.5以前的版本没有这个功能。那么,我们在application.yml设置management.security.enabled=false。

    现在重新访问,正常。

    当然了,我们在f12工具里面看会更好一点。。这样就清晰很多,里面能看到一堆关于内存、cpu之类的东西

     好的,那么现在为止端点是什么?我们看到actuator提供了一堆的http请求我们可以发送相应的请求(看日志就知道有哪些啦),我们发送的info、metrics这些就是我们的端点,下面给出表格。

     对应表
    1    /autoconfig     GET    自动配置报告,记录哪些自动配置条件是否通过
    2    /configprops    GET    描述配置属性(包括默认值)如何注入的
    3    /beans          GET    描述上下文所有bean,以及它们之间的关系
    4    /dump           GET    获取线程活动快照
    5    /env            GET    获取全部环境属性
    6    /env/{name}     GET    获取特点环境属性
    7    /health         GET    应用程序健康指标,由HealthIndicator的实现类提供
    8    /info           GET    获取应用程序定制信息,这些信息有info打头的属性提供
    9    /mappings       GET    描述全部URL路径,及它们和控制器(包括Actuator端点)的映射关系
    10    /metrics       GET    报告各种应用程序度量信息,比如内存用量和http请求计算
    11    /metrics/{name}    GET    报告指定名称的应用程序度量值
    12    /shutdown      GET    关闭应用程序,要求endpoints.shutdown.enabled设值为true
    13    /trace         GET    提供基本的HTTP请求跟踪信息,时间戳,HTTP头等

     2.3 健康检查

    执行器提供的端点中,有一个health端点,用来看当前运行的情况

     

    status是表现当前运行的状态的,diskSpace是磁盘,因为磁盘信息比较敏感,设置

    endpoints.health.sensitive=false

    即可不返回这部分的信息

    每次获取的健康的情况其实有缓存,缓存时间为TTL(time to live),这样来修改它的值:

    endpoints.health.time-to-live=500

     2.4远程监控

    springboot提供了remote shell这个插件

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-remote-shell</artifactId>
    </dependency>

    加入依赖后跑起来,发现日志中多了一个key

  • 相关阅读:
    Optional int parameter 'resourceState' is present but cannot be translated into a null value
    创建第一个react项目
    后台接收参数报错 Required String parameter 'id' is not present
    sql查询条件参数为空
    斐波那契数列
    Map获取key值
    Java8之集合排序
    Android学习笔记(4)----Rendering Problems(The graphics preview in the layout editor may not be accurate)
    LeetCode赛题395----Longest Substring with At Least K Repeating Characters
    LeetCode赛题394----Decode String
  • 原文地址:https://www.cnblogs.com/daysn/p/10388168.html
Copyright © 2020-2023  润新知