微服务学习笔记(二)

news2024/12/23 23:13:04

文章目录

  • Spring Cloud Eureka
    • 1.Spring Cloud Eureka 简介
    • 2.Spring Cloud Eureka 和 Zookeeper 的区别
      • 2.1 什么是 CAP 原则(面试)
      • 2.2 分布式特征
    • 3.Spring Cloud 其他注册中心
      • 3.1 Consul
      • 3.2 Nacos
    • 4.Spring Cloud Eureka 快速入门
      • 4.1 搭建 Eureka-server
        • 4.1.1创建Maven工程
        • 4.1.2修改配置文件
        • 4.1.3添加注解
        • 4.1.4访问测试
        • 4.1.5分析端口8761
      • 4.2 搭建 Eureka-client
        • 4.2.1 创建项目 client-a选择依赖
        • 4.2.2修改配置
        • 4.2.3访问测试
        • 4.2.4再创建项目client-b选择依赖
        • 4.2.5访问测试
      • 4.3 同一个服务(客户端)启动多台
        • 4.3.1 IDEA 启动多台服务操作
        • 4.3.2测试访问
      • 4.4 注册中心的状态认识
        • 4.4.1 服务的实例名称
      • 4.5 常用配置文件设置
        • 4.5.1 server 中常用的配置
        • 4.5.2 client 中常用的配置
    • 5.构建高可用的 Eureka-Server 集群
      • 5.1 对刚才的 eureka-server 修改配置文件
        • 5.1.1 修改server-1的配置文件
        • 5.1.2 创建server-b/server-c
        • 5.1.3访问测试
        • 5.1.4原因分析
        • 5.1.5 重新修改配置文件
        • 5.1.6 访问测试最终的集群信息
      • 5.2 集群的使用
        • 5.2.1 改造 eureka-client-a 的配置文件
        • 5.2.3终极方案
        • 5.2.2 测试
    • 6.Eureka 概念的理解
      • 6.1 服务的注册
      • 6.2 服务的续约
      • 6.3 服务的下线(主动下线)
      • 6.4 服务的剔除(被动下线,主动剔除)

Spring Cloud Eureka

1.Spring Cloud Eureka 简介

注册发现中心
Eureka 来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是 Netflix 在线影片公司开源的一个服务注册与发现的组件,和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被 Spring Cloud 社区整合为 Spring Cloud Netflix 模块。Eureka 是 Netflix 贡献给 Spring Cloud 的一个框架!Netflix 给 Spring Cloud 贡献了很多框架,后面我们会学习到!

2.Spring Cloud Eureka 和 Zookeeper 的区别

2.1 什么是 CAP 原则(面试)

在分布式 微服务里面 CAP 定理
问:为什么 zookeeper 不适合做注册中心?
CAP 原则又称 CAP 定理,指的是在一个分布式系统中,
一致性(Consistency)
可用性(Availability)
分区容错性(Partition tolerance)(这个特性是不可避免的)
CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

2.2 分布式特征

在这里插入图片描述
C : 数据的一致性 (A,B,C 里面的数据是一致的)
Zk 注重数据的一致性。
Eureka 不是很注重数据的一致性!
A: 服务的可用性(若 zk 集群里面的 master 挂了怎么办)Paxos(多数派)
在 zk 里面,若主机挂了,则 zk 集群整体不对外提供服务了,需要选一个新的出来(120s左右)才能继续对外提供服务!
Eureka 注重服务的可用性,当 Eureka 集群只有一台活着,它就能对外提供服务
P:分区的容错性(在集群里面的机器,因为网络原因,机房的原因,可能导致数据不会里面同步),它在分布式必须需要实现的特性!

Zookeeper 注重数据的一致性,CP zk(注册中心,配置文件中心,协调中心)
Eureka 注重服务的可用性 AP eureka (注册中心)

3.Spring Cloud 其他注册中心

Spring Cloud 还有别的注册中心 Consul ,阿里巴巴提供 Nacos 都能作为注册中心,我们的选择还是很多。

3.1 Consul

https://spring.io/projects/spring-cloud-consulConsul
在这里插入图片描述

3.2 Nacos

https://nacos.io/zh-cn/
在这里插入图片描述
但是我们学习还是选择 Eureka ,因为它的成熟度很高。面试时候问的也是它,不是别人!
eureka nacos

4.Spring Cloud Eureka 快速入门

在这里插入图片描述

4.1 搭建 Eureka-server

4.1.1创建Maven工程

里面创建一个eureka-server的spring boot工程,添加eureka-server依赖。
在这里插入图片描述

4.1.2修改配置文件

在这里插入图片描述

4.1.3添加注解

在这里插入图片描述

4.1.4访问测试

在这里插入图片描述

4.1.5分析端口8761

Eureka-Server 不仅提供让别人注册的功能,它也能注册到别人里面,自己注册自己
所以,在启动项目时,默认会注册自己,我们也可以关掉这个功能。

在这里插入图片描述

4.2 搭建 Eureka-client

4.2.1 创建项目 client-a选择依赖

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

4.2.2修改配置

在这里插入图片描述

修改启动类添加注解
在这里插入图片描述

4.2.3访问测试

在这里插入图片描述

4.2.4再创建项目client-b选择依赖

同client-a一样方式,注意修改配置文件即可
在这里插入图片描述

4.2.5访问测试

在这里插入图片描述

4.3 同一个服务(客户端)启动多台

4.3.1 IDEA 启动多台服务操作

在这里插入图片描述

在这里插入图片描述

4.3.2测试访问

在这里插入图片描述

4.4 注册中心的状态认识

UP: 服务是上线的,括号里面是具体服务实例的个数,提供服务的最小单元
DOWN: 服务是下线的
UN_KONW: 服务的状态未知

4.4.1 服务的实例名称

在这里插入图片描述节点
在这里插入图片描述

4.5 常用配置文件设置

在这里插入图片描述

4.5.1 server 中常用的配置

server:
	port: 8761
spring:
	application:
		name: eureka-server
eureka:
	client:
		service-url: #eureka 服务端和客户端的交互地址 , 集群用 , 隔开
			defaultZone: http://localhost:8761/eureka
		fetch-registry: true # 是否拉取服务列表
		register-with-eureka: true # 是否注册自己(单机 eureka 一般关闭注册自己 , 集群注意打开)
server:
	eviction-interval-timer-in-ms: 30000 # 清除无效节点的频率 ( 毫秒 )-- 定期删除
	enable-self-preservation: true #server 的自我保护机制,避免因为网络原因造成误剔除 , 生产环境建议打开
	renewal-percent-threshold: 0.85 #85% ,如果在一个机房的 client 端, 15 分钟内有 85% 的 client 没有续约,那么则可能是
	网络原因,认为服务实例没有问题,不会剔除他们,宁可放过一万,不可错杀一个,确保高可用
instance:
	hostname: localhost # 服务主机名称
	instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} # 实例 id
	prefer-ip-address: true # 服务列表以 ip 的形式展示
	lease-renewal-interval-in-seconds: 10 # 表示 eureka client 发送心跳给 server 端的频率
	lease-expiration-duration-in-seconds: 20 # 表示 eureka server 至上一次收到 client 的心跳之后,等待下一次心跳的超时时
间,在这个时间内若没收到下一次心跳,则将移除该实例

4.5.2 client 中常用的配置

server:
	port: 8080
spring:
	application:
		name: eureka-client
eureka:
	client:
		service-url: #eureka 服务端和客户端的交互地址 , 集群用 , 隔开
			defaultZone: http://localhost:8761/eureka
		register-with-eureka: true # 注册自己
		fetch-registry: true # 拉取服务列表
		registry-fetch-interval-seconds: 5 # 表示 eureka-client 间隔多久去拉取服务注册信息
instance:
	hostname: localhost # 服务主机名称
	instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} # 实例 id
	prefer-ip-address: true # 服务列表以 ip 的形式展示
	lease-renewal-interval-in-seconds: 10 # 表示 eureka client 发送心跳给 server 端的频率
	lease-expiration-duration-in-seconds: 20 # 表示 eureka server 至上一次收到 client 的心跳之后,等待
下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该实例

5.构建高可用的 Eureka-Server 集群

在这里插入图片描述

5.1 对刚才的 eureka-server 修改配置文件

5.1.1 修改server-1的配置文件

配置文件

server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  client:
    fetch-registry: true #是否拉去服务
    register-with-eureka: true #是否注册自己
    service-url:
      defaultZone: http://localhost:8762/eureka/,http://localhost:8763/eureka/
  server:
    eviction-interval-timer-in-ms: 90000
  instance:
    lease-expiration-duration-in-seconds: 90

5.1.2 创建server-b/server-c

在这里插入图片描述配置文件和server大同小异,不同的是注册的地址和端口号。

5.1.3访问测试

在这里插入图片描述发现并没有出现集群信息,只是同一个服务 server 启动了多台 没有数据交互 不是真正意义上的集群

5.1.4原因分析

http://localhost:8761/eureka/,http://localhost:8762/eureka/
这样写,eureka 认为只有一个机器,就是 localhost
所以这里面不能写成一样
修改 hosts 文件: C:\Windows\System32\drivers\etc
如果你修改了 hosts 文件 发现没有生效 记得在 cmd 里面刷新一下

修改hosts的配置文件
映射地址
在这里插入图片描述

5.1.5 重新修改配置文件

在这里插入图片描述
server-b和server-c一样的配置 修改好即可

5.1.6 访问测试最终的集群信息

在这里插入图片描述

5.2 集群的使用

5.2.1 改造 eureka-client-a 的配置文件

server:
  port: 8081
spring:
  application:
    name: eureka-client-a

eureka:
  client:
    service-url:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/,http://peer3:8761/eureka/
    register-with-eureka: true
    fetch-registry: true
  instance:
    instance-id: ${spring.application.name}:${server.port}
    lease-expiration-duration-in-seconds: 30

5.2.3终极方案

server端
修改IDE的服务,修改端口号,启动三台机器即可。

server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  client:
    fetch-registry: true #是否拉去服务
    register-with-eureka: true #是否注册自己
    service-url:
      defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka
  instance:
    instance-id: ${spring.application.name}:${server.port}
    prefer-ip-address: true
    lease-expiration-duration-in-seconds: 5

client端
但凡有一个挂掉都没事,其他的还存活。

server:
  port: 8081
spring:
  application:
    name: eureka-client-a

eureka:
  client:
    service-url:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/,http://peer3:8761/eureka/
    register-with-eureka: true
    fetch-registry: true
  instance:
    instance-id: ${spring.application.name}:${server.port}
    lease-expiration-duration-in-seconds: 30

5.2.2 测试

不管哪一台 server 都注册成功了
在这里插入图片描述

在这里插入图片描述

6.Eureka 概念的理解

6.1 服务的注册

当项目启动时(eureka 的客户端),就会向 eureka-server 发送自己的元数据(原始数据)(运行的 ip,端口 port,健康的状态监控等,因为使用的是 http/ResuFul 请求风格),eureka-server 会在自己内部保留这些元数据(内存中)。(有一个服务列表)(restful 风格,以 http 动词的请求方式,完成对 url 资源的操作)

6.2 服务的续约

项目启动成功了,除了向 eureka-server 注册自己成功,还会定时的向 eureka-server 汇报自己,心跳,表示自己还活着。(修改一个时间)

6.3 服务的下线(主动下线)

当项目关闭时,会给 eureka-server 报告,说明自己要下机了。

6.4 服务的剔除(被动下线,主动剔除)

当项目超过了指定时间没有向 eureka-server 汇报自己,那么 eureka-server 就会认为此节点死掉了,会把它剔除掉,也不会放流量和请求到此节点了。

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

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

相关文章

【ELM回归预测】探路者优化极限学习机回归预测【含Matlab源码 2231期】

⛄一、探路者算法简介 提出的一种新兴的智能优化算法,该算法的思想起源于群体动物的狩猎行为,种群中的个体分为探路者和跟随者两种角色。算法的寻优过程模拟了种群寻找食物的探索过程,利用探路者、跟随者两种角色不同的位置更新方式以及角色…

蓝牙血压计PCBA硬件解决方案

蓝牙血压计是利用现代电子技术与血压间接测量原理进行血压测量的医疗设备。家庭医疗保健已成为现代人的医疗保健时尚。过去人们测量血压必须到医院才行,而今只要拥有了蓝牙血压计,坐在家里便可随时监测血压的变化,如发现血压异常便可及时去医…

odoo14 | odoo中domain的复杂写法

本片文章主要讲述domain中复杂业务需求的逻辑构思,关于doamin的使用位置会在另一篇文章中体现。 二叉树与波兰式 在讲述domain的使用前先讲解一下科班生必学的《数据结构与算法》中二叉树遍历与波兰式的内容,如果你会二叉树先序遍历与波兰式转换请直接…

从零开始的深度学习之旅(2)

目录深层神经网络1. 异或门问题1.1 异或代码实现2.神经网络的层2.1 去除激活函数的异或门2.2 使用sigmoid函数的异或门3.从0实现深度神经网络的正向传播深层神经网络 1. 异或门问题 在第一篇的博客中,我们使用代码实现了与门 import torch X torch.tensor([[1,0,0],[1,1,0]…

通过实战总结的 使用GoFrame小技巧

文章目录gf gen dao设置参数可传可不传model作为结构体类型模型关联添加数据主程序如下:gomeGoods.MainImgs的定义:批量插入数据配置插件自动生成service总结一起学习有朋友问我能不能搞一个GoFrame技巧篇,让新手少踩坑的那种。今天他来了&am…

数据库-范式例题

目录 1、请简述满足1NF、2NF和3NF的基本条件。并完成下题:某信息一览表如下:其是否满足3NF,若不满足将其化为符合3NF的关系。 解:     1NF: 属性都是不可分割的数据项 2NF: 不存在部分函数依赖,存在传递函数依赖。 2NF: 不存在

算法复杂度分析中的渐近分析(基于输入大小)

为什么要进行性能分析? 有许多重要的事情需要注意,例如用户友好性、模块化、安全性、可维护性等。为什么要担心性能?答案很简单,只有当我们有性能时,我们才能拥有上述所有东西。因此,性能就像货币&#xf…

磷酸化多肽Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe、129785-85-9

在血管平滑肌细胞中有多种作用,包括正常动脉的收缩,培养的细胞或病变血管的肥大或增生等。 编号: 200676 中文名称: 八肽DRV-pTyr-IHPF CAS号: 129785-85-9 单字母: H2N-DRV-pTyr-IHPF-OH 三字母: H2N-Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe-COOH 氨基…

MySQL——进阶

第1章 存储引擎 1.1 MySQL体系结构 1.2 存储引擎介绍 定义:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。我们可以在创建表的时候,来指定…

msfconsole之制作windows木马并成功获取shell

msfconsole之制作windows木马并成功获取shell 一、工具简介     msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所…

软考高级系统架构师_计算机组成与结构---备考笔记004

奇校验和海明码考的比较多,可以看到: 奇校验:比如有个11001 这个要进行校验,那么,需要在后面添加什么?注意,要添加0,因为奇校验,是奇数个1,这里已经有3个1了,所以后面要加0,变成110010 这样 然后我们再来看,如

01-SpringMVC项目构建

Overview 梳理了创建基于SpringMVC的项目创建流程和注意点,防止遗忘 1. 创建一个空项目 2. 添加新模块 3. 在pom文件中指定打包方式并刷新 4. 将模块目录结构改造成web项目 这里的web配置是你在pom文件中指定war的打包方式后就会出现的,当然没出现也可…

迅为3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心方案

1.全国产设计方案 从里到外 100% 全国产 从CPU自主指令系统到开发板每一个元器件,做到100%全国产化。 2.产品开发更快捷 PCIE 32路 相比同类嵌入式板卡仅2到4路的PCIE, 这款核心板可以支持多达32路的PCIE 3.0接口 3.工业化标准设计 遵循COM E…

数据库-mysql架构与sql执行原理(上)(一)

目录 一、一条查询的sql他是怎么样去执行的呢? 二、建立链接 同步 异步 三、连接方式 长链接 短链接 四、通信协议 Unix socket TCP/IP 共享内存 五、通信方式 单工 半双工 全双工 六、缓存 七、解析 八、预处理器 九、优化器 十、查询执行引擎…

ASEMI肖特基二极管MBR15200FAC参数,MBR15200FAC图片

编辑-Z ASEMI肖特基二极管MBR15200FAC参数: 型号:MBR15200FAC 最大重复峰值反向电压(VRRM):200V 最大RMS电桥输入电压(VRMS):140V 最大直流阻断电压(VDC&#xff09…

智慧零售解决方案-最新全套文件

智慧零售解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧零售全套最新解决方案合集一、建设背景 传统零售业发展趋势分析: (1)市场竞争日益激烈 零售业的发展一直是一个竞争性强的产业,这个市场的发…

数据结构之堆

堆: 堆是一颗完全二叉树,分为大根堆和小根堆两种。大根堆:根节点大于等于左右节点;小根堆:根节点小于等于左右节点。所以大根堆的根节点是最大值,小根堆的根节点是最小值。 c中priority_queue可以用来声明…

Axure原型创建折线、柱状等图形,引用echarts

1、在echarts网站选择对应的统计图形: 网址:Examples - Apache ECharts 2、对代码进行编辑,使其适配自己的业务。 3、在Axure中创建一个基本元件矩形。命名为:test 4、选择交互--载入时--打开连接--Fx 5、在插入变量中增加如下…

SVN windows安装及初步使用;及初次连接版本库、提交、还原、比对操作说明文档

派昂医药-SVN版本库说明总览&#xff1a; 1.说明 2.版本库地址 3.托管项目明细 4.SVN客户端安装 5.SVN-Win端版本操作 6.SVN客户端浏览 1.说明&#xff1a; <1、协议 SVN私有协议 <2、PC系统字符集要求 中文GBK编码&#xff1b;中文以外UTF-8编码&#xff0c;如乱码…

中国市场杂志社中国市场编辑部2022年第32期目录

前沿理论 新冠肺炎疫情下跨境冷链物流的新思考——以大连冷链业疫情为例 廖燕莲;谷玉红;尚书山; 1-3《中国市场》投稿&#xff1a;cnqikantg126.com 数字经济背景下数字服务税问题探析 李瑞玲; 4-6 我国工业能源效率提升的阻碍及其对策探究 韩洁平;田振东;张诗雅; …