文章目录
- 1.微服务环境下物理架构
- 2.AdminServer
- 3.配置服务器
- 4.服务注册与发现
- 5.服务发现-DiscoveryClient
- 6.客户端负载均衡
- 7.服务发现-Feign
- 8.客户端弹性策略-hystrix
- 9.客户端弹性策略-feign+hystrix
- 10.服务路由
1.微服务环境下物理架构
在微服务架构中,首先,项目要拆分为多个微服务,每个微服务发布时,又会部署为多个实例。从而形成大量微服务实例。
实例的管理
配置的管理
服务之间的访问
采用admin-server来管理上述大量的微服务实例。
采用配置服务器,统一管理配置文件,所有微服务从配置服务器上获取其配置,其自身不再需要配置。
2.AdminServer
管理所有springboot应用实例,并提供图形化界面显示其状态和参数,方便运维管理。
2.1.创建maven项目
/SpringBootAdmin
2.1.1.配置pom
如果仅仅在eclipse等工具中启动adminserver,则仅需要如下依赖即可
如果要打包jar,则需要
2.1.2.配置spring
/SpringBootAdmin/src/main/resources/application.yml
2.1.3.启动类
/SpringBootAdmin/src/main/java/com/qfedu/demo/springboot/admin/AdminApplication.java
2.2.Adminserver监控自己的应用
将本项目作为一个微服务实例,纳入adminserver的管理,也就是说,adminserver既当管理者,也作为被管理对象。
下面配置,可以将某个springboot应用纳入adminserver的管理。
2.2.1.配置pom
2.2.2.配置spring
2.3.测试
2.4.了解actuator
Adminserver引入了依赖actuator
其作用是,将springboot应用的信息通过/health暴露出来
3.配置服务器
3.1.创建项目
3.1.1.创建父项目SpringCloud
3.1.2.创建pojo项目
Consumer
Orders
3.1.3.创建Consumer项目
根据id获取客户信息
URL:/consumer/{id}
返回:{“id”:“1”,“name”:“张三”}
所有配置在本地。
3.1.4.创建子项目ConfigServer
3.2.将consumer项目的配置放到配置服务器
3.2.1.配置配置服务器
/springcloud-config/pom.xml
3.2.2.启动类
3.2.3.配置spring
3.2.3.1.配置bootstrap.xml
3.2.3.2.配置application.yml
searchLocations配置各个项目的配置文件的搜索路径
3.2.4.拷贝consumer项目的配置
3.2.5.配置consumer项目
参考上节,需要新建一个bootstrap.xml配置:
配置pom.xml
3.3.测试
首先启动配置服务器,然后启动consumerservice项目
3.3.1.查看配置服务器的配置
3.3.2.查看consumerservice的配置
http://localhost:8888/consumerservice/default
其内容对应:
/springcloud-config/src/main/resources/config/consumerservice/consumerservice.yml
http://localhost:8888/consumerservice/dev
其内容对应:
/springcloud-config/src/main/resources/config/consumerservice/consumerservice-dev.yml
3.3.3.测试consumerservice
4.服务注册与发现
Springcloud采用Netflix开发eureka作为注册中心。
4.1.启动eureka服务器
4.1.1.创建项目
4.1.1.1.配置pom
4.1.1.2.配置spring
/springcloud-eureka/src/main/resources/application.yml
4.1.1.3.启动类
/springcloud-eureka/src/main/java/com/qfedu/demo/springcloud/eureka/EurekaApplication.java
4.2.服务注册
改造consumerservice使其可以在注册中心注册
4.2.1.在配置服务器项目中修改配置
/springcloud-config/src/main/resources/config/consumerservice/consumerservice.yml
4.2.2.配置pom
/springcloud-consumer/pom.xml