微服务-Nacos与OpenFeign

一、Nacos-注册中心

介绍:

集成在Spring cloud alibaba中,因为是阿里开发的所以学他,有中文文档   

为什么要使用他,我们的请求路径的端口号一旦写死了,当连接到的端口号报销了,崩溃了,这整个服务都挂了,解决方式,                                                                                                             那我们就不让他的端口号写死,使用注册中心,从注册中心中拿到根据负载均衡算法获取到的端口号,目的是不让服务的调用者面向服务的提供者,让他们两个都面向注册中心

注册中心大致介绍

1.服务提供者

面向注册中心,在注册中心注册服务

1)        注册中心

面对服务提供者,提供心跳续约服务,{当哪一个端口突然停止服务了,他就会通知服务中心}

2)        使用服务注册
1.引入依赖
<!--引入nacos的依赖-->        
               <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
 2.配置地址
spring:
  cloud:
    nacos:
      server-addr: 你的虚拟机地址:8848

 然后服务会发现服务一启动就被注册了

2.服务调用者

面向注册中心,在注册中心订阅服务提供者信息

我怎么在注册中心给我的那么多的服务提供者给出的服务中选则呢,那就会用到负载均衡算法

这就达到了远程调用服务提供者的服务啦 

1)        注册中心

面对服务调用者,提供推送变更服务,{当服务中心检测到有提供者的服务挂掉后就会同步调用者可以调用的服务}

2)        也就是服务发现
1.引入依赖
<!--引入nacos的依赖-->        
               <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
2.配置地址
spring:
  cloud:
    nacos:
      server-addr: 你的虚拟机地址:8848
3.服务发现

1.根据服务名称在服务列表拉取服务的实例列表

你需要去nacos里获取服务列表所以你得需要去使用一个接口DiscoveryClient,

private final DiscoveryClient discoveryClient;

private final RestTemplate restTemplate;

//根据服务名称获取服务的实例
List<ServiceInstance> instances=discoveryClient.getInstances("服务名称")

if(Collutil.isEmpty(instances)){
    return; //判断集合是否为空 为空是true 跳出方法 
}
//手写一个负载均衡从实例列表中挑选一个实例
ServiceInstance instance=instances.get(Randomutil.randomInt(instances.size()))
//利用RestTemplate发起http请求,得到http响应
ResponseEntity<List<实体DTO>> respon=restTemplate.exchang(
instance.getUrl()+"参数",
HttpMod.GET/POST,
RequestEntity,
new ParameterizedTypeReference(<List<DTO>>){},//字节码的泛型会被擦除,对象的泛型
Map.of()
)

 然后从响应体中拿到想要的数据

3)        Docker中部署 

但是需要修改一个配置文件 nacos/custom.env

MYSQL_SERVICE_HOST=你的虚拟机的ip

用户名与密码修改 成自己的 

然后在Docker中运行Nacos镜像

docker -run -d \
--name nacos \
--env -file ./nacos/custom.env \
-p 8848:8848 \
-P 9848:9848 \
--restart=always \
nacos/nacos-service:v2.1.0-slim

启动完成后访问http://你的虚拟机ip:8848/nacos/  首次访问都会跳到登录页面,账号密码都是nacos 

二、OpenFegin

介绍是一个声明式的http客户端

使用OpenFegin

1.引入依赖

<!--OpenFeign-->
<dependency>
     <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
     </dependency>
<!--负载均衡-->
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2.使用注解 @EnableFeignClients

@EnableFeignClients //通过@EnableFeignClients启用OpenFegin功能
public class NameApplication{

    
}

实现

@FeignClient(value="服务名称")
public interface ItemClient{
    @GetMapping("路径")
    List<DTO> queryItemByIds(@RequestParam("参数"), Collection<Object> ids);
}

未完待续······

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懿晨小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值