Eureka、Ribbon、Nacos之初识微服务(一)

news2024/11/16 7:46:53

一.微服务技术栈

二.服务架构

1.1单体架构

1.2分布式架构

1.3微服务技术对比

1.4服务提供者与消费者(相对)

  • 服务提供者:暴露接口给其它微服务调用

  • 服务消费者:调用其它微服务提供的接口

  • 提供者与消费者角色其实是相对的

三.Eureka注册中心

1.1Eureka的作用

Eureka自己也是一个微服务,所以Eureka在启动时会将自己也注册到Eureka上,并配上自己的信息地址,以便在Eureka集群之间通信

1.2搭建过程

四.Ribbon负载均衡

1.1负载均衡流程

1.2负载均衡策略

1.3修改负载均衡规则

  • 代码方式:配置灵活,但修改时需要重新打包发布

  • 配置方式:直观,方便,无需重新打包发布,但是无法做全局配置

1.4饥饿加载

五.Nacos注册中心

国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。Nacos 是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高

1.1搭建过程

1.2Nacos服务分级存储模型

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群

在消费者中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务

1.3NacosRule的负载均衡策略

  1. 优先选择同集群服务实例列表

  1. 本地集群找不到提供者,才去其它集群寻找,并且会报警告

  1. 确定了可用实例列表后,再采用随机负载均衡挑选实例

1.4加权负载均衡

实际部署中会出现这样的场景:
服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。
Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高

①Nacos控制台可以设置实例的权重值,0~1之间

②同集群内的多个实例,权重越高被访问的频率越高

③权重设置为0则完全不会被访问

1.5环境隔离

适用于开发、生产、测试不同环境的变化,我们可以把业务相关度比较高的放到同一个group中,比如订单和支付

①每个namespace都有唯一id

②服务设置namespace时要写id而不是名称

不同namespace下的服务互相不可见

1.6Nacos与Eureka的相同点以及区别

相同点:

①都支持服务注册和服务拉取

②都支持服务提供者心跳方式做健康检测

区别:

①Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

②Nacos里有临时实例和非临时实例,临时实例心跳不正常会被剔除,非临时实例则不会被剔除

③Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

④Nacos集群默认采用AP方式(强调数据的可用性),当集群中存在非临时实例时,采用CP模式(强调数据的可靠性和一致性);Eureka采用AP方式

六.Nacos配置管理

1.1配置管理和配置拉取

①在Nacos中添加配置文件

②在微服务中引入nacos的config依赖

③在微服务中添加bootstrap.yml(bootstrap.yaml文件,会在application.yml之前被读取),配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件

如果当前环境不是public,还需要在bootstrap.yml文件的spring.cloud.nacos.config.namespace:配置上命名空间的id

1.2配置热更新

Nacos配置更改后,微服务可以实现热更新,方式:

①通过@Value注解注入,结合@RefreshScope来刷新

②通过@ConfigurationProperties注入,自动刷新(推荐)

注意事项:

不是所有的配置都适合放到配置中心,维护起来比较麻烦

建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

1.3多环境配置共享

微服务会从nacos读取的配置文件:

①[服务名]-[spring.profile.active].yaml,环境配置,

例如:userservice-dev.yaml

②[服务名].yaml,默认配置,多环境共享

例如:userservice.yaml

无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

多种配置的优先级:

1.4多服务共享配置

不同微服务共享的配置文件:

①通过shared-configs指定

②通过extension-configs指定

例如:

多种配置的优先级:

1.5Nacos集群搭建

①搭建MySQL集群并初始化数据库表

②修改集群配置(节点信息)、数据库配置

③分别启动多个nacos节点

④nginx反向代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美团动态线程池实践思路,开源了

背景 「使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢?」 ❝ 1.代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2.凭经验设置参数值,上线后发现需要调整,改代码重启服务,…

java职工工资管理系统(GUI+无数据库)使用java制作

当年大一的课程设计,欢迎大家参考借鉴! 二、系统实现 1.登录界面 创建容器,把相应得组件设置后放入容器。如:密码、文本框、用户、按钮等组件。 设置组件位置使其更加美观(如下图)。账号:root 密码:123 2.系统界面 在查询窗口输入工号,监听模块识别并在文件内查找与工…

部署 KubeEdge 及简单使用

版本说明 k8s版本:1.22.3 kubeedge:1.10.0 kubernetes 集群准备 [roothadoop03 kubeedge]# kubectl get nodes NAME STATUS ROLES AGE VERSION hadoop03 Ready control-plane,master 9d v1.22.3cloudcore k…

电脑c盘空间不足如何清理空间,c盘清理的方法

关于电脑c盘空间不足,相信是很多人所头疼的问题吧,随着电脑使用次数的增加,那c盘的空间越来越少,一直到完全变红,电脑也变得越来越卡,那么我们要怎么去解决呢?电脑c盘空间不足如何清理空间&…

【Go】基于telegraf进行自定义插件开发(一)

基于telegraf进行插件的自定义(一)前言正文环境准备目录结构插件结构示例代码注册插件结语前言 以长期使用Prometheus和各种exporter的经验来说,大量的exporter会占用物理机的端口资源,虽说这不是特别严重的问题,但是…

【生物信息学】基于SparCC, MENA, LSA, CoNet构建微生物相互作用网络

基于SparCC, MENA, LSA, CoNet构建微生物相互作用网络背景介绍网络推断技术用于宏基因组学及其存在的问题实现方法和工具SparCCMENALSACoNetSPIEC-EASI总结参考资料背景介绍 微生物之间的共现(Co-occurrence)可能有以下几种原因,它们可能具有一定的生态关系&#x…

视频转换成gif动图如何操作?教你三步完成视频转gif

现在网络上流行的gif动图最常见的就是从用电影、电视剧等短视频中截取出来的画面做成gif动画。大家看到这些gif动图一定觉得使用视频转gif(https://www.gif.cn/)制作非常的复杂麻烦吧!其实,想要利用视频截取gif动画非常的简单。给…

Linux mysql安装

1、软件下载1.1、下载地址:https://www.mysql.com/2、Linux 查看centos版本(用于mysql版本选择)2.1、先使用 yum 安装 redhat-lsb:yum install -y redhat-lsb2.2、安装完成后,使用 -a 查看:lsb_release -a3…

前端必知:如何判断元素出现在视口内(性能优化涉及)

要检测一个元素是否可见或者两个元素是否相交的需求场景有这些: 图片懒加载——当图片滚动到可见时才进行加载内容无限滚动——也就是用户滚动到接近内容底部时直接加载更多,而无需用户操作翻页,给用户一种网页可以无限滚动的错觉检测广告的…

ABB机器人通过直接输入法设置工具坐标系的具体方法和步骤

ABB机器人通过直接输入法设置工具坐标系的具体方法和步骤 为什么要设置工具坐标系? 对于机器人来说,承受的负荷不同,各轴电机输出的电流和扭矩都会不同,错误地选用工具坐标系会导致机器人各轴机械部位的加速磨损,严重的可能会损坏机器人核心减速机等部件。 对于形状规则或…

【每日一题Day103】LC1669合并两个链表 | 模拟

合并两个链表【LC1669】 You are given two linked lists: list1 and list2 of sizes n and m respectively. Remove list1’s nodes from the ath node to the bth node, and put list2 in their place. The blue edges and nodes in the following figure indicate the resul…

STM32MP157开发板Linux+Qt项目实战:音乐播放器

stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRT…

内网穿透工具lanproxy的安装及使用

简介 lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议,可用作访问内网网站、本地支付接口调试、SSH访问、远程桌面等等,而且带Web在线管理面板,添加端…

JDBC之批处理

基本介绍 1.批处理 正常你要指向三行sql语句 就是 prepareStatement.execute(sql1)-发送-执行 prepareStatement.execute(sql2)-发送-执行 prepareStatement.execute(sql3)-发送-执行 一句一句发送然后指向,这样太麻烦 批处理就把sql1、sql2和sql3整合到一个集合中&…

【头歌】链栈的基本操作及应用

第1关:链栈的基本操作任务描述本关任务是实现链栈的基本操作函数,以实现判断栈是否为空、求栈的长度、进栈、出栈以及获取栈顶元素等功能。相关知识链式存储的栈栈的链式存储结构是采用某种链表结构,栈的链式存储结构简称为链栈。 这里采用单…

oracle11g SAP测试机归档日志暴增排查(一)

现象是oracle11g空间一天很快就被归档日志增加的文件爆满了,空间没有,oracle也不正常,当然sap也出现异常了。 看空间是就是/oracle没有空间了,用du * -sh 很快找到oraarch下面日志文件几分钟内产生大量的归档日志文件。 1、因为是…

面试京东软件测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是2年。我想说的是,但凡有点机会,千万别去外包! 在深思熟虑过后&am…

隐式Makefile详解

工程: Makefile: 第1行:指定Makefile所在的当前路径赋值给宏定义ROOTDIR; 第2行:指定Makefile所在的当前路径下的lib文件夹路径赋值给LIB_DIR; 第3行:指定Makefile所在的当前路径下的include文件夹路径赋值给INCLUDE_DIR; 第4行:指定Makefile所在的当前路径下的bin文件…

花40天啃完这份微服务架构笔记,终于挺进腾讯T3,它太重要了

都2023年了 还没用过微服务吗? 面试的时候高并发回答的总是不能让面试官满意? 一个互联网项目究竟有多少细节? 网上搜了一堆秒杀系统方案,究竟真实的线上电商该怎么做? 你缺乏这两个字 实战 消除痛点 解决面试 …

debian开启root登录

Debian桌面系统,默认不允许root用户登录,需要通过修改相应的配置文件“/etc/pam.d/gdm3”和“/etc/gdm3/deamon.conf”,才能使root用户登录 1.debian开启root登录 1.1修改配置文件 1.使用我们安装debian系统时创建的普通用户登录到系统的桌面 2.点击activities搜索termi…