- 微服务是架构风格把一个项目拆分成独立的多个服务,多个服务是独立运行,每个服务占用独立进程
- 单体架构所有的模块全都耦合在一块,代码量大,维护困难。
微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。单体架构所有的模块都共用一个数据库,存储方式比较单一。
微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。单体架构所有的模块开发所使用的技术一样。
微服务每个模块都可以使用不同的开发技术,开发模式更灵活。
- springcloud并不是一种技术,是很多技术的集合(总称)springcloud里面有很多框架(技术),使用这些技术实现微服务操作使用springcloud,需要依赖springboot
Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的开发工具;Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架; Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,必须基于Spring Boot开发。可以单独使用Spring Boot开发项目,但是Spring Cloud离不开 Spring Boot。
注册中心Nacos实现不同的微服务模块之间调用,把这些模块在注册中心进行注册。注册之后,实现互相调用
把service-edu服务在Nacos进行注册
- 在service的pom文件中引入依赖
spring-cloud-starter-alibaba-nacos-discovery
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848在启动类添加注解@EnableDiscoveryClient //nacos注册
服务调用
前提条件:把互相调用服务在Nacos进行注册
- 在service中引入依赖
spring-cloud-starter-openfeign
@EnableFeignClients在调用端,创建interface,使用注解指定调用服务名称,定义调用的方法路径
@Component
@FeignClient("service-vod")
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable注解一定要指定参数名称,否则报错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable("id") String id);
}
实现代码删除小节,删除阿里云视频


