# 微服务教程
本项目用于微服务技术的培训教程。
目前计划
1. 发现服务
1. 配置服务
# 发现服务
注册和发现服务我们使用eureka,按向导创建工程即可。
## 高可用
### 发现服务
```yaml
eureka:
instance:
prefer-ip-address: true
# peer1
hostname: peer1
client:
service-url:
default-zone: http://peer2:8762/eureka/
```
### 注册服务
```yaml
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
```
# 配置服务
## 配置顺序
1. -D Commandline
1. class根目录下的bootstrap.yml
1. 配置服务器中与当前`application.name`同名的配置文件`application.name.yml`
1. 配置服务器中的`application.yml`
1. 当前目录下的`config`子目录中的`application.yml`
1. 当前目录下的`application.yml`
1. class根目录下的`config`子目录中的`application.yml`
1. class根目录下的`application.yml`
## 配置更新
### 引用Actuator
```xml
org.springframework.boot
spring-boot-starter-actuator
```
### 增加@RefreshScope
`@RefreshScope`从技术角度来说是可以更新有`@Configuration`注解的类,但可以引起未预期的问题。所以不建议两个注解一起使用。
### 调用/refresh接口
### WebHook配置
### 引入Spring cloud bus
```xml
org.springframework.cloud
spring-cloud-starter-bus-amqp
```
### 调用/bus/refresh接口
# 启动顺序
- 配置服务于发现服务启动的先后顺序是无关的,如果发现服务后启动,配置服务能正常启动,并尝试连接发现服务(报错)。
- 微服务应用依赖于配置服务的正常使用,默认配置情况,无配置系统无法正常启动。
- 配置更新,对于数据库等基础服务(一般使用了`@Configuration`)的配置有修改时,需要重启对应微服务。