当前位置: 首页 > news >正文

西安网站建设推荐q479185700上墙/百度网盘免费下载

西安网站建设推荐q479185700上墙,百度网盘免费下载,从哪里找外贸公司电话,襄阳头条新闻1 微服务的概念 区别于单体项目 单体项目拆分成微服务项目的目标:高内聚、低耦合 拆分思路 纵向拆分:根据功能模块 横向拆分:抽取可复用模块 2 微服务拆分——远程调用 背景:微服务单一职责,每个服务只有自己的功能…

1 微服务的概念

  • 区别于单体项目

  • 单体项目拆分成微服务项目的目标:高内聚、低耦合

  • 拆分思路

    • 纵向拆分:根据功能模块

    • 横向拆分:抽取可复用模块

2 微服务拆分——远程调用

背景:微服务单一职责,每个服务只有自己的功能和数据,拆分出来的模块需要用到其他模块的功能,如查询购物车时也需要查询商品信息,但是两个模块不能直接调用

  • 模拟前端向后台发送请求

  • RestTemplate:通过远程调用,发送 HTTP 请求,得到 HTTP 响应

3 服务治理

服务远程调用存在问题:

  1. 写代码时还不知道要调用的服务地址(还没启动):例如 cart-service 不知道 item-service 启动的地址 / 端口

  2. 如果知道了地址,集群模式下 item-service 部署在多台服务器上(多实例部署),开启了负载均衡,cart-service 不知道该访问哪个端口

  3. 选了一个进行访问,如果该服务挂了,怎办?

  4. 写死了访问地址,item-service 又在新的服务器 / 端口上启动了,怎么知道新启动的服务的地址?无法感知服务状态的变更

以上问题统称为 服务治理

3.1 注册中心原理

如何解决服务治理问题?1 2 3 4

三个角色

  • 每个服务既可以作为服务的调用者

  • 也可以作为服务的提供者

  • 注册中心(家政中心)

    • 服务提供者到注册中心注册服务信息

    • 服务调用者访问注册中心,订阅所需服务的信息

      • 负载均衡:随机、轮询、加权随机、加权轮询、哈希

    • 监控服务状态变更

      • 服务提供者需要与注册中心进行 心跳续约,如果服务挂了(不再发送续约消息)就会将该服务从服务注册表中移除,并向服务调用者推送变更

      • 注册中心会向服务调用者推送服务状态变更(有服务挂了、有新的服务启动)的新消息

3.2 搭建 Nacos 实现注册中心

  • Nacos 是一个注册中心组件

  • 使用 Docker 部署 Nacos 服务

  • 可以进入 Nacos 控制面板监控服务的健康状态和服务详情(如启动服务器 IP 和端口等)

3.3 服务注册

步骤

  1. 引入 nacos discovery 依赖

  2. 配置要注册的服务名称和 Nacos 的地址

  3. 启动服务实例(IDEA 的多个端口)

3.4 服务发现

步骤

  1. 引入 nacos discovery 依赖

  2. 配置 Nacos 地址

  3. 服务发现:到 Nacos 注册中心获取服务注册列表(可以使用 Spring Cloud 提供的 API)

    • 根据服务名称,获取服务实例列表

    • 负载均衡,选择一个实例进行请求

    • 获取实例的 IP 和端口,发起远程调用

3.5 治理结果

  • 服务调用者不再需要记住服务提供者的 IP 地址和端口号,而是根据服务名称 动态拉取 服务实例列表,并通过负载均衡选择随机选择一个服务实例进行调用

  • 服务挂了 ✔ 心跳续约

  • 新启动的服务 ✔ 推送变更

4 OpenFeign 的使用

1. 基本介绍

  • 声明式的 HTTP 客户端,基于 SpringMVC 的常见注解,更简单地实现 HTTP 请求的发送

2. 使用步骤

  • 引入依赖

负载均衡的实现早期用的是 Spring Cloud 的 Ribbon,现在用的是 loadbalancer

  • 项目主类 / 启动类使用注解 @EnableFeignClients 开启 OpenFeign 功能

  • 编写 FeignClient:使用 @FeignClient(value = "item-service"),@FeignClient 会将该类标记为一个 FeignClient 客户端,value 是服务名称, OpenFeign 会根据该 value 到注册中心去拉取实例列表

注意:这是一个不需要实现的接口,OpenFeign 会自动帮我们实现该接口

  • 使用 FeignClient,实现远程调用:配置好 FeignClient 接口后就可以像使用本地方法一样实现远程调用

List<ItemDTO> items = itemClient.queryItemByIds(List.of(1,2,3));

相关文章:

微服务介绍、使用 Nacos 实现远程调用以及 OpenFeign 的使用

1 微服务的概念 区别于单体项目 单体项目拆分成微服务项目的目标&#xff1a;高内聚、低耦合 拆分思路 纵向拆分&#xff1a;根据功能模块 横向拆分&#xff1a;抽取可复用模块 2 微服务拆分——远程调用 背景&#xff1a;微服务单一职责&#xff0c;每个服务只有自己的功能…...

Arthas使用教程—— 阿里开源线上监控诊断产品

文章目录 1 简介2背景3 图形界面工具 arthas 阿里开源3.1 &#xff1a;启动 arthas3.2 help :查看arthas所有命令3.3 查看 dashboard3.4 thread 列出当前进程所有线程占用CPU和内存情况3.5 jvm 查看该进程的各项参数 &#xff08;类比 jinfo&#xff09;3.6 通过 jad 来反编译 …...

mac电脑快捷指令实现拼图

mac访达&#xff0c;搜索输入‘快捷指令’&#xff0c;找到‘快捷指令’&#xff0c; 点击快捷指令&#xff0c;进入快捷指令中心&#xff0c;搜索‘拼图’ &#xff0c;选中‘照片拼图’&#xff0c; 点击‘添加快捷指令’&#xff0c; 在‘所有快捷键指令’中可以看到添加的快…...

R语言入门笔记2.1

分支、循环与函数&#xff08;1&#xff09; 1.if语句 在R语言中&#xff0c;if语句用于根据条件执行不同的代码块。其基本语法如下&#xff1a; if (condition) {# 如果条件为真&#xff0c;执行这里的代码块 } else {# 如果条件为假&#xff0c;执行这里的代码块 } 其中&…...

补题:leetcode第382场周赛 3022. 给定操作次数内使剩余元素的或值最小

3022. 给定操作次数内使剩余元素的或值最小 - 力扣&#xff08;LeetCode&#xff09; 拆位 n个数进行或运算的结果最小&#xff0c;每次操作可以对相邻的两个数进行与运算&#xff0c;至多进行k次操作 n个数进行或运算&#xff0c;可以对每个数进行拆解&#xff0c;拆解成最小…...

创建型模式-单例模式:定义、实现及应用

目录 一、模式定义二、针对问题1.解决的问题2.解决方案3.举个例子4.设计模式适合场景5.实现方式6.优缺点7.与其他模式的关系 三、代码实现 一、模式定义 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型模式&#xff0c;用于限制某个类只能创建一个对象。它提…...

Prime(VulnHub)

Prime 文章目录 Prime1、nmap2、web渗透随便看看首页隐写查看目录爆破gobusterferoxbusterdirsearchdirb whatwebsearchsploit WordPress 5.2.2/dev/secret.txtFuzz_For_Webwfuzzimage.phpindex.php location.txtsecrettier360文件包含漏洞包含出password.txt尝试ssh登入尝试登…...

爬虫工作量由小到大的思维转变---<第四十二章 Scrapy Redis 重试机制(ip相关)>

前言: 之前讲过一篇关于scrapy的重试机制的文章,那个是针对当时那哥们的代码讲的,但是,发现后面还是有很多问题; 本章节就着scrapy的重试机制来讲一下!!! 正文: 首先,要清楚一个概念,在scrapy的中间件中,默认会有一个scrapy重试中间件;只要你在settings.py设置中写上: RETR…...

python日志管理配置

日志基础配置文件 日志回转查看&#xff1a;参考&#xff1a;https://blog.csdn.net/B11050729/article/details/132353220 项目使用注解实现 """ settings.py logging配置 """ import osroot_dir os.path.normpath(os.path.join(os.path.ab…...

2024.1.28力扣每日一题——水壶问题

2024.1.28 题目来源我的题解方法一 深度搜索&#xff08;DFS&#xff09;/广度搜索&#xff08;BFS&#xff09;方法二 数学 题目来源 力扣每日一题&#xff1b;题序&#xff1a;365 我的题解 方法一 深度搜索&#xff08;DFS&#xff09;/广度搜索&#xff08;BFS&#xff…...

orin nx 安装paddlespeech记录

nx配置&#xff1a; 模块 版本说明 CPU 8核 内存 16G Cuda版本 11.4 Opencv版本 4.5.4 Tensorrt版本 5.1 Cudnn版本 8.6.0.166 Deepstream版本 6.2 Python版本 3.8 算力 100T 安装paddlepaddle&#xff1a; 去飞桨官网下载jetpack版本的&#xff1a;下…...

系统架构设计师-21年-上午答案

系统架构设计师-21年-上午答案 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 前趋图(Precedence Graph)是一个有向无环图&#xff0c;记为:→{(Pi,Pj)|Pi must complete before Pj may strat}&#xff0c;假设系统中进程P{P1&#xff0c;P2&#xff0c;P3&#xf…...

外包干了10个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...

树莓派Pico入门

文章目录 1. Pico概述1.1 微处理器1.2 GPIO引脚1.3 MicroPython优点 2. 硬件准备2.1 购买清单2.2 软件需求 3. 安装MicroPython3.1下载固件3.2把固件安装到硬件里3.3补充 4. 第一个程序5. 验证运行效果6. 扩展应用 1. Pico概述 1.1 微处理器 ARM Cortex-M0 (频率 133MHz) 1.…...

yolov8使用旋转框自己做数据集检测

主要在数据集制作&#xff0c;训练的步骤和目标检测是一样的 1.数据集标注主要使用rolabelimg工具&#xff0c;这个工具不能在线安装 得下载源代码 然后运行 标注好数据保存会是一个xml文件 2.把xml文件转换成dota的xml文件&#xff0c;然后把dota的xml文件转换成dota的txt文件…...

docker重建镜像

DockerFile如下&#xff1a; FROM k8s-registry.qhtx.local/base/centos7-jdk8-haitong0704RUN yum -y update && yum install -y python3-devel && yum install -y python36 RUN mv /usr/bin/python /usr/bin/python_old RUN ln -s /usr/bin/python3 /usr/bi…...

【Linux】vim的基本操作与配置(上)

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦&#xff01; 那么废话不多说&#xff0c;咱们直接进入正题&#xff01; 1.初识vim vim是一款多模式的文本编辑器&#xff0c;可以对一个文件进行编辑操作。 它一共有三个模…...

幻兽帕鲁怎么样?好玩? Mac版的玩《幻兽帕鲁》也很简单,只需三个步骤

幻兽帕鲁怎么样 幻兽帕鲁是一款集合了多种游戏元素的游戏&#xff0c;它巧妙地融合了《方舟:生存进化》的野外生存挑战、《荒野之息》的开放世界探索、《魔兽世界》的多元角色互动以及宝可梦的精灵捕捉与培养等经典游戏元素。游戏的核心系统是「帕鲁」捕获&#xff0c;你可以让…...

002集——统一码(Unicode)及ASCII码详解

统一码(Unicode)&#xff0c;它也叫万国码、单一码&#xff0c;是计算机科学领域里的一项业界标准&#xff0c;包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的&#xff0c;它为每种语言中的每个字符设定了统一并且唯一的二进制编码&#xff0c;以…...

下载、安装Jenkins

进入官网 下载Jenkins https://www.jenkins.io 直接点击Download 一般是下长期支持版 因为它是java写的&#xff0c;你要运行它&#xff08;Jenkins.war&#xff09;肯定要有java环境 有两种方式去运行它&#xff0c;一种是下载Tomcat&#xff08;是很经典的java容器或者jav…...

python flask 魔术方法

魔术方法作用_init_对象的初始化方法_class_返回对象所属的类_module_返回类所在的模块_mro_返回类的调用顺序&#xff0c;可以找到其父类&#xff08;用于找父类&#xff09;_base_获取类的直接父类&#xff08;用于找父类&#xff09;_bases_获取父类的元组&#xff0c;按它们…...

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024) 会议简介 2024年清洁能源、环境与智慧城市国际研讨会&#xff08;ISCEESC2024&#xff09;将在中国丽江举行。本次会议主要围绕清洁能源、环境和智慧城市等研究领域&#xff0c;旨在为该研究领域的专家学者提供一个国际…...

Postgres与DynamoDB:选择哪个数据库

启动新项目时需要做出的决定之一是使用哪个数据库。如果您使用的是Django这样的包含电池的框架&#xff0c;那么没有理由再三考虑。选择一个受支持的数据库引擎&#xff0c;就可以了。另一方面&#xff0c;如果你使用像FastAPI或Flask这样的微框架&#xff0c;你需要自己做出这…...

【ELK】logstash快速入门

1.概述 1.1.什么是logstash&#xff1f; 之前我们聊了es&#xff0c;并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的&#xff0c;然后结合kibana对日志做一些可视化的工作。既然要收集日志&#xff0c;就面临着一个问题&#xff1a; 各个系统的…...

SQL sever2008中创建用户并赋权

一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一&#xff1a;使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句&#xff1a; SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…...

SpringBoot2-Jwt

1.官网 jwt.io/libraries 2.选jose4j pom <dependency><groupId>org.bitbucket.b_c</groupId><artifactId>jose4j</artifactId><version>0.9.4</version> </dependency> 3.创建jwt工具 public class JwtUtil {private stat…...

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 目录 主要内容&#xff1a; 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码&#xff1a;多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端&#xff0c;服务端Socket编程通信cmd命…...

Python 套接字详解:与网络通信的温柔邂逅

网络世界&#xff0c;犹如一片无垠的海洋&#xff0c;充满了无限的可能性和无尽的探索。而在这个浩瀚的网络宇宙中&#xff0c;Python 语言以其简洁优雅、功能丰富而备受青睐。在 Python 的世界里&#xff0c;有一个神奇的工具&#xff0c;它就像是一座桥梁&#xff0c;将不同的…...

如何在Linux系统中安装MySQL

要在Linux系统中安装MySQL&#xff0c;您可以使用系统的包管理工具。以下是一些常见的Linux发行版的安装命令&#xff1a; 1. **Ubuntu/Debian:** bash sudo apt-get update sudo apt-get install mysql-server 2. **Fedora:** bash sudo dnf install mysql-server 3. **Cent…...

51单片机基础:定时器

1.定时器介绍 51单片机通常有两个定时器&#xff1a;定时器 0/1&#xff0c;好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识&#xff1a; 1&#xff0c;CPU 时序的有关知识 ①振荡周期&#xff1a;为单片机提供定时信号的振荡源的周期&#xff08;晶振周期或…...