Spring Cloud CLI简单介绍

1.简介

在本文中,我们将介绍Spring Boot Cloud CLI(或简称Cloud CLI)。该工具为Spring Boot CLI提供了一组命令行增强功能,有助于进一步抽象和简化Spring Cloud部署。

CLI于2016年底推出,允许使用命令行、.yml配置文件和Groovy脚本快速自动配置和部署标准Spring Cloud服务。

2.安装

Spring Boot Cloud CLI 1.3.x需要Spring Boot CLI 1.5.x,因此请务必从Maven Central获取最新版本的Spring Boot CLI (安装说明)以及Maven资源库中的最新版本的Cloud CLI (官方Spring存储库)!

本文中使用的是spring-boot-cli 1.5.18.RELEASE,spring-cloud-cli 1.3.2.RELEASE。

1、首先安装Spring Boot CLI并可以使用,验证只需运行:

$ spring --version

2、然后安装最新的稳定版Cloud CLI:

$ spring installorg.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE

3、最后验证Cloud CLI:

$ spring cloud --version

可以在官方Cloud CLI 页面上找到更多安装说明!

3.默认服务和配置

CLI提供七种核心服务,可以使用单行命令运行和部署。

在http://localhost:8888上启动Cloud Config服务器:

$ spring cloud configserver

http://localhost:8761上启动Eureka服务器:

$ spring cloud eureka

在http://localhost:9095上启动H2服务器:

$ spring cloud h2

在http://localhost:9091上启动Kafka服务器:

$ spring cloud kafka

在http://localhost:9411上启动Zipkin服务器:

$ spring cloud zipkin

在http://localhost:9393上启动Dataflow服务器:

$ spring cloud dataflow

在http://localhost:7979上启动Hystrix仪表板:

$ spring cloud hystrixdashboard

列出可部署的应用服务:

$ spring cloud --list

帮助命令:

$ spring help cloud

有关这些命令的更多详细信息,请查看官方博客

4.使用YML自定义云服务

还可以使用相应命名的.yml文件配置可通过Cloud CLI部署的云服务:

spring:
 profiles:
 active: git
 cloud:
 config:
  server:
  git:
   uri: https://github.com/spring-cloud-samples/config-repo

这是一个简单的配置文件,我们可以使用它来启动Cloud Config Server。

上面的例子中,我们指定一个Git存储库作为URI源,当我们发出'spring cloud configserver'命令时,它将被自动克隆和部署。

Cloud CLI使用Spring Cloud Launcher。这意味着Cloud CLI支持大多数Spring Boot配置机制。这是Spring Boot属性的官方列表

Spring Cloud配置符合'spring.cloud … '约定。可以在此链接中找到Spring Cloud和Spring Config Server的设置。

我们还可以直接在下面的yml文件中指定几个不同的模块和服务:

spring:
 cloud:
 launcher:
  deployables:
  - name: configserver
   coordinates: maven://...:spring-cloud-launcher-configserver:1.3.2.RELEASE
   port: 8888
   waitUntilStarted: true
   order: -10
  - name: eureka
   coordinates: maven:/...:spring-cloud-launcher-eureka:1.3.2.RELEASE
   port: 8761

该yml允许通过使用Maven或Git库,添加自定义的服务或模块。

5.运行自定义Groovy脚本

自定义组件可以用Groovy编写并高效部署,因为Cloud CLI可以编译和部署Groovy代码。

这是一个非常简单的REST API实现示例:

@RestController
@RequestMapping('/api')
class api {
 @GetMapping('/get')
 def get() { [message: 'Hello'] }
}

假设脚本保存为restapi.groovy,我们可以像这样启动我们的服务:

$ spring run restapi.groovy

访问http://localhost:8080/api/get应该显示:

{"message":"Hello"}

6.加密/解密

Cloud CLI还提供了加密和解密工具(可在org.springframework.cloud.cli.command.*中找到),可以直接通过命令行使用,也可以通过将值传递给Cloud Config Server端点来间接使用。

让我们设置它,看看如何使用它。

6.1 安装

Cloud CLI和Spring Cloud Config Server都使用org.springframework.security.crypto.encrypt.* 来处理加密和解密的命令。

因此,都需要通过Oracle提供的JCE Unlimited Strength Extension,可在这里找到。

6.2 命令行加密和解密

要通过终端加密' my_value ',请调用:

$ spring encrypt my_value --key my_key

可以使用“@”后跟路径(通常用于RSA公钥)代表文件路径(替换上面的“ my_key ”):

$ spring encrypt my_value --key @${WORKSPACE}/foos/foo.pub

'my_value'现在将被加密为:

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

可通过命令行进行解密:

$ spring decrypt --key my_key c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

我们现在还可以在配置YAML或属性文件中使用加密值,在加载时它将由Cloud Config Server自动解密:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3 使用Config Server加密和解密

Spring Cloud Config Server公开RESTful端点,其中密钥和加密值对可以存储在Java安全存储或内存中。

有关如何正确设置和配置Cloud Config Server以接受对称或非对称加密的详细信息,请查看官方文档。

使用“ spring cloud configserver ”命令配置并运行Spring Cloud Config Server后,您就可以调用其API:

$ curl localhost:8888/encrypt-d mysecret
//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda$
curl localhost:8888/decrypt-d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
//mysecret

7.结论

我们在这里专注于Spring Boot Cloud CLI的介绍。有关更多的信息,请查看官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Cloud Ribbon的踩坑记录与原理详析

    简介 Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署,但是它几乎存在于每个微服务的基础设施中.包括前面的提供的声明式服务调用也是基于该Ribbon实现的.理解Ribbon对于我们使用Spring Cloud来讲非常的重要,因为负载均衡是对系统的高可用.网络压力的缓解和处理能力扩容的重要手段之一.在上节的例子中,我们采用了声明式的方式来实现负载均衡.实际上,内部

  • 详解Spring Cloud Netflix Zuul中的速率限制

    Spring Cloud Netflix Zuul是一个包含Netflix Zuul的 开源网关.它为Spring Boot应用程序添加了一些特定功能.不幸的是,开箱即用不提供速率限制. 除了Spring Cloud Netflix Zuul依赖项之外,我们还需要将Spring Cloud Zuul RateLimit 添加到我们的应用程序的pom.xml中: <dependency> <groupId>org.springframework.cloud</groupId&g

  • 详解Spring Cloud微服务架构下的WebSocket解决方案

    WebSocket在现代浏览器中的应用已经算是比较普遍了,在某些业务场景下,要求必须能够在服务器端推送消息至客户端.在没有WebSocket的年代,我们使用过dwr,在那个时候dwr真实一个非常棒的方案.但是在WebSocket兴起之后,我们更愿意使用标准实现来解决问题. 首先交代一下,本篇文章不讲解WebSocket的配置,主要讲的是针对在微服务架构集群模式下解决方案的选择. 微服务架构大家应该都不陌生了,在微服务架构下,服务是分布式的,而且为了保证业务的可用性,每个服务都是以集群的形式存在.

  • 详解Spring Cloud Stream使用延迟消息实现定时任务(RabbitMQ)

    我们在使用一些开源调度系统(比如:elastic-job等)的时候,对于任务的执行时间通常都是有规律性的,可能是每隔半小时执行一次,或者每天凌晨一点执行一次.然而实际业务中还存在另外一种定时任务,它可能需要一些触发条件才开始定时,比如:编写博文时候,设置2小时之后发送.对于这些开始时间不确定的定时任务,我们也可以通过Spring Cloud Stream来很好的处理. 为了实现开始时间不确定的定时任务触发,我们将引入延迟消息的使用.RabbitMQ中提供了关于延迟消息的插件,所以本文就来具体介绍

  • 使用Servlet处理一个上传的文件

    Servlet中可以使用post请求上传文件,使用getReader()和getInputStream()自己处理,也可以使用getPart()或getParts()封装了一些功能的方法处理,getParts()可以同时上传多个文件.接下来使用四个Demo来练习一下使用方法 一.使用getReader()和getInputStream() Demo1 <!-- 这是HTML代码块,窗体网页上显示的是一个选择文件的input框和一个upload的button --> <!DOCTYPE h

  • Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议

    一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入springboot并未做spring cloud微服务处理.但随着项目的进一步开发,急需拆分现有业务,做微服务处理.因此架构上的短板日益突出.spring cloud config 无法完全应用,每次项目部署需要修改大量配置文件.严重影响开发效率,因此便萌生了对项目架构再次调整的决心. 三.调整建议 为了

  • SpringCloud Zuul在何种情况下使用Hystrix及问题小结

    首先,引入spring-cloud-starter-zuul之后会间接引入: hystrix依赖已经引入,那么何种情况下使用hystrix呢? 在Zuul的自动配置类ZuulServerAutoConfiguration和ZuulProxyAutoConfiguration中总共会向Spring容器注入3个Zuul的RouteFilter,分别是 •SimpleHostRoutingFilter 简单路由,通过HttpClient向预定的URL发送请求 生效条件: RequestContext.

  • 详解Spring Cloud Gateway 数据库存储路由信息的扩展方案

    动态路由背景 ​ 无论你在使用Zuul还是Spring Cloud Gateway 的时候,官方文档提供的方案总是基于配置文件配置的方式 例如: # zuul 的配置形式 routes: pig-auth: path: /auth/** serviceId: pig-auth stripPrefix: true # gateway 的配置形式 routes: - id: pigx-auth uri: lb://pigx-auth predicates: - Path=/auth/** filte

  • 详解SpringCloud Finchley Gateway 统一异常处理

    SpringCloud Finchley Gateway 统一异常处理 全文搜索[@@]搜索重点内容标记 1 . 问题:使用SpringCloud Gateway时,会出现各种系统级异常,默认返回HTML. 2 . Finchley版本的Gateway,使用WebFlux形式作为底层框架,而不是Servlet容器,所以常规的异常处理无法使用 翻阅源码,默认是使用DefaultErrorWebExceptionHandler这个类实现结构如下: 可以实现参考DefaultErrorWebExcep

  • spring cloud gateway 限流的实现与原理

    在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方面是为了防止网络攻击. 常见的限流方式,比如Hystrix适用线程池隔离,超过线程池的负载,走熔断的逻辑.在一般应用服务器中,比如tomcat容器也是通过限制它的线程数来控制并发的:也有通过时间窗口的平均速度来控制流量.常见的限流纬度有比如通过Ip来限流.通过uri来限流.通过用户访问频次来限流. 一般限流都是在网关这一层做,比如Nginx.Openresty.kong.zuul.Spring

随机推荐