微服务学习 | Ribbon负载均衡、Nacos注册中心、微服务技术对比

Ribbon负载均衡

负载均衡流程

负载均衡策略

通过定义IRule实现可以修改负载均衡规则,有两种方式:

1. 代码方式:在服务消费者order-service中的OrderApplication类中,定义一个新的IRule:

2.配置文件方式: 在order-service的application.yml文件中,添加新的配置也可以修改规则:

区别是,第一种,相当于该服务消费者调用所有服务提供者都采用设置的这个负载均衡规则,第二种,则是该服务消费者仅仅在对注册中心注册的名字为userservice的服务提供者进行调用时,才采用设置的该负载均衡规则

Nacos注册中心

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

解压nacos

挑选一个没有中文的路径解压,解压后进入bin目录,打开cmd敲入如下命令启动nacos

启动后,可点击该路由,访问nacos注册中心

打开后,首先需要登录,账号密码默认都为nacos

服务注册到Nacos

1.在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖

2.注释掉order-service和user-service中原有的eureka依赖

3.添加nacos的客户端依赖

4.修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址

5.启动并测试

Nacos服务分级存储模型

服务跨集群调用问题

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高

本地集群不可访问时,再去访问其它集群

服务集群属性

1.修改application.yml,添加如下内容

2.在Nacos控制台可以看到集群变化

根据集群负载均衡

1.修改服务消费者order-service中的application.yml,设置集群为HZ

2.然后在order-service中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务

3.注意将user-service的权重都设置为1,可在nacos控制台直接设置权重

NacosRule负载均衡策略

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

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

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

根据权重负载均衡

实际部署中会出现这样的场景,服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高

1.在Nacos控制台可以设置实例的权重值,首先选中实例后面的编辑按钮

2.将权重设置为0.1,测试可以发现8081被访问到的频率大大降低

实例的权重控制

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

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

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

环境隔离- namespace

nacos控制台可创建新的命名空间,创建好后会返回一个命名空间id

修改order-service的application.yml,添加namespace,内容就时命名空间id

重启order-service后,再来查看控制台

此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错

总结

namespace用来做环境隔离

每个namespace都有唯一id

不同namespace下的服务不可见

nacos注册中心细节分析

临时实例和非临时实例

服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置

总结

Nacos与eureka的共同点

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

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

Nacos与Eureka的区别

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

临时实例心跳不正常会被剔除,非临时实例则不会被剔除

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

Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

微服务技术对比

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

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

相关文章

【C++学习手札】模拟实现vector

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:くちなしの言葉—みゆな 0:37━━━━━━️💟──────── 5:28 🔄 ◀️ ⏸ ▶️ ☰…

Verilog基础:三段式状态机与输出寄存

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html 对于Verilog HDL而言,有限状态机(FSM)是一种重要而强大的模块,常见的有限状态机书写方式可以分为一段式,二段式和三段式,笔者强烈建议使用三…

进程信号(linux)

什么是信号 信号是一种用于进程之间通信或操作的一种手段,通常一个进程会在任意时刻接收到系统发送的信号,因此信号也可以看做是一种进程事件异步通知的手段。 一个进程可以对信号有三种操作: 默认操作:默认进行信号对应的操作…

【Python】【应用】Python应用之一行命令搭建HTTP、FTP服务器

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:Python应用&…

python爬虫 之 JavaScript 简单基础

文章目录 在网页使用JavaScript 代码的方式常用的JavaScript 事件常用的JavaScript 对象 在网页使用JavaScript 代码的方式 在网页中使用 JavaScript 代码的方式主要有三种: 内联方式(Inline): 在 HTML 文件中直接嵌入 JavaScrip…

简单的 UDP 网络程序

文章目录: 简单的UDP网络程序服务端创建套接字服务端绑定启动服务器udp客户端本地测试INADDR_ANY 地址转换函数关于 inet_ntoa 简单的UDP网络程序 服务端创建套接字 我们将服务端封装为一个类,当定义一个服务器对象之后,需要立即进行初始化…

【uniapp/uview1.x】u-upload 在 v-for 中的使用时, before-upload 如何传参

引入: 是这样一种情况,在接口获取数据之后,是一个数组列表,循环展示后,需要在每条数据中都要有图片上传,互不干扰。 分析: uview 官网中有说明,before-upload 是不加括号的&#xff…

《QT从基础到进阶·三十三》QT插件开发QtPlugin

插件和dll区别: 插件 插件主要面向接口编程,无需访问.lib文件,热插拔、利于团队开发。即使在程序运行时.dll不存在,也可以正常启动,只是相应插件功能无法正常使用而已; 调用插件中的方法只要dll即可&#x…

Ajax 之XMLHttpRequest讲解

一直以来都听别人说Ajax,今天终于接触到了。。。。。。。。。。 一.什么是Ajax? 答: AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 AJAX 异步 JavaScript和XML&#x…

Linux(2):初探

Linux 是什么 Linux 就是一套操作系统。Linux 就是核心与系统呼叫接口那两层。 应用程序不算 Linux。 Linux 提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 这个架构是沿袭Unix 良好的传统来的,相当的稳定而功能强大。 在 Lin…

CPD:使用restAPI和cpd-cli命令创建DMC实例

环境 Red Hat Enterprise Linux release 8.6 (Ootpa)OCP 4.12.22IBM CP4D 4.8.0Data Management Console 3.1.12 (DMC for CPD 4.8.0) 注:使用了fyre VM。 创建DMC实例 准备 首先export环境变量: . ./stg_env.sh把 cpd-cli 放到PATH里。编辑 ~/.ba…

【网络奇遇记】那年我与计算机网络的初相识 —— 网络的体系结构

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. 常见的三种计算机网络体系结构1.1 开放系统互连参考模型1.2 TCP/IP参考模型1.3 原理参考模型 二…

k8s pod常用运维命令

1. 概述 kubectl 命令是操作 Kubernetes 集群的最直接和最高效的途径,熟练掌握命令的使用能起到事半功倍的效果,整理命令有助于加深记忆,该文仅记录关于pod常用的操作运维命令。 2. 查看namespaces 查看k8s集群中目前存在的namespaces kub…

【设计一个缓存--针对各种类型的缓存】

设计一个缓存--针对各种类型的缓存 1. 设计顶层接口2. 设计抽象类 -- AbstractCacheManager3. 具体子类3.1 -- AlertRuleItemExpCacheManager3.2 -- AlertRuleItemSrcCacheManager 4. 类图关系 1. 设计顶层接口 // 定义为一个泛型接口,提供给抽象类使用 public interface Cach…

Centos7安装Redis

1.背景 2.步骤 1.安装gcc依赖 检查是否已安装gcc gcc -v 上图表示已安装,如果没有安装执行如下命令 [rootlocalhost local]# yum install -y gcc 2.下载并解压安装包 [rootlocalhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz [rootlocalhost lo…

《011.SpringBoot之餐厅点餐系统》

《011.SpringBoot之餐厅点餐系统》【界面简洁功能简单】 项目简介 需要源码及数据库的私信… [1]本系统涉及到的技术主要如下: 推荐环境配置:DEA jdk1.8 Maven MySQL 前后端分离; 后台:SpringBootMybatisPlus; 前台:Layuivue; …

【python】OpenCV—Image Pyramid(8)

文章目录 1 图像金字塔2 拉普拉斯金字塔 1 图像金字塔 高斯金字塔 在 OpenCV 中使用函数 cv2.pyrDown(),实现图像高斯金字塔操作中的向下采样,使用函数 cv2.pyrUp() 实现图像金字塔操作中的向上采样 import cv2img cv2.imread(C://Users/Administrat…

Mysql中的进阶增删查改操作(二)

联合查询和合并查询 一.联合查询1.内连接2.外链接2.1左外连接2.2右外连接 3.自连接4.子查询5.合并查询 一.联合查询 步骤 1.进行笛卡尔积 2.列出连接条件 3.根据需求再列出其他条件 4.针对列进行精简(可以使用聚合函数) 我们先搭建一个多表查询的框架 这样一个多表查询就搭建出…

基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要 美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…