Eureka、Ribbon、Nacos之初识微服务(一)
创始人
2024-05-21 08:40:46
0

一.微服务技术栈

二.服务架构

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反向代理

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...