[TOC]
## **1. 需求分析**
将创建一个Eureka服务与Product商品提供者服务,它们两个微服务的配置信息均从GitHub获取 ,从而实现统一配置分布式管理,完成多环境的变量。
### **1.1 上传配置文件到git**
#### **1.1.1 上传Eureka server配置文件到GitHub**
1. 在 D:\\gitStudy\\SpringCloud\\microservice\-cloud\-config 目录下新建 microservice\-config\-eureka.yml 文件,profile: dev 禁用了自我保护机制, profile: prod 开启了自我保护机制
```
#注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错
spring:
profiles:
active: dev # 激活开发环境配置
---
server:
port: 6001 #端口号
spring:
profiles: dev # 开发环境
application:
name: microservice-config-eureka
eureka:
instance:
hostname: eureka6001.com
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://eureka6001.com:6001/eureka/
server:
enable-self-preservation: false # 禁用自我保护机制*****************
---
server:
port: 6001 #端口号
spring:
profiles: prod # 生产环境
application:
name: microservice-config-eureka
eureka:
instance:
hostname: eureka6001.com
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://eureka6001.com:6001/eureka/
server:
enable-self-preservation: true # 开启自我保护机制*****************
```
push到git上
```
# 添加到暂存区
$ git add microservice-config-eureka.yml
# 提交到本地库
$ git commit -m "first commit" microservice-config-eureka.yml
# 推送到远程库origin 的 master 主分支上
$ git push origin master
```
#### **1.1.2 上传服务提供端配置到GitHub上**
1. 在 D:\\gitStudy\\SpringCloud\\microservice\-cloud\-config 目录下
新建 microservice\-config\-product.yml 文件, 内容如下:
不同环境 数据名不一样,dev 数据库使用 springcloud\_db01, prod 数据库使用 springcloud\_db02
```
#注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错
spring:
profiles:
active: dev # 激活开发环境配置
---
server:
port: 8001
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.mengxuegu.springcloud.entities
mapper-locations: classpath:mybatis/mapper/**/*.xml
spring:
profiles: dev # 开发环境
application:
name: microservice-product-config # ******服务名*******
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.56.10:3306/springcloud_db01?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db01***************
username: root
password: root
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 150
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka6001.com:6001/eureka
instance:
instanceId: ${spring.application.name}:${server.port}
prefer-ip-address: true
---
server:
port: 8001
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.mengxuegu.springcloud.entities
mapper-locations: classpath:mybatis/mapper/**/*.xml
spring:
profiles: prod # 生产环境
application:
name: microservice-product-config # ******服务名*******
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.56.10:3306/springcloud_db02?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db02***************
username: root
password: root
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 150
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka6001.com:6001/eureka
instance:
instanceId: ${spring.application.name}:${server.port}
prefer-ip-address: true
```
上传到git
```
# 添加到暂存区
$ git add microservice-config-product.yml
# 提交到本地库
$ git commit -m "first commit" microservice-config-product.yml
# 推送到远程库origin 的 master 主分支上
$ git push origin master
```
### **1.2 构建 Config 版的Eureka服务端**
**1. 创建Eureka服务端模块`eureka-config`**
![](https://img.kancloud.cn/f1/52/f152c43c58829ec0217701285ce7abfd_338x295.png)
**2. 修改pom文件,加入Eureka server和config依赖启动器**
```
<dependencies>
<!-- Spring Cloud Config 客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- 导入Eureka-server 服务端依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
```
**3. 在resources 目录下创建并配置 bootstrap.yml 文件,用来指定git配置信息**
**要指定配置文件名称、profile、config-server地址**
~~~
spring:
cloud:
config:
name: microservice-config-eureka #github上的配置名称,注意没有yml后缀名
profile: dev #本次访问的环境配置项
label: master #远程库的分支名
uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-eureka.yml配置信息
~~~
**4. 在resources 目录下创建并配置 application.yml**
~~~
spring:
application:
name: microservice-eureka-config
~~~
**5. 创建启动类,并用注解开启Eureka server**
~~~
@EnableEurekaServer //标识一个Eureka Server 服务注册中心
@SpringBootApplication
public class EurekaconfigServer_6003 {
public static void main(String[] args) {
SpringApplication.run(EurekaconfigServer_6003.class, args);
}
}
~~~
**6. 测试**
* [ ] 先启动 Config 配置中心: microservice-cloud-11-config-server-5001
* [ ] 再启动Eureka 注册中心: microservice-cloud-13-eureka-config-6001
* [ ] 访问:http://eureka6001.com:6001/
* [ ] 根据 bootstrap.yml 文件中的 profile: dev, 所以是禁止了自我保护机制
![](https://img.kancloud.cn/82/bb/82bbe2069b8c2dacab960f17378cce93_1328x514.png)
### **1.3 构建 Config 版的Product微服务**
还是用原来的服务提供端做
![](https://img.kancloud.cn/29/16/29168e36c8d2f0f263568bd6339506ec_410x357.png)
**注意一定要加入config客户端依赖**
~~~
<!-- Spring Cloud Config 客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
~~~
**1. 在resources 目录下创建并配置 bootstrap.yml 文件**
~~~
spring:
cloud:
config:
name: microservice-config-product #github上的配置名称,注意没有yml后缀名
profile: prod # 本次访问的环境配置项
label: master # 远程库的分支名
uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-product.yml配置信息
~~~
**2. 配置 application.yml 文件**
~~~
spring:
application:
name: microservice-product-config
~~~
**3. 配置启动类**
~~~
@EnableEurekaClient
@MapperScan("com.tuna.springcloud.server.mapper")
@SpringBootApplication
public class ProductProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(ProductProvider_8001.class, args);
}
}
~~~
**7. 功能测试**
* [ ] 先启动 Config 配置中心
* [ ] 再启动 Eureka 注册中心
* [ ] 再启动 商品提供者
* [ ] 访问:http://localhost:8001/product/get/1
* [ ] 根据 bootstrap.yml 文件中的 profile: dev,所以查询结果中显示的库名为 springcloud\_db01
![](https://img.kancloud.cn/8f/f6/8ff60112ce14769e500f91a0239b41e7_508x146.png)
- springcloud
- springcloud的作用
- springboot服务提供者和消费者
- Eureka
- ribbon
- Feign
- feign在微服务中的使用
- feign充当http请求工具
- Hystrix 熔断器
- Zuul 路由网关
- Spring Cloud Config 分布式配置中心
- config介绍与配置
- Spring Cloud Config 配置实战
- Spring Cloud Bus
- gateway
- 概念讲解
- 实例
- GateWay
- 统一日志追踪
- 分布式锁
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安装
- 1.2 特性
- 1.3 实例
- 1. 整合nacos服务发现
- 2. 整合nacos配置功能
- 1.4 生产部署方案
- 环境隔离
- 原理讲解
- 1. 服务发现
- 2. sentinel
- 3. Seata事务
- CAP理论
- 3.1 安装
- 分布式协议
- 4.熔断和降级
- springcloud与alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服务框架付费
- SkyWalking
- 介绍与相关资料
- APM系统简单对比(zipkin,pinpoint和skywalking)
- server安装部署
- agent安装
- 日志清理
- 统一日志中心
- docker安装部署
- 安装部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定时清理数据
- index Lifecycle Management
- 没数据排查思路
- ELK自身组件监控
- 多租户方案
- 慢查询sql
- 日志审计
- 开发
- 登录认证
- 链路追踪
- elk
- Filebeat
- Filebeat基础
- Filebeat安装部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安装
- rpm安装
- docker安装Logstash
- grok调试
- Grok语法调试
- Grok常用表达式
- 配置中常见判断
- filter提取器
- elasticsearch
- 安装
- rpm安装
- docker安装es
- 使用
- 概念
- 基础
- 中文分词
- 统计
- 排序
- 倒排与正排索引
- 自定义dynamic
- 练习
- nested object
- 父子关系模型
- 高亮
- 搜索提示
- kibana
- 安装
- docker安装
- rpm安装
- 整合
- 收集日志
- 慢sql
- 日志审计s
- 云
- 分布式架构
- 分布式锁
- Redis实现
- redisson
- 熔断和降级