项目架构发展
单体架构
项目中有且只有一个模块可以运行和部署。
特点
部署成本低
耦合度高(维护困难、升级困难)
分布式系统架构
将项目拆分成多个可以单独运行和部署的模块。
单独运行和部署的模块(微)服务
特点
耦合度低。方便扩展,职责单一,隔离性强。
缺点
按照什么原则拆分。
怎么进行远程调用。
地址如何管理。
如何修改配置。
服务很多,前端需要知道每个服务的地址。
微服务架构
就是分布式系统架构
要求
单一职责,自治,隔离性强
微服务技术对比
dubbo
远程调用
注册中心
spring cloud
是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件
远程调用
- OpenFeign
- Dubbo
注册中心
- eureka
- nacos
- consul
网关
- springcloudgateway
- zuul
配置中心
- spring cloud config
- nacos
链路监控
- zipkin
- sleuth
流控降级保护
- hystix
- sentinel
Spring Cloud介绍
netflix
alibaba
2套父工程
spring cloud
spring cloud aliaba
服务拆分和远程调用(掌握)
创建微服务架构项目
2个服务构成
订单服务
订单数据库
用户服务
用户数据库
远程调用
本质:在java代码中向另外一个服务的接口的发送http请求,获取响应结果。
使用流程
1.将RestTemplate交由spring管理
RestTemplate在消费服务的代码里写入
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
2.并注入RestTemplate容器对象
3.调用restTemplate对象的getForObject(url,提供服务的实体User.class)
服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)