干货|SpringCloud之注册中心如何选用

这篇具有很好参考价值的文章主要介绍了干货|SpringCloud之注册中心如何选用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringCloud的框架并不陌生了,在业内微服务领域的扛把子。今天来看一看如何根据业务需要,来选择合适的注册中心?

注册中心是微服务管理节点通信、核心配置的关键组件,从分布式多节点的前提下最主要要解决是就是分布式下的一致性问题,不同业务场景有不同AP、CP模型的需求。

1、注册中心背景知识-CAP理论

CAP是对分布式系统的三个重要衡量指标:
干货|SpringCloud之注册中心如何选用

  • C - Consistency一致性:在多个分布式节点上,读取同一个key内容都是一样的。
    • 如果在A节点设置key为value1,A节点发生故障,切换另一个节点B查询应该查到key为value1,如果存在值不一致或不存在,则有一致性问题。
    • 当服务存在数据不一致问题,意味着如果外部查询,可能响应数据是旧版本,可能响应数据是新版本,或者说并发查询响应的内容都不同。
    • 那这个时候系统应该采取不返回任何数据,来避免数据的不一致。等恢复后,再提供准确数据。
  • A - Availability-可用性:在多个分布式节点上,部分节点故障,或者部分节点间通信中断,在业务容许的响应时间内,能够正常提供服务,则服务具有较高的可用性。
    • 可以通过服务集群快速剔除故障节点,依旧对外正常提供服务。
    • 或者正常与故障节点均能对外提供服务,但正常与故障节点间不能通信,所以可能出现一致性问题。
    • 或者节点能正常接收请求,但是发现节点内部数据有问题,就是存在数据一致性,也要对外提供服务。
  • P - Partition tolerance-分区容错性:分布式系统往往具备多个节点。如果多个节点突然其中几个节点间无法通信了,依旧能对外提供服务,则具备分区容错性。
    • 分布式系统中,节点间因网络、机器等原因出现通信中断问题,则称分布式系统出现了分区。
    • 此时即使出现了分区故障,系统还能正常运行,各服务节点还能对外提供服务。

在分布式存储中,CAP理论是肯定不能都满足,定然有所取舍,所以出现了AP/CP的选择。

从反复理解研读上面C\A两个理论,可以很明显地看出CP、AP系统的区别了:

  • CP系统:要求数据的一致性,节点一旦出现故障,数据一致前,客户端请求都卡死或拒绝,直到节点能够提供一致的数据。
    • 典型的组件有Zookeeper。
    • 通常金融系统会要求数据强一致性。
  • AP系统:要求服务的可用性,节点即使出现故障,服务依旧能对外提供服务,但是可能提供的数据不一致。
    • 典型的组件有Eureka。
    • 通常部分互联网系统接受最终一致性,而选择服务的可用性。

在一个完整的系统中,也要根据使用场景,来选择AP或CP,看是更注重一致性还是更关心可用性。

2、注册中心的选型分类

常见的CP注册中心有:Zookeeper\Consul\Nacos;
常见的AP注册中心有:Nacos\Eureka;

  • Zookeeper:经常是Zookeeper + Doubbo这个组合;
  • Consul:是一种服务网格解决方案,提供具有服务发现、配置和分段功能的全功能控制平面;
  • Nacos:兼容AP\CP两种类型,更敏捷和容易地构建、交付和管理微服务平台;
  • Eureka:Spring Cloud默认的注册中心,每个节点都可被视为其他节点的副本,从而对外提供较高的可用性;

既然Nacos既有AP版本又有CP版本,那我们就从SpringCloud+Nacos了解一下注册中心的流程吧。

3、Nacos注册中心

干货|SpringCloud之注册中心如何选用

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态DNS服务
  4. 服务及其元数据管理

干货|SpringCloud之注册中心如何选用

Nacos有Server和Client:

  • 服务端Server 提供服务注册、元数据存储。

    • 会将服务信息按照Namespace -> Group -> Service -> Cluster -> Instance 的映射关系来存储。
    • 服务端会对注册上来的客户端定期做心跳检测,以确定服务的健康状态。
    • 会对注册上来变更的服务提供者数据进行刷新和广播。
  • 客户端Client 有分为Service Provider Client,Service Consumer Client

    • 服务提供者,将自己的访问地址注册到注册中心,定时任务发送心跳进行续约,自身如果有IP等变化主动向注册中心同步。
    • 服务消费者,有两种方式来实现服务的订阅,一种是主动向注册中心拉取服务列表,一种是向注册中心提交订阅任务定期处理消息。
      • 主动向注册中心拉取:就是使用openAPI或者SDK的方式,直接调用指定实例列表的查询,来获取具体实例信息
      • 提交订阅任务:通过 EventListener处理不同类型的实现,来动态调整对服务的调用

Nacos是在通过客户端进行服务发现的时候是默认开启订阅拉取的。

默认参数subcribe就是true,所以会使用getServiceInfo方法去获取到最新的服务实例。

如果subcribe为false,就使用getServiceInfoDirectlyFromServer方法每次都会请求服务器获取最新的服务实例。

public List<Instance> selectInstances(String serviceName, String groupName, List<String> clusters, boolean healthy,
        boolean subscribe) throws NacosException {

    ServiceInfo serviceInfo;
    String clusterString = StringUtils.join(clusters, ",");
    // 是否为订阅模式
    if (subscribe) {
        // 先从本地缓存获取服务信息
        serviceInfo = serviceInfoHolder.getServiceInfo(serviceName, groupName, clusterString);
        // 如果本地缓存不存在服务信息,则进行订阅
        if (null == serviceInfo) {
            serviceInfo = clientProxy.subscribe(serviceName, groupName, clusterString);
        }
    } else {
        // 如果未订阅服务信息,则直接从服务器进行查询
        serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, 0, false);
    }
    // 从服务信息中获取实例列表
    return selectInstances(serviceInfo, healthy);
}

关于Nacos的部署与基础使用在官网都有介绍与示例,可以跟随官网进行简单的Nacos服务端单节点部署。(官方文档:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html)

书写SpringCloud+Nacos的demo将自身服务进行注册,并且简单查询服务列表,来初步了解一下Nacos的功能。

目前Nacos在国内SpringCloud/SpringBoot微服务架构中也是受到较大欢迎,被广泛使用。

  • 服务的高可用
  • 部署简易轻量
  • 配置简单成本低
  • 社区开放活跃
  • 支持跨语言服务的开发与使用

还不赶快来试一试?文章来源地址https://www.toymoban.com/news/detail-468633.html

到了这里,关于干货|SpringCloud之注册中心如何选用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud --- Eureka注册中心

    假如我们的服务提供者user-service部署了多个实例,如图 思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口? 有多个user-service实例地址,order-service调用时该如何选择? order-service如何得知某个user-service实例是否依然健康,是不是已经宕

    2023年04月24日
    浏览(29)
  • SpringCloud:Eureka服务注册中心

    Eureka是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。 在搭建微服务项目时遇到的三个问题: 服务消费者该如何获取服务提供者的地址信息? 如果有多个服务提供者,消费者该如何选择? 消费者如何得知服务提供者的健康状态? Eureka的作

    2024年01月20日
    浏览(26)
  • 【SpringCloud-1】注册中心-Eureka

    springcloud微服务,相对于dubbo这种SOA架构,提供了一站式的全套解决方案,什么意思呢?就是说springcloud不需要依赖其他组件,自己提供了全套的  常规项目需要使用的技术和解决问题的方案。  比如dubbo需要依赖zk作为注册中心,springcloud有自己的注册中心,对于其他如链路追

    2024年02月09日
    浏览(26)
  • SpringCloud实用篇1——eureka注册中心 Ribbon负载均衡原理 nacos注册中心

    单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点:架构简单;部署成本低(打jar包、部署、负载均衡就完成了) 缺点:耦合度高(维护困难、升级困难,不利于大项目开发) 分布式架构 根据业务功能对系统做拆分,每个业务功能模块作为独立

    2024年02月13日
    浏览(27)
  • 使用SpringCloud搭建Eureka注册中心

    目录 前言 一、搭建EurekaServer 1、在cloud-demo父工程下,创建子模块 eureka-server。  2、引入eureka依赖 3、给eureka-server模块编写启动类 4、编写配置文件 5、启动服务 二、服务注册  1、引入依赖 2、配置文件 3、启动服务  三、服务发现 1、引入依赖 3、服务拉取 总结          在

    2024年02月04日
    浏览(26)
  • 注册中心/配置管理 —— SpringCloud Consul

    Consul 是一个可以提供服务发现,健康检查,多数据中心,key/Value 存储的分布式服务框架,用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现,因此天然具有可移植性,安装包仅包含一个可执行文件,直接启动即可运行,方便部署 以 windows 为例,在官网下载 Consul:

    2024年02月12日
    浏览(26)
  • SpringCloud之Eureka 服务注册中心

    5 Eureka 服务注册中心 5.1什么是 Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发

    2024年02月04日
    浏览(35)
  • springcloud使用nacos搭建注册中心

    nacos安装这里就不细说了,(Nacos下载以及搭建环境_你非柠檬为何心酸142的博客-CSDN博客) 大家也可以去网上安装好,这里主要讲搭建 ,我们需要手动启动nacos, 输入(.startup.cmd -m standalone),出现一下图标就代表ok  下面是我的pom.xml文件  首先是父工程所需要的依赖,需要注意的

    2024年02月08日
    浏览(37)
  • SpringCloud 注册中心(Nacos)快速入门

    作者:大三的土狗 专栏:SpringCloud   Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,目前来看还是大多数公司使用Nacos多于Eureka。   Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发

    2024年02月03日
    浏览(67)
  • SpringCloud-Eureka注册中心

    🍁 博客主页: 👉@不会压弯的小飞侠 ✨ 欢迎关注: 👉 点赞 👍 收藏 ⭐ 留言 ✒ ✨ 系列专栏: 👉SpringCloud专栏 ✨ 知足上进,不负野心。 🔥 欢迎大佬指正,一起学习!一起加油! 服务拆分注意事项 1.单一职责:不同微服务,不要重复开发相同业务 2.数据独立:不要访问

    2024年01月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包