Spring Cloud 随笔2——微服务的构建基础(Spring Boot)

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。

一、为什么选的Spring Boot来构建微服务架构?

       Spring Boot是Spring Cloud的基础,Spring Boot还有自动化配置、快速开发、轻松部署等有点,非常适合用作微服务架构中各项具体微服务的开发框架。

二、Spring Boot的简单介绍:

       1、Spring Boot的宗旨并非重写Spring或替代Spring,而是希望通过大量的自动化配置等方式来简化Spring原有样板化的配置,使得开发者可以快速构建应用。

        2、Spring Boot可以通过一系列Starter POMS简化Maven配置,是的依赖管理工作变得更为简单。

        3、Spring Boot构建的应用不需要再安装Tomcat,将应用打包成war,再部署到Tomcat这样复杂的构建与部署动作,只需要将Spring Boot应用达成jar包,并通过java -jar命令直接运行就能启动一个标准化的Web应用。

三、Spring Boot应用的启动方式:

       1、可以直接运行main方法可以启动应用;

       2、在包含pom.xml目录下执行mvn spting-boot:run命令来启动应用;

       3、先通过mvn install命令将应用打成jar包,然后通过java -jar xxx.jar来启动应用。

------------------------------------------------- 配置详解-------------------------------------------------------------

四、Spring Boot的配置文件:

        1、Spring Boot的配置文件有两种形式:.properties 和 .yml

              YAML——Yet Another Markup Lanaguage(仍然是一种标记语言),但为了强调YAML是以数据作为中心,而不是以标记语言为重点,而用反向缩略语重新命名。

        2、YAML的优点:配置信息里用阶梯化缩进的方式,其结构更为清晰易懂,同时配置内容的字符量也得到显著减少,YAML                                       将属性加载到内存中保存的时候是有序的。

        3、YAML的不足:无法通过@PropertySource注解来加载配置。

五、自定义参数

       除了可以在Spring Boot的配置文件种设置各个Starter模块种预定义的配置属性之外,也可以在配置文件中定义一些我们需要的自定义属性。

      那么自定义的参数该如何读取呢?请参考:(三)、Spring Boot读取配置文件中的数据

六、参数引用

       在application.properties中各个参数之间可以直接通过使用PlaceHolder(${属性名称})的方式来进行引用,如:

#设置服务注册中心的端口
server.port=1111

#配置当前实例的主机名称
eureka.instance.hostname=localhost
#设置注册中心的地址
#在application.properties中的各个参数之间可以通过使用PlaceHolder(${参数属性})的方式进行引用
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

七、使用随机数 

       随机字符串: ${random.value}      随机int:${random.int}     随机long:${random.long}

      10以内的随机数:${random.int(10)}     10~20的随机数:${random.int[10,20]}

八、命令行参数

       在用命令行方式启动Spring Boot应用时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识。例如:java -jar xxx.jar --server.port=8888命令,等价于在application.properties中添加属性server.port=8888。

九、多环境配置 

       多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应环境标识,如下所示:

       application-dev.properties     application-test.properties      application-prod.properties

       至于那个文件会被加载需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应配置文件中的{profile}值,如:spring.profiles.active=test就会加载application-test.properties配置文件内容。

十、配置文件加载顺序

      1、在命令行中传入的参数:java -jar xxx.jar --server.port=8888

      2、SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容:java -Dspring.application.json='{"name":"Java"}' -jar xxx.jar

      3、java:comp/env中的JNDI属性。

      4、Java的系统属性,可以通过System.getProperties()获得的内容。

      5、操作系统的环境变量。

      6、通过random.*配置的随机属性。

      7、位于当前应用jar包之外,针对不同{profile}环境的配置文件内容。

      8、位于当前应用jar包之内,针对不同{profile}环境的配置文件内容。

      9、位于当前应用jar包之外的application.properties和YAML配置内容。

     10、位于当前应用jar包之内的application.properties和YAML配置内容。

     11、在@Configuration注解修改的类中,通过@PropertySource注解定义的属性。

     12、应用默认属性,使用SpringApplication.setDefaultProperties定义的内容。

      将配置内容外部化,后续将会使用Spring Cloud Config,以上的7和9都是从应用jar包之外读取配置文件。

     ------------------------------------------------监控与管理-----------------------------------------------------------

      当我们决定使用Spring Boot来作为微服务框架时,除了强大的快速开发功能之外,还因为它在Starter POMs中提供了一个特殊依赖模块spring-boot-starter-actuator。引入该模块能够自动为Spring Boot构建的应用提供一系列用于监控的端点。

      spring-boot-starter-actuator作用:对于实施微服务的中小团队来说,可以有效地省去或大大减少监控系统在采集应用指标时的开发量。

十一、原生端点

        根据端点的作用,可以将原生端点分为以下三大类:

        1、应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。

        2、度量指标类:获取应用程序运行过程中用于监控的度量指标,比如内存信息、线程信息、HTTP请求统计等。

        3、操作控制类:提供了对应用的关闭等操作类功能。

十二、应用配置类

          可以帮助我们轻松获取一系列关于Spring应用配置内容的详细报告,比如自动化配置的报告、Bean创建的报告、环境属性报告等。

          应用配置类端点所提供的信息报告在应用启动的时候就已经基本确定了其返回内容,可以说是一个静态报告。

          1、/autoconfig:该端点用来获取应用的自动化配置报告。使用该端点可以帮助我们方便的找到一些自动化配置为什么没有生效的具体原因。

          2、/bean:该端点用于获取应用上下文中创建的所有Bean。

          3、/configprops:该端点用来获取应用中配置的属性信息报告。

          4、/env:该端点用来获取应用所有可用的环境属性报告,包括环境变量、JVM属性、应用的配置属性、命令行中的参数。使用该端点可以帮助我们方便地看到当前应用可以加载的配置信息,并配合@ConfigurationProperties注解将它们引入到我们的应用程序中进行使用。如果属性名中包含password、secret、key这些关键字的敏感信息,该端点在返回它们的时候会使用*来代替实际的属性值。

          5、/mapping:该端点用来返回所有Spring MVC的控制器映射关系报告。

          6、/info:该端点返回一些应用自定义的信息。

十三、度量指标类

           度量指标类端点提供的报告信息则是动态变化的,这些端点提供了应用程序在运行过程中的一些快照信息,比如内存使用情况、HTTP请求统计、外部资源指标等。

           1、/metrics:该端点用来返回当前应用的各类重要度量指标,比如内存信息、线程信息、垃圾回收信息等。

                                 通过/metrics/{name}接口来更细粒度地获取度量信息,比如:/metrics/mem.free来获取当前可用内存数量。

            2、/health:该端点用来获取应用地各类健康指标信息。

            3、/dump:该用来暴露程序运行中地线程信息。

            4、/trace:该端点用来返回基本地HTTP跟踪信息。

 十四、操作控制类

            操作控制类端点拥有更强大的控制能力,如果要使用他们的话,需要通过属性来配置开启操作。              

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值