微服务- Eureka 注册

news2024/12/24 20:20:26

1. 首先从结构方面来说

     单体架构:比较适合用于小型项目(像一些学生管理系统),简单方便,高度耦合

    分布式架构:松耦合,扩展性好,但架构复杂,难度大,适合大型互联网项目,像京东淘宝等

     微服务:一种良好的分布式架构方案

               优点:拆分力度小,服务更独立,耦合度更低

               缺点:架构非常复杂,运维,监控,部署难度提高

不同微服务,不要重复开发相同业务。微服务数据独立,不同微服务需要有自己的数据库。不要访问其他微服务的数据库,但是微服务可以将自己的业务接口调用给其他使用,从而间接访问其他微服务数据。

 消费者和提供者

服务提供者:暴露接口给其他微服务使用

服务提供者:调用其他微服务提供的接口

二者的角色是相对的

——————————————————————————————————

Eureka 注册中心

Eureka的作用:Eureka就是一个注册中心,提供服务注册和发现的功能

        服务提供者:该微服务暴露出自己的接口(restful风格),供注册中心中注册的其他微服务访问数据

        服务消费者:从注册中心中,获取服务列表,从而调用其他服务的就接口

Eureka负责管理,记录服务者的信息。服务调用者无需自己寻找服务,而是将自己的需求告诉Eureka,Rureka将包含信息的服务告诉你。

 在Eureka架构中,微服务角色有两种:

   EurekaServer:服务端,注册中心。同时Eureka也会将自己注册进去

              1. 记录服务信息

               2. 心跳监控

   EurekaClient:客户端

       1。服务提供者,像userservice

        2. 服务消费者,orderservice 

 接下来开始搭建EurekaServer

     1. 引入eureka-server 依赖

          

   2. 添加@EnableEurekaServer注解

 

     3.在application.yml 中配置eureka地址

其中

server:
  port: 10086  这个端口号由自己设定,没有要求

这个是注册者的姓名,可以自己设定

spring:
  application:
    name: eurekaserver

2. 服务注册,进行客户端注册

引入eureka-client 依赖,注意,和eureka-server的依赖不一样

 在application.yml 中配置eureka地址,注意这里容易出错。

 配置服务的姓名在spring中

 以上运行之后就可以在Eureka注册中心进行实例化注册了,下面就是注册了 eurekaserver,userservice,orderservice

3. 服务发现

使用服务名直接进行restful风格的地址。userservice

 给RestTemplate添加@LoadBalanced 注解

 最后使用服务调用者名称进行远程调用, 即可获取cloud_order和cloud_user数据

httplocalhost:8080/order/101http://localhost:8080/order/101

打开下方控制台的运行代码管理 view -> Tool windows ->service

springcloud 克隆子项目 改变端口号,一个userservice 两个模块 

首先右击正在运行的userapplication—》点击copy configuration—》选择 modify options —》选择evoirment varible 然后 填写  server.port=8002  即可配置端口号成功

———————————————————————————————————————————

负载均衡

1.负载均衡流程

 可以看到,uservice服务有两个运行模块,然后当orderservice请求服务时,一般采用轮询的方式进行使用这两个模块相同,但是端口号不同的数据。

 在orderservice服务中,本来是使用

String url="http://userservice/user/"+order.getUserId();

但是不能直接访问useservice服务。首先需要通过orderservice 来发送请求

http://userservice/user/1  到拦截器-》由拦截器RibbonLoadBanlancerClient 获取服务id -》userservice -》通过DynamicServerListLoadBalancer 来拉取service 从Eureka-server中获取服务列表-》通过负载均衡IRule来选择使用某个服务-》返回给RibbonLoadBanlancerClient-》最后修改URL,发起请求http://localhost:8080/user/1,最后请求到了8081.

这里涉及到了负载均衡 ,

2. 负载均衡自定义

可以通过定义IRule来修改负载均衡策略

1.代码的形式

 可以看到userservice的两个服务是随机的形式,原来是轮询模式,二者相互轮转 

 

2. 第二种就是通过配置文件的形式

 3. 饥饿加载

Ribbon默认为懒加载

*懒加载:就是只有第一次访问的时候(才会去加载ribbon客户端)才会去创建LoadBalanceClient(后面还要做服务拉取),所以请求时间较长,后面服务列表就会缓存在内存当中

*饥饿加载:在项目创建的时候就创建,第一次访问降低访问耗时

建立饥饿加载的方法:进行application.yml 配置

 

 

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

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

相关文章

CIO40---3个亿数字化供应链实战

2019年某天,我被总裁叫到办公室,我当是VP A:企业情况 一家A股上市 市值150亿,年销售50亿, 员工4000人,全国4个工厂 家庭企业,高管老人多 经销商模式,总代模式,工程…

unserialize3

看着这个源码长度,就觉着比较简单 本题就一个__wakeup方法需要绕过,但是不对哦没有提示也不知道该参数得多少呀 本来都要复制进编译器写了,发现源码闭合有点问题,可能是做了隐藏 解题步骤 实在找不到了,就尝试了一下fl…

81、基于STM32单片机的颜色识别 TCS3200 RGB 检测系统设计(程序+原理图+PCB源文件+参考论文+开题报告+任务书+设计资料+元器件清单等)

摘 要 随着现代工业生产向高速化、自动化方向的发展,色彩识别广泛应用于各种工业检测和自动控制领域,而生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。如:各种物体表面颜色识别(产品包…

什么是三极管推挽电路

这是一个三极管推挽电路,上面是一个NPN的三极管,下面是一个PNP的三极管。 当输入信号为VCC时,上面的三极管导通,下面的三极管截止,输出信号为VCC-0.7V,这个0.7V就是上面NPN三极管BE间的导通压降 当输入信号…

Spring Bean 作用域的定义

在 Spring 配置中,我们可以通过 scope 属性来定义 Spring Bean 的作用域,可以接受 5 个内建的值,分别代表 5 种作用域类型,下面给大家详细总结一下: 1、singleton,用来定义一个 Bean 为单例,也…

【MATLAB第50期】基于MATLAB的RELM-LOO多输入单输出回归分类预测算法与RELM及ELM进行对比

【MATLAB第50期】基于MATLAB的RELM-LOO多输入单输出回归&分类预测算法与RELM及ELM进行对比 引言 RELM-LOO即通过LOO计算效率方法对其RELM模型正则化C系数进行寻优。 对于进化算法寻优来说, 结果更稳定。 可参考以下文献: [1] Shao Z , Er M J , W…

小红书测评类产品种草文案怎么写?品牌方必看

小红书逐渐成为了越来越多年轻人购物和分享的主流平台。测评类产品的种草文案尤为重要,因为它可以帮助消费者更好地了解产品的性能、使用方法以及适用场景,从而为购物决策提供参考。这个时候将某个产品植入进去,就会更容易被用户所接受&#…

C++高级编程01

目录 1、双冒号作用域运算符 2、namespace命名空间 3、using声明以及using编译指令 using 声明 4、C对C语言的增强 4、const链接属性 5、const分配内存情况 6、尽量用const代替define 7、引用 1、双冒号作用域运算符 ::代表作用域 如果前面什么都不添加 代表全局作用…

K8S资源控制器管理

资源控制器 1 资源控制器1.1 控制基础1.1.1 控制原理1.1.2 控制对象 1.2 标签选择器1.2.1 标签基础1.2.2 标签选择器 1.3 副本控制器1.3.1 RC&RS1.3.2 Deploy基础1.3.3 Deploy进阶1.3.4 DaemonSet1.3.5 任务控制器 1.4 监视控制器1.4.1 metrics服务1.4.2 HPA实践 1 资源控制…

Git 推送教程

一般 add commit push即可。Git全流程: git init #初始化仓库 git add .文件名 #添加文件,添加全部文件可以直接写. git commit -m "信息" #提交到本地仓库 git remote add origin 远程仓库地址 #链接远程仓库,创建主分支 git p…

【每日一题】2. 两数相加

【每日一题】2. 两数相加 2. 两数相加题目描述解题思路 2. 两数相加 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一…

MySQL的体系架构

文章目录 前言MySQL的Server层MySQL的存储引擎1)InnoDB 存储引擎2)MyISAM 存储引擎3)Memory 存储引擎 前言 在学习一种事务之前,我们需要先了解事物的基本组成结构,清楚了事物的基本组成结构之后,我们才能…

QCC51XX---chain是什么?

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 高通的DSP对很多人来说还是比较难以理解与操作的,DSP里最基本的是要认识音频的处理链路,也就是平台中的chain。他是由多个模块(operator)连接起来的,连接的方法sink和earbud有些不同,这里会从6.x开始sink的chain…

shell判断程序是否运行

一、需求 服务部署在linux上,要求服务器上的服务可以一直保持正常运行 二、问题 在linux上部署的微服务,不知道什么原因过一段时间就自己停掉了,无法启动。 三、解决办法 添加angle守护进程,通过定时执行脚本来判断程序是否运行…

AI 绘画 - 建筑绘图辅助设计之模型训练

前情提要 2023-06-18 周日 杭州 小雨 小记: 昨天搞的好累,10点左右就想着先躺一会儿,然后就睡过去了,很奇怪,如果进行 AI 绘画,晚上就会做很奇怪的梦,说不上来的那种感觉,就是莫名的不舒服。 …

微信怎么能自动回复?

有些小伙伴可能有多个微信号来进行业务活动,一天收到的信息太多,眼花缭乱,回复不过来,就想在微信可不可以有个自动回复消息,就可以通过自动回复引导用户看到想让他们看到的。这样就可以降低工作量的同时,提…

Hive Metastore 表结构

Hive MetaStore 的ER 图如下。 部分表结构和说明。 CTLGS(CATALOGS) catalogs 可以隔离元数据。默认只有1行。一个 CATALOG 可以有多个数据库。 mysql> DESC CTLGS; -------------------------------------------------------- | Field | Type | Null |…

判断关系属于哪一种范式(期末考试必看)

1NF(第一范式) 属性值是不可分的原子值 2NF(第二范式) R1NF,每个非主属性都完全函数依赖于R的候选键 3NF(第三范式) R1NF,每个非主属性都不传递依赖于 R的候选键 BCNF(BC…

ubuntu修改主机名和用户名

参考文章: https://blog.csdn.net/fkmmmm/article/details/127333212 一、修改主机名 sudo vi /etc/hostname2、 sudo vi /etc/hosts3、 sudo reboot二、修改用户名 1、修改所有原用户名(如果文件内没有原用户名则不用改 sudo vi /etc/sudoers 2、 s…

【C++11】 包装器 | bind

文章目录 1. 包装器概念理解用法成员函数的包装静态成员函数非静态成员函数 2. bind概念理解功能1 调整参数顺序 (用处不大)功能2 调整参数个数 1. 包装器 概念理解 function包装器 也被叫做 适配器 C11中function本质是类模板,也是一个包装器 意义在于 对可调用…