项目笔记8:微服务
1)微服务是架构风格
2)把一个项目拆分成独立的多个服务,多个服务是独立运行,每个服务占用独立进程
目前微服务的开发框架,最常用的有以下四个:
Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
Dubbo:http://dubbo.io
Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)
Consul、etcd&etc.(微服务的模块)
前两个最常用
springCloud:
1)springcloud并不是一种技术,而是很多技术的总称,很多技术集合
2)springcloud里面有很多框架(技术),使用springcloud里面这些框架实现微服务操作
3)使用springcloud,需要依赖技术springboot
springcloud和springboot的关系:
springboot是用来快速配置spring的,springcloud是一系列框架总称,使用springCloud需要基于springBoot快速构建
Spring Cloud相关组件:
服务发现——Netflix Eureka (Nacos)
服务调用——Netflix Feign
熔断器——Netflix Hystrix
服务网关——Spring Cloud GateWay
分布式配置——Spring Cloud Config (Nacos)
消息总线 —— Spring Cloud Bus (Nacos)
Nacos流程:
Nacos安装与注册过程:
1.下载nacos,并解压即可
下载地址:https://github.com/alibaba/nacos/releases
2、mac启动关闭方法:
启动命令:sh startup.sh -m standalone
访问:http://localhost:8848/nacos
用户名密码:nacos/nacos
关闭:
sh shutdown.sh
如果仍然可以访问:
//查询8848端口的进程,获取到进程id,例如是45025
lsof -i:8848
//杀死45025进程
kill -9 45025
3、服务注册
1)在pom文件中引入依赖
<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)在要注册的服务的配置文件中(application.properties)配置Nacos地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3)在启动类添加注解
@SpringBootApplication
@EnableDiscoveryClient //nacos注册
@ComponentScan(basePackages = {"com.atguigu"})
public class EduApplication {
4)在Nacos的网站上,服务管理-服务列表就可以看到注册的服务
4、服务调用:
前提:把互相调用的服务在Nacos进行注册
1)pom文件中引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2)在调用端服务启动类添加注解
@SpringBootApplication
@EnableDiscoveryClient //nacos注册
@EnableFeignClients
@ComponentScan(basePackages = {"com.atguigu"})
public class EduApplication {
3)在调用端创建interface,使用注解指定调用服务名称,定义调用的方法路径
@FeignClient(name = "service-vod") //调用的服务名称
@Component
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable注解一定要指定参数名称,否则出错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable("id") String id);
」
还没有评论,来说两句吧...