微服务02(nacos,ribbon,feign)

服务治理

将服务注册到服务中心nacos上,每一个服务都部署到一个tomcat上,使用频繁的服务可以部署集群,每一个服务都有自己的ip+port,服务名称相同,业务相同,通过使用ribbon进行负载均衡,使用feign进行服务间的互相调用。feign中默认集成了ribbon。

1、什么是服务治理?

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。
服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服 务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中 的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实 例的访问。
常见的注册中心
1.Erueka
2.Zookeeper
3.Consul
4.Nacos

2、Nacos:

2.1 什么是Nacos?

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

2.2 安装nacos

下载nacos
在这里插入图片描述
启动nacos
在这里插入图片描述
在这里插入图片描述
nacos启动成功,端口号8848,使用浏览器访问

http://localhost:8848/nacos

在这里插入图片描述
用户名密码都为nacos
在这里插入图片描述

2.3 使用nacos

引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>

在application.yml配置nacos

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

在启动类上加入注解

@EnableDiscoveryClient

重新启动两个微服务发现nacos多出两个服务
在这里插入图片描述
修改代码
之前的

 Product product = restTemplate.getForObject("http://localhost:8081/product/productById/" + pId, Product.class);

修改成

    @Autowired
    private DiscoveryClient discoveryClient;
    //在方法里加入
    List<ServiceInstance> instances = discoveryClient.getInstances("shop-product");
        ServiceInstance serviceInstance = instances.get(0);
        Product product = restTemplate.getForObject(serviceInstance.getUri()+"/product/productById/" + pId, Product.class);

在这里插入图片描述

3、服务调用的负载均衡

3.1 什么是负载均衡

通俗的讲, 负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。
根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡 而客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求.
我们在微服务调用关系中一般会选择客户端负载均衡,也就是在服务调用的一方来决定服务由哪个提供者执行.

3.2 基于Ribbon实现负载均衡

1.什么是Ribbon
ribbon是 Netflix 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在SpringCloud 中, nacos一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从nacos中读 取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。 在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的 列表信息,并基于内置的负载均衡算法,请求服务。

2.Ribbon的主要作用
(1)服务调用
基于Ribbon实现服务调用, 是通过拉取到的所有服务列表组成(服务名-请求路径的)映射关系。借助 RestTemplate 最终进行调用
(2)负载均衡
当有多个服务提供者时,Ribbon可以根据负载均衡的算法自动的选择需要调用的服务地址
Ribbon是Spring Cloud的一个组件, 它可以让我们使用一个注解就能轻松的搞定负载均衡

3.3 ribbon实现负载均衡的步骤

nacos依赖中包含riboon依赖

      <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>

配置application.yml

shop-product:  # 这里写调用服务的名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
     #使用的的负载均衡策略

ribbon需要依赖restTemplate,加入注解@LoadBalanced

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

修改代码,访问服务名称,ribbon自动负载均衡

Product product = restTemplate.getForObject("http://shop-product/product/productById/" + pId, Product.class);

模拟启动多个服务
在这里插入图片描述

在这里插入图片描述
测试:
在这里插入图片描述

4、基于OpenFeign实现服务调用

4.1 什么是Feign

Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。
Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

4.2 使用feign调用服务

服务模块引入依赖

<!--feign的jar文件 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

主类加上注解@EnableFeignClients,开启feign

@EnableFeignClients

创建一个接口,写调用的方法

@FeignClient("shop-product")
public interface ProductFeign {
    
    @GetMapping("/product/productById/{id}")
    public Product findById(@PathVariable("id") Integer pId ) ;

}

使用,注入需要使用的类中,调用其中的方法(就像在调用本地方法一样)

 @Autowired
    private ProductFeign productFeign;

注意:feign跟swagger依赖冲突,可能报空指针,将swagger2版本提到2.5.0以上就解决了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nacos和Hystrix是Spring Cloud提供的两个重要组件。Nacos是一个用于服务发现、配置管理和动态路由的平台,而Hystrix是一种用于处理分布式系统之间的延迟和容错的工具。在集成中,你可以使用Nacos来注册和发现服务,并使用Hystrix来实现熔断和容错机制。 在引用中提到了一个关于Spring Cloud中Nacos、Gateway、OpenFeign和Hystrix集成的小demo。在这个demo中,Nacos被用来作为服务的注册中心和配置管理中心,Gateway用来实现API网关,OpenFeign用来实现服务间的通信,Hystrix用来实现熔断和容错机制。 在引用中提供了关于集成过程中一些重要的依赖和配置信息。其中,spring-cloud-starter-netflix-ribbon和spring-cloud-starter-netflix-hystrix是用来支持Hystrix的依赖,可以根据实际需要进行添加。在配置文件中,可以设置Hystrix的一些属性,例如开启熔断机制和设置超时时间。 在引用中提到了Nacos的配置信息,包括Nacos服务地址的配置。可以在配置文件中添加相关的配置信息,以连接到Nacos服务并注册服务。 综上所述,Nacos可以用来作为服务的注册和配置管理中心,而Hystrix可以用来实现熔断和容错机制。这两个组件在Spring Cloud中发挥着重要的作用,可以帮助开发者构建可靠的分布式系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springcloud的nacos、gateway、openfeigin、hystrix的集成小demo](https://download.csdn.net/download/2301_76484015/87989696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微服务/Nacos(注册中心)/Feign(服务调用)/Hystrix(熔断器)](https://blog.csdn.net/yuzheh521/article/details/106594921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Spring Cloud ---NacosFeign、Hystrix](https://blog.csdn.net/leo10_Barcelona/article/details/108776591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值