Spring Cloud Config 客户端配置细节

服务化配置中心

在config-client中配置config-server地址的时候都是直接将地址写死,这种方式显然不够灵活,这里我们可以结合eureka注册中心,然后在配置的时候直接使用服务名即可,OK,那我们对之前的项目稍加改造吧。

config-server改造

这里的改造都是非常简单的,服务端改造和客户端改造都是分三步走:1.添加依赖;2.添加注解;3.修改application.properties.

阅读更多

Spring Cloud Bus RabbitMQ

RabbitMQ安装配置

RabbitMQ是用Erlang语言编写的,因此安装RabbitMQ之前我们要先安装Erlang环境,首先去 http://www.erlang.org/downloads 地址下载erlang,下载到的是一个exe文件,直接双击安装即可,然后去 http://www.rabbitmq.com/download.html 地址下载RabbitMQ,下载成功之后,也是一个exe,双击安装即可。RabbitMQ安装成功之后,默认会创建系统服务,将和Windows系统一起启动。所以安装成功之后,打开系统服务,我们如果看到如下结果表示安装成功了:

阅读更多

Spring Cloud Config 服务端配置细节(一)

我们先通过下面一张图来看看Config Server的一个大致工作过程:

![图片](details-of-spring-cloud-config-server-configuration (-i/640.png)

结合这张图,我来说如下五点:

1.首先我们需要一个远程的Git仓库,自己学习可以直接用GitHub,在在实际生产环境中,需要自己搭建一个Git服务器,远程Git仓库的作用主要是用来保存我们的配置文件
2.除了远程Git仓库之外,我们还需要一个本地Git仓库,每当Config Server访问远程Git仓库时,都会保存一份到本地,这样当远程仓库无法连接时,就直接使用本地存储的配置信息
3.至于微服务A、微服务B则是我们具体的应用,这些应用在启动的时候会从Config Server中来加载相应的配置信息
4.当微服务A/B尝试去从Config Server中加载配置信息的时候,Config Server会先通过git clone命令克隆一份配置文件保存到本地
5.由于配置文件是存储在Git仓库中,所以配置文件天然的具备版本管理功能,Git中的Hook功能可以实时监控配置文件的修改

阅读更多

Spring Cloud Config 服务端配置细节(二)之加密解密

准备工作

默认情况下我们的JRE中自带了JCE(Java Cryptography Extension),但是默认是一个有限长度的版本,我们这里需要一个不限长度的JCE,这个JCE我们可以直接百度然后在Oracle官网下载,下载之后解压,我们可以看到如下三个文件:

![图片](encryption-and-decryption-of-spring-cloud-config-server-configuration-details (-ii/640.png)

我们需要将这里的两个jar包拷贝到我们的jdk安装目录下,我的是%JAVA_HOME%\jre\lib\security,覆盖该目录下原有的文件。

阅读更多

Spring Cloud Config 配置中心

构建配置中心

首先我们来构建一个配置中心,方式很简单,创建一个普通的Spring Boot项目,叫做config-server,创建好之后,添加如下依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<spring-cloud.version>Dalston.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
阅读更多

Spring Cloud Zuul 中路由配置细节

路由规则

1
2
zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=feign-consumer

我们说当我的访问地址符合/api-a/**规则的时候,会被自动定位到feign-consumer服务上去,不过两行代码有点麻烦,我们可以用下面一行代码来代替,如下:

阅读更多

Spring Cloud Zuul 中异常处理细节

首先我们来看一张官方给出的Zuul请求的生命周期图,如下:

图片

关于这张图我说如下几点:

1.正常情况下所有的请求都是按照pre、route、post的顺序来执行,然后由post返回response
2.在pre阶段,如果有自定义的过滤器则执行自定义的过滤器
3.pre、routing、post的任意一个阶段如果抛异常了,则执行error过滤器,然后再执行post给出响应

这是这张图给我们的信息,我们再来看看源码com.netflix.zuul.http.ZuulServlet类中的service方法,这是整个调用过程的核心,如下:

阅读更多

Spring Cloud Feign 配置详解

Ribbon配置

ribbon的配置其实非常简单,直接在application.properties中配置即可,如下:

1
2
3
4
5
6
7
8
9
10
# 设置连接超时时间
ribbon.ConnectTimeout=600
# 设置读取超时时间
ribbon.ReadTimeout=6000
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
# 切换实例的重试次数
ribbon.MaxAutoRetriesNextServer=2
# 对当前实例的重试次数
ribbon.MaxAutoRetries=1
阅读更多

Spring Cloud API 网关服务Zuul

构建网关

网关的构建我们通过下面三个步骤来实现。

1.创建Spring Boot工程并添加依赖

首先我们创建一个普通的Spring Boot工程名为api-gateway,然后添加相关依赖,这里我们主要添加两个依赖spring-cloud-starter-zuul和spring-cloud-starter-eureka,spring-cloud-starter-zuul依赖中则包含了ribbon、hystrix、actuator等,如下:

阅读更多

Spring Cloud 中声明式服务调用 Feign

Spring Cloud Feign入门

环境搭建

OK,首先我们通过下面六步来创建一个Spring Cloud Feign工程,先来体验下Spring Cloud Feign带给我们的便利。

第一步:创建普通Spring Boot工程

首先我们来创建一个普通的Spring Boot工程,取名为feign-consumer。

阅读更多