SpringCloud学习

认识微服务

1.单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署

优点:架构简单

部署成本低

缺点:耦合度高

2.分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务

优点:降低服务耦合度

有利于服务升级拓展

缺点:配置环境增多

考虑问题:服务拆分粒度

服务集群地址维护

服务之间的远程调用

服务健康状态感知

3.微服务:经过良好的架构设计的分布式架构方案

特征:单一职责:微服务拆分粒度更小,每一服务都对应唯一的业务能力,做到单一职责,避免重复业务开发

面向服务:微服务对外暴露业务接口

自治:团队独立、技术独立、数据独立、部署独立

4.微服务结构

请求路由负载或均衡

用户——>服务网关——————————>服务集群

SpringCloud

1.国内使用最广泛

集成了各种微服务功能的组件,并基于SpringCloud实现组件的自动装配

2.组件: 服务注册发现 统一配置管理

服务远程调用 统一网关路由

服务链路监控 流控、降级、保护

3.服务拆分及远程调用

注:不同微服务,不需要重复开发相同业务

微服务数据独立,不访问其他微服务数据库

微服务将自己的业务暴露为接口,供其他为服务调用

4.远程调用方式分析:基于RestTemplate发起的http请求实现远程调用(说明url路径)

http请求做远程调用是与语言无关的调用,只要知道对方的ip、端 口、接口路径、请求参数即可

  • 注入RestTemplate

  • 在Service类中使用restTemplate.queryOrderById(url,返回值类型)方法

5.服务远程调用:提供者与消费者

服务提供者:一次业务中,被其他微服务调用用的服务。(提供接口给其他微服务)

服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)

一个服务可以既是提供者又是消费者

6.服务调用的问题:消费者如何获取提供者的地址信息

若有多个提供者,消费者如何选择

消费者如何得知提供者的健康状态

Eurka

1.Eurka注册中心(对应上述问题):

  • 提供者启动时向eurka注册自己的信息(心跳机制,每30秒一次)

eurka保存这些信息

消费者根据服务名称向eurka拉取提供者信息

  • 消费者利用负载均衡算法,从服务列表中挑选一个

  • 服务提供者每隔30秒向EurkaServer发送心跳请求,报告健康状态

eurka会更新记录服务列表信息,心跳不正常会被剔除

消费者可以拉取到最新的信息

2.搭建EurkaServer服务步骤:

  • 创建项目,引入eurka-server依赖

  • 编写启动类,添加注解@EnableEurkaServer

  • 添加文件application.yml,编写配置文件eurka地址(http://127.0.0.1:10086/eureka)

3.服务注册(将客户端注册进eurka)

将user-service服务注册到EurkaServer中

  • 引入依赖eurka-client

  • 在application.yml文件,编写配置eurka地址

4.在order-service完成服务拉取(服务发现)

服务拉取是基于服务名称获取服务列表,然后对服务列表做负载均衡

  • 修改order-service代码,修改访问url的路径,用服务名代替ip、端口

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

  • 在order-service项目的启动类OrderAppilation中的RestTemplate添加负载均衡注解

@LoadBalenced

服务发现步骤

  • 引入依赖eurka-client

  • 在application.yml文件,编写配置eurka地址

  • 在RestTemplate中添加@LoadBalanced注解

  • 给服务提供者的服务名称远程调用

负载均衡

1.负载均衡流程

  • order-service向Ribbon负载均衡发起请求

  • Ribbon拉取eurka-server

  • eurka-server返回服务列表给Ribbon

  • Ribbon轮询到端口号

2.负载均衡策略

修改负载均衡策略(两种)

  • 代码方式(全局):在order-service中的OrderApplication类中,定义一个新的IRule(规则接口)

@Bean

public IRule randomRule(){

return new RandomRule();

}

  • 配置文件方式(某个微服务):在order-service中的application.yml文件中,添加新的配置

userservice:

ribbon:

NFLoadBalanceRuleClassName: com.netflix.loadbalancer.RandomRule

3.饥饿加载

Ribbon默认采用懒加载,第一次访问时才会创建LoadBalanceClient,请求时间很长。

饥饿加载是在项目启动时创建,降低第一次访问的耗时,通过修改配置开启饥饿加载

ribbon:

eager-load:

enabled:ture #开启饥饿加载

clients: userservice #指定饥饿加载的服务名称(可有多个)

Nacos

1.认识Navos

是SpringCloud的一个组件,功能比Eurka更多

2.服务注册到Navos

  • 在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖

  • 注释掉原有的eureka依赖

  • 添加nacos的客户端依赖

  • 修改application.yml文件,配置nacos地址(localhost:8848)

3.Nacos服务分级存储模型

  • 服务--->集群(按地域划分)----->实例

  • 服务跨集群调用问题

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

本地集群不可访问时,再去访问其他集群,会报警告

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

  • 服务集群属性

discovery

cluster-name:HZ #配置集群的位置eg:HZ杭州

4.根据集群负载均衡

  • 修改order-service中的application.yml文件,设置集群为HZ

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

  • 将user-service的权重都设置为1

5.根据权重负载均衡

通过改变权重可以控制访问频率,权重越大则访问频率越高

  • 在Nacos控制台设置实例权重值(0-1),选中实例后的编辑按钮

  • 将权重设置为0.1,测试发现访问频率降低

6.环境隔离-namespace

对服务做出隔离,每个namespace都有唯一id,不同namespace下的服务不可见

  • 在控制台创建namespace,填写新的命名空间信息,得到命名空间的id

  • 修改order-service中的application.yml文件,添加namespace(id)

Eurka和Nacos区别

1.共同点:

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

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

2.区别:

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用来此加密申请多域名SSL证书

在数字化时代的浪潮中,网站的安全性已成为企业和个人不可或缺的一部分。特别是在数据传输和用户隐私保护方面,SSL证书的作用愈发显著。 申请多域名SSL证书步骤 1、登录来此加密网站,输入域名,可以勾选泛域名和包含根域。 2、选择…

【结构型模式-代理模式】

概述 由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象与目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生…

手撸俄罗斯方块(五)——游戏主题

手撸俄罗斯方块(五)——游戏主题 当确定游戏载体(如控制台)后,界面将呈现出来。但是游戏的背景色、方块的颜色、方框颜色都应该支持扩展。 当前游戏也是如此,引入了 Theme 的概念,支持主题的扩…

ADS基础教程24 - Gerber文件的导入

EM介绍 一、引言二、基本概念1.仿真文件下载2.仿真文件介绍 二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题 四、总结 一、引言 本章节开始介绍在ADS中进行PCB仿真,首先讲解如何将Gerber文件导入到A…

顺序结构 ( 四 ) —— 标准数据类型 【互三互三】

序 C语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。 整型(integer) 在C语言中,整型类型标识符为int。根据整型变量的取值范…

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

YOLOv10改进 | 损失函数篇 | SlideLoss、FocalLoss、VFLoss分类损失函数助力细节涨点(全网最全)

一、本文介绍 本文给大家带来的是分类损失 SlideLoss、VFLoss、FocalLoss损失函数,我们之前看那的那些IoU都是边界框回归损失,和本文的修改内容并不冲突,所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失,…

【安全设备】数据库审计

一、什么是数据库审计 数据库审计(简称DBAudit)是一种以安全事件为中心,实时记录网络上的数据库活动,并对数据库操作进行细粒度审计的合规性管理技术。它通过对用户访问行为的记录、分析和汇报,帮助用户事后生成合规报…

一套基于 Ant Design 和 Blazor 的开源企业级组件库

前言 今天大姚给大家分享一套基于Ant Design和Blazor的开源(MIT License)、免费的企业级组件库(喜欢Ant Design风格的同学推荐使用):Ant Design Blazor。 项目特性 提炼自企业级中后台产品的交互语言和视觉风格。 开…

Codeforces Round #956 (Div. 2) and ByteRace 2024 E. I Love Balls(概率期望)

题目 思路来源 官方题解 题解 特殊球不会改变普通球的顺序,所以都是alice拿一半里较多的部分 n-k1一半向上取整就是(n-k2)/2,同理n-k个一般向上取整(n-k1)/2 每个特殊球独立地来看,在每个空隙的概率相同 所以分别统计特殊球和非特殊球的…

《Windows API每日一练》9.1.5 自定义资源

自定义资源(Custom Resources)是在 Windows 程序中使用的一种资源类型,用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源,开发者可以将应用程序所需的各种资源文件集中管理和存储,便于在程序中访…

华为HCIP Datacom H12-821 卷34

1.单选题 防火墙默认已经创建了一些安全区域,以下哪一个安全区域不是防火墙上默认存在的? A、Trust B、DMZ C、Internet D、Local 正确答案: C 解析: 防火墙默认情况下为我们提供了三个安全区域,分别是 Trust、DMZ和Untrust 2.判断题 …

【RHCE】实验(HTTP,DNS,SELinux,firewalld的运用)

一、题目 二、主服务器配置 1.下载HTTP服务,DNS服务 [rootlocalhost ~]# yum install -y httpd bind 2.开启防火墙,放行服务 # 开启防火墙 [rootlocalhost ~]# systemctl start firewalld # 放行服务 [rootlocalhost ~]# firewall-cmd --add-service…

日常学习-20240710

1、一次一千万条数据插入和删除案例: 第一次:插入--批量插入,每次插入5000条数据,总耗时28min,数据无异常 删除--通过sql语句一次性删除,总耗时1h52min;一次删除的数据过多导致mysql的备份恢复文件极其庞大&#xff0…

在CentOS7虚拟机上使用Ollama本地部署Llama3大模型中文版+Open WebUI

一、创建虚拟机 1.1按照常规的CentOS教程来安装就行,我用的是以下版本: VMware版本:VMware Workstation Full v12.1.0-3272444 中文正式版 镜像版本:CentOS-7-x86_64-DVD-2009 1.2虚拟机配置参数,如下: 二…

彩虹小插画:成都亚恒丰创教育科技有限公司

彩虹小插画:色彩斑斓的梦幻世界 在繁忙的生活节奏中,总有一抹温柔的色彩能悄然触动心弦,那就是彩虹小插画带来的梦幻与宁静。彩虹,这一自然界的奇迹,被艺术家们巧妙地融入小巧精致的插画之中,不仅捕捉了瞬…

Camera Raw:直方图

Camera Raw 的直方图 Histogram面板不仅提供了照片亮度和色彩分布信息,还具备多项实用功能,辅助评估和调整照片。 ◆ ◆ ◆ 直方图的构成 直方图是一个二维坐标系统,横坐标表示不同程度的像素亮度,从左到右通常对应的是 0 ~ 255…

14-60 剑和诗人34 - Kubernetes 是部署 LLM 的首选平台

​​​​ 介绍 近年来,大型语言模型 (LLM) 一直在彻底改变自然语言处理领域。从 GPT-3 到 PaLM 等,这些模型可以生成类似人类的文本、回答问题、总结文档等等。然而,训练和部署 LLM 需要大量的计算。随着这些模型的规模和能力不断增长&#…

three完全开源扩展案例01-三角形渐变

演示地址 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.client…

Golang | Leetcode Golang题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…