返回顶部
首页 > 资讯 > 后端开发 > Python >Nacos框架服务注册实现流程
  • 622
分享到

Nacos框架服务注册实现流程

Nacos服务注册Nacos注册中心 2022-11-13 13:11:48 622人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录rpc远程调用微服务服务治理分布式注册中心Nacos介绍安装基本使用rpc远程调用 可能存在的问题 超时的问题。安全的问题。服务与服务之间URL地址管理。 在我们的微服务架构通讯

rpc远程调用

可能存在的问题

  • 超时的问题。
  • 安全的问题。
  • 服务与服务之间URL地址管理。

在我们的微服务架构通讯,服务之间依赖关系非常大,如果通过传统的方式管理我们服务的 url 地址的情况下,-一旦地址发生变化的情况下,还需要人工修改rpc远程调用地址。

微服务服务治理

在RPC远程调用过程中,服务与服务之间依赖关系非常大,服务Url地址管理非常复杂,所以这时候需要对我们服务的url实现治理,通过服务治理可以实现服务注册与发现、负载均衡、容错等。

分布式注册中心

在 rpc 远程调用中,地址中域名和端口号/调用的方法名称,如果基于数据库实现服务 url 治理:

缺点:维护成本高、没有完全绝对实现动态智能。

每次调用该服务如果地址直接写死的话,一旦接口发生变化的情况下,这时候需要重新发布版本才可以该接口调用地址,所以需要一个注册中心统一管理我们的服务注册与发现。

注册中心概念: 我们的服务注册到我们注册中心,key为服务名称、value为该服务调用地址,该类型为集合类型。Eureka、consul、ZooKeeper、nacos等。

注册中心原理:

服务注册:生产者项目启动的时候,会将当前服务自己的信息地址注册到注册中心。

服务发现: 消费者从我们的注册中心上获取生产者调用的地址(集合),在使用负载均衡的策略获取集群中某个地址实现本地rpc远程调用。

rpc 服务注册调用实现原理:

1、生产者启动的时候key= 服务的名称value ip 和端口号注册到我们的微服务注册中心上。

2、注册存放服务地址列表类型:key唯一,列表是list集合。

3、我们的消费者从我们注册中心.上根据服务名称查询服务地址列表(集合)。

4、消费者获取到集群列表之后,采用负载均衡器选择一个地址实现rpc远程调用。

Nacos

介绍

Nacos 可以实现分布式服务注册与发现/分布式配置中心框架

官网的介绍: https://nacos.io/zh-cn/docs/what-is-nacos.html

安装

下载直接启动就可以了,nacos 是SpringBoot项目。默认端口号是:8848,可以修改配置文件修改端口号、数据持久化方式等等。

注意:高一点版本的nacos默认是集群启动,如果你是学习使用单机版的,需要修改额外配置,改成单机版启动。

windows版本修改方式:以notepad++方式打开 startup.cmd

然后修改大概在26行的set MODE="cluster"为set MODE=“standalone”

基本使用

Maven依赖

<dependencies>
    <!--  springboot 整合WEB组件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
</dependencies>

application.yml

spring:
  cloud:
    nacos:
      discovery:
        ###服务注册地址
        server-addr: www.kaicostudy.com:8848
  application:
    name: kaico-member
server:
  port: 8081

Java代码,项目为springboot项目,menber服务

@RestController
public class MenberService {
    @Value("${server.port}")
    private String serverPort;
    
    @RequestMapping("/getUser")
    public String getUser(Integer userId) {
        return "kaico学习nacos:" + serverPort;
    }
}

启动项目之后,可以在nacos页面看到注册的服务信息。

使用discoveryClient 从nacos上获取接口地址

order服务代码,后面用作restTemplate 实现远程接口调用。

@RestController
public class OrderService {
    @Autowired
    private DiscoveryClient discoveryClient;
    
    @GetMapping("/orderToMember")
    public String orderToMember() {
        // 从注册中心上获取该注册服务列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = serviceInstanceList.get(0);
        URI rpcMemberUrl = serviceInstance.getUri();
        return "订单调用会员获取结果:" + rpcMemberUrl;
    }
}

使用restTemplate实现rpc远程调用

注意spring没有将 restTemplate 注入到ioc容器中,需要自己手动注入。在启动类中添加下面注入bean的方法。

@Bean("restTemplate")
public RestTemplate restTemplate(){
     return new RestTemplate();
 }

调用方法

@GetMapping("/orderToMember")
    public String orderToMember() {
        // 从注册中心上获取该注册服务列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = serviceInstanceList.get(0);
        URI rpcMemberUrl = serviceInstance.getUri();
		// 使用本地rest形式实现rpc调用
        String result = restTemplate.getForObject(rpcMemberUrl + "/getUser", String.class);
        return "订单调用会员获取结果:" + result;
    }

本地负载均衡算法

1、从注册中心获取服务集群的列表

2、从列表中选择一个(根据负载均衡算法来获取)

        1. 随机获取
        2. 轮训、权重
        3. 一致性 hash 计算

实现轮训代码案例:

@Component
public class RotationLoadBalancer  implements LoadBalancer {
    private AtomicInteger atomicInteger = new AtomicInteger(0);
    @Override
    public ServiceInstance getSingleAddres(List<ServiceInstance> serviceInstances) {
        int index = atomicInteger.incrementAndGet() % serviceInstances.size();
        ServiceInstance serviceInstance = serviceInstances.get(index);
        return serviceInstance;
    }
}
 @RequestMapping("/orderToMember")
    public String orderToMember() {
        // 从注册中心上获取该注册服务列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = loadBalancer.getSingleAddres(serviceInstanceList);
        URI rpcMemberUrl = serviceInstance.getUri();
        // 使用本地rest形式实现rpc调用
        String result = restTemplate.getForObject(rpcMemberUrl + "/getUser", String.class);
        return "订单调用会员获取结果:" + result;
    }

到此这篇关于Nacos框架服务注册实现流程的文章就介绍到这了,更多相关Nacos服务注册内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Nacos框架服务注册实现流程

本文链接: https://lsjlt.com/news/171345.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nacos框架服务注册实现流程
    目录rpc远程调用微服务服务治理分布式注册中心Nacos介绍安装基本使用rpc远程调用 可能存在的问题 超时的问题。安全的问题。服务与服务之间URL地址管理。 在我们的微服务架构通讯...
    99+
    2022-11-13
    Nacos 服务注册 Nacos 注册中心
  • SpringBoot实现服务接入nacos注册中心流程详解
    目录概述接入nacos注册中心springboot服务pom文件application.properties配置源码分析小结源码流程图概述 某些场景下只需要把springboot微服...
    99+
    2023-01-13
    SpringBoot接入nacos注册中心 SpringBoot接入nacos
  • SpringCloud 服务注册中的nacos实现过程
    如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括serviceregistry的系列规范,并通过S...
    99+
    2024-04-02
  • SpringCloud通过Nacos实现注册中心与远程服务调用详解流程
    目录1. 基于Nacos实现服务注册与发现1.1 pom依赖1.2 yaml配置1.3 添加启动注解1.4 启动服务查看控制台2.基于Nacos实现远程服务调用2.1 客户端创建Re...
    99+
    2024-04-02
  • SpringCloud服务注册中的nacos怎么实现
    这篇文章主要介绍了SpringCloud服务注册中的nacos怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud服务注册中的nacos怎么实现文章都会有所收获,下面我们一起来看看吧。如...
    99+
    2023-06-29
  • Android实现登录注册界面框架
    小项目框架 今天用QQ的时候想到了,不如用android studio 做一个类似于这样的登录软件。当然QQ的实现的功能特别复杂,UI界面也很多,不是单纯的一时新奇就可以做出来的。就...
    99+
    2024-04-02
  • dubbo服务注册到nacos的过程剖析
    目录前言简述过程源码剖析具体实现服务注册服务订阅结语前言 前面聊到到了我们的dubbo服务从redis迁移到nacos注册中心,迁移后发现,会时不时的抛一个异常 ERROR...
    99+
    2024-04-02
  • springcloud整合nacos实现注册发现中心
    文章目录 微服务为什么需要服务注册发现中心怎么使用注册发现中心1.本示例环境2.nacos 安装3.pom.xml4.application.yml5.NacosDiscoveryDemoCo...
    99+
    2023-09-07
    spring cloud java spring boot
  • 亚马逊服务器实例注册流程
    1. 创建 AWS 账户 在使用亚马逊服务器实例之前,您需要先创建一个 AWS 账户。访问 AWS 官网并按照指示创建账户。您需要提供一些个人信息和付款方式。 2. 登录 AWS 控制台 使用您的 AWS 账户登录 AWS 控制台。在控制...
    99+
    2023-10-27
    亚马逊 实例 流程
  • 为WPF框架Prism注册Nlog日志服务
    无论是Nlog还是Serilog, 它们都提供了如何快速在各类应用程序当中的快速使用方法。 尽管,你现在无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCo...
    99+
    2024-04-02
  • Nacos服务器注册及配置中心
    Nacos可以直接提供注册中心(Eureka)+配置中心(Config)比之前的Eureka更加方便,不需要在自己做配置。Nacos Discovery 帮助自动将服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列...
    99+
    2023-09-08
    java eureka spring cloud 微服务
  • 阿里云服务器注册流程
    阿里云服务器注册流程: 打开阿里云官网(https://www.aliyun.com/),选择“登录”页面进入; 选择“注册云服务器”或“创建服务器”按钮进入登录界面; 输入用户名、密码、验证码等信息,按照页面提示步骤完成注册; 登录成...
    99+
    2023-10-26
    阿里 流程 服务器
  • 服务器注册亚马逊流程
    1. 创建亚马逊 Web 服务(AWS)账户 首先,你需要在亚马逊官方网站上创建一个 AWS 账户。访问 https://aws.amazon.com 并点击 "创建 AWS 账户" 按钮。按照指示填写必要的信息,包括你的姓名、电子邮件地...
    99+
    2023-10-27
    亚马逊 流程 服务器
  • 腾讯云服务器注册流程
    注册成为腾讯云客户可以享受到以下优惠: 价格优惠:客户只需支付较低的费用,即可获得腾讯云的优质服务和支持。 多种付款方式:客户可以选择现金、银行转账、支付宝、微信等多种付款方式,方便快捷。 快速部署:腾讯云提供快速的部署和上线服务,让客...
    99+
    2023-10-28
    腾讯 流程 服务器
  • 怎么为WPF框架Prism注册Nlog日志服务
    这篇文章主要为大家展示了“怎么为WPF框架Prism注册Nlog日志服务”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么为WPF框架Prism注册Nlog日志服务”这篇文章吧。无论是Nlog还...
    99+
    2023-06-29
  • Springboot 项目集成 Nacos 实现服务注册发现与配置管理方法
    本篇内容介绍了“Springboot 项目集成 Nacos 实现服务注册发现与配置管理方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希...
    99+
    2024-04-02
  • 微服务架构中如何实现服务的发现和注册?
    随着云计算和大数据时代的到来,传统的单体应用已经逐渐不能满足业务的发展需求。为了更好地应对复杂业务场景下的挑战,微服务架构越来越受到开发者的青睐。在微服务架构中,众多的服务逐渐增加,这就要求系统需要具备服务的发现和注册能力,本文将重点介绍微...
    99+
    2023-05-17
    微服务架构 服务发现 服务注册
  • Nacos服务注册客户端服务端原理分析
    目录正文版本 2.1.1客户端NacosAutoServiceRegistrationNacosServiceRegistry服务端心跳包实例注册创建 Service总结正文 在分...
    99+
    2023-02-09
    Nacos服务注册原理 Nacos服务注册
  • Spring框架 注解配置事务控制的流程
    目录基于注解的事务控制1.配置事务管理器2.在业务层使用@Transactional 注解3.开启 spring 对注解事务的支持4.注解扫描器Spring 注解事务实现机制1.事务...
    99+
    2024-04-02
  • 华为云服务器账号注册流程
    华为云服务器账号注册流程需要提供相关的用户名和密码,以及相关的身份证明,如身份证、居住证等,以便华为云服务器管理员或用户审核身份时使用。 一、注册用户名和密码 1. 用户登录华为云服务器管理员账号:点击右下角“注册”按钮,选择“注册”即可...
    99+
    2023-10-26
    华为 账号 流程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作