nacos

一.注册中心原理

在微服务架构中,注册中心是最核心的基础服务之一

注册中心主要涉及到三大角色:

  1. 服务提供者 ---生产者
  2. 服务消费者 ---
  3. 服务发现与注册

注册中心应具备功能:

  1. 服务注册表
    服务注册表是注册中心的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册与注销。
  2. 服务注册与发现
    服务注册是指微服务在启动时,将自己的信息注册到注册中心的过程。服务发现是指查询可用的微服务列表及网络地址的机制
  3. 服务检查
    注册中心使用一定的机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表移除该实例。

二 常见的注册中心

Zookeeper

zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式

应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用

配置项的管理等。

Eureka

Eureka是Springcloud Netflix中的重要组件,主要作用就是做服务注册和发现。但是现在已经闭源

Consul

Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。

Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 SpringCloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为nacos=eureka+config。

三.nacos入门

nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务

nacos可以是注册中心还可以是配置中心

1.下载安装nacos

下载地址: Releases · alibaba/nacos · GitHub

下载zip格式的安装包,然后进行解压缩操作

1.4.1的下载地址是:

https://github.com/alibaba/nacos/releases/tag/1.4.1

解压 在windows黑窗口运行

startup.cmd -m standalone

在浏览去登陆

默认的nacos是账号和密码

注册中心部署成功

添加依赖sys-order

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

添加配置

# 注册到注册中心里面 localhost:8848
# nacos 服务的地址在哪里
spring.cloud.nacos.discovery.server-addr=localhost:8848
#微服务的名字
spring.application.name=order

启动

看注册中心注册成功

在他的详情里

如果微服务的IP地址显示的是以1 为最后一位的话 直接将对应的虚拟机的网卡禁用即可

2. 在主启动类上添加nacos的开启注解

@EnableDiscoveryClient

注解的作用是 当前的微服务可以被nacos发现

现在不管加不加都会发现建议加

在创建一个maven项目把创建的三个项目都移进去

依赖只需要在sys-service里加就行了

里面的三个不需要再添加依赖了

只需要他们三个加载的主类修改一下

配置文件一个order两个pro

运行查看

3.负载均衡

什么是负载均衡

通俗的讲, 负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上 进行执行。

jar包sys-service

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-loadbalancer</artifactId>

</dependency>

示例:sys-order(手写策略)

不加jar包会出错

看后台打印比较清晰

这个是轮询,下面的随机访问

示例:自定义策略

使用OpenFeign

OpenFeign默认的负载均衡规则是轮循

1.添加jar包

<!--使用openFeign-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2.开始使用openFeign

在启动类上加注释

@EnableFeignClients

代表微服务之间的调用

创建一个接口找到微服务

可以使用

当然也可以随机但是要写一个配置类

public class LoadBalancerConfig {
    @Bean
    ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
                                                            LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME); //loadbalancer.client.name
        // 对应的需要进行负载均衡的名字是什么
        System.out.println("======"+name);
        // product
        return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }
}

注解:微服务名字,配置类

服务熔断

<!--        熔断-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

写一个实现类

在接口上加一个fallback

配置添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值