天天看点

Spring Cloud Cli 初体验

SpringBoot CLI 是spring Boot项目的脚手架工具。而本文的Spring Cloud cli则是基于SpringBoot Client的一个插件,用于支持Cloud相关的组件。

由于各种原因,目前用起来并不是很爽:

repo 经常连不上

启动非常慢,要等半天

遇到问题排查不是很容易

但是,功能很有意思,值得期待。也许有一天变的像 docker swarm 那样直接启动分布式的服务,就完美了。

SpringBoot Client文档:

<a href="https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-installing-the-cli">https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-installing-the-cli</a>

SpringCLoud Client 文档:

<a href="http://cloud.spring.io/spring-cloud-static/spring-cloud-cli/1.3.2.RELEASE/">http://cloud.spring.io/spring-cloud-static/spring-cloud-cli/1.3.2.RELEASE/</a>

通用的安装方式是下载编译版,设置PATH环境变量即可。

下载如下的二进制包:

<a href="https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.5.10.RELEASE/spring-boot-cli-1.5.10.RELEASE-bin.tar.gz">https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.5.10.RELEASE/spring-boot-cli-1.5.10.RELEASE-bin.tar.gz</a>

解压并设置环境能量:

官网文档还提供了其他sdkman、brew等安装方式,你可能并不是对应的操作系统,也可能没有对应的包管理器。因此个人不建议考虑,直接下载二进制包即可。

默认spring命令并没有cloud子命令:

安装spring cloud插件:

默认插件会安装在cli目录的<code>/lib/ext</code> 子目录中。

查看cloud子命令目前支持的组件:

在开发环境可快速启动一个Eureka注册中心:

如果启动多个组件,直接写多个组件名称即可。如:

<a href="https://spring.io/blog/2016/11/02/introducing-the-spring-cloud-cli-launcher">https://spring.io/blog/2016/11/02/introducing-the-spring-cloud-cli-launcher</a>

各个服务默认的端口:

默认情况下,同事时启动多个组件时,会在同一个进程中启动所有组件。即:

如果你希望你在一个独立的进程中启动每一个组件,可以如下启动:

如果定义了profile,可以在启动时指定激活的profile,如內建configserver配置了一个rabbit profile,用于设置启用rabbit代替kafka。具体可查看源码:

<a href="https://github.com/spring-cloud/spring-cloud-cli/blob/master/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml">https://github.com/spring-cloud/spring-cloud-cli/blob/master/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml</a>

启动方式:

如果希望定制某个组件的参数,可以创建一个配置文件,目录可以是:

工作目录

工作目录中的 config/

用户目录中的 ~/.spring-cloud/

配置文件名为组件名,如: eureka.yml。 比如我们希望eureka的端口号为:1111,则创建 eureka.properties:

注意:文件扩展名必须是yml,不支持properties。

比如我自己创建了一个spring-boot-initializr组件,那么我们也可以把自己的组件加入到配置中,这样也很方便的启动。

在工作目录创建:<code>config/cloud.yml</code>

其中deployables中的属性:initializr 表示自定义组件的名称,coordinates 表示maven坐标,形式看起来是gradle的依赖格式,而 port比较好理解了,就是默认的端口。

检查一下:

返回的组件列表里多了一个 <code>initializr</code>,可以启动试一下:

这里说明一下,配置中的 application-properties 是配置了默认的application的属性,会覆盖原项目中的 application 配置信息。

因此总结起来,配置一个组件的属性有三中途径:

在原项目的application中配置;

在 cloud.yml 重配置;

在 [module].yml 重配置。