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

微服务01-基本介绍+注册中心EureKa

基本介绍

服务集群:一个请求由多个服务完成,服务接口暴露,以便于相互调用;

注册中心:每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务;

配置中心:这些服务的配置我们都放在配置中心中配置,方便拉取配置信息,减少代码冗余;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
微服务优点

耦合度高,所有代码量放在一个里面,打包编译时间会很长,动一个模块中的代码,其他的可能会受影响;

在这里插入图片描述
分布式架构:

对功能进行拆分,每个业务作为独立的项目作为独立项目开发,称为一个服务;方便升级,修改;

在这里插入图片描述

在这里插入图片描述
认识微服务
每个功能对应一种服务,避免业务重复开发,耦合度低,每个服务可以做一个对应的数据库,防止数据污染;
在这里插入图片描述
总结:
在这里插入图片描述

SpringCloudAlibaba兼容前面两种:

在这里插入图片描述
企业微服务遇到场景:

在这里插入图片描述
SpringCloud=SpringBoot+新的组件,因为基于springboot可以将这些组件自动装配;

在这里插入图片描述

服务拆分及远程调用

在这里插入图片描述

例子:
让订单模块调用用户模块(暴露接口),从而得到用户信息(数据库每个模块有自己专属的)

在这里插入图片描述
远程调用分析:订单模块只需要能够请求到用户模块即可

在这里插入图片描述
使用RestTemplate来完成远程调用获取用户信息;

1.现在主启动类注入一个RestTemplate组件

package cn.itcast.order;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}/*** 创建RestTemplate并且注入Spring容器* @return*/@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

然后再订单的业务功能中调用RestTemplate中的方法对远程接口进行调用以获取数据:

getForObject(请求路径,数据类型)

package cn.itcast.order.service;import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);//2.利用RestTemplate发送http请求,查询用户String url="http://localhost:8081/user/"+order.getUserId();//2.1对url进行请求得到json数据,并且转化为User类型User user = restTemplate.getForObject(url, User.class);order.setUser(user);// 4.返回return order;}
}

在这里插入图片描述

消费者和提供者

服务与服务之间的关系需要相对来看,一个服务即可以是消费者也可以是提供者;

服务提供者:将接口暴露给其他服务;

服务消费者:调用暴露的接口;

EureKa注册中心

针对消费者如何获取提供者的地址信息;

对于消费者如何在多个提供者中进行选择;

消费者如何知道提供者健康状态;
在这里插入图片描述
这里,EureKa全部帮你解决了

所有的服务,只要在EureKa的客户端,都会被注册到EureKa的注册中心(就跟暗网一样),每个人都能又当商家又当卖家,比如这里的消费者->会对其他服务进行请求;

直接根据具体的请求向EureKa拉取提供者信息;

而多个提供者的筛选——>消费者会利用负载均衡算法选择一个微服务进行远程调用;

而其他服务的请求状态(是否宕机等等),每30s会对注册中心反馈一次心跳;

在这里插入图片描述

EureKa实战:搭建EureKaServer
在这里插入图片描述

1.先专门建一个 EureKa服务端,然后引入EureKa-server依赖
在这里插入图片描述

   <!--eureka服务端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

2.对EureKa启动类中+@EnableEureKaServer注解,声明是一个EureKa服务启动

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

3.在yaml中配置EureKa服务端地址->(另外要把自己也注册到EureKa客户端中,因为如果有多个EureKa,也就是集群,会出现相互调用的情况)

server:port: 10086 # 服务端口
spring:application:name: eurekaserver # eureka的服务名称
eureka:client:service-url: # eureka的地址信息,因为eureka也要注册自己,比如eureka集群之间需要通信defaultZone: http://127.0.0.1:10086/eureka

服务名字+信息地址 (服务注册地址)
在这里插入图片描述

服务注册:(对一个服务设置多个端口进行处理)

好处

有利于分担请求压力

对服务进行引入EureKa的依赖+yaml中配置EureKa的地址——>代表服务注册

在这里插入图片描述
.对服务引入EureKa-client依赖,并且在yaml中设置EureKa地址以及服务名称

 <!--eureka客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSL=falseusername: Wuyuhangpassword: 2002514wyh11driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice # user的服务名称
eureka:client:service-url: # user的地址信息defaultZone: http://127.0.0.1:10086/eureka

我们还可以对一个服务多端口的方式注册到EureKa中:

在这里插入图片描述
在其中配置端口信息即可:Dserver:8082

在这里插入图片描述

效果:

在这里插入图片描述

负载均衡

在orderservice中完成服务拉取:基于服务名称来获取服务列表,然后根据服务列表进行负载均衡 ——>默认是轮流机制;

在这里插入图片描述

总结

在这里插入图片描述

相关文章:

微服务01-基本介绍+注册中心EureKa

基本介绍 服务集群&#xff1a;一个请求由多个服务完成&#xff0c;服务接口暴露&#xff0c;以便于相互调用&#xff1b; 注册中心&#xff1a;每个服务的状态&#xff0c;需要进行维护&#xff0c;我们可以在注册中心进行监控维护服务&#xff1b; 配置中心&#xff1a;这些…...

【ES6】JavaScript中的异步编程:async和await

在JavaScript中&#xff0c;异步编程是一种处理长时间运行的操作的方法&#xff0c;这些操作包括读取文件、网络请求或处理大数据等。在传统的回调函数中&#xff0c;代码按照顺序执行&#xff0c;一旦遇到长时间运行的操作&#xff0c;就需要回调函数来处理结果。这使得代码变…...

51单片机热水器温度控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机热水器温度控制系统仿真设计 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单 &&下载链接 51单片机热水器温度控制系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#x…...

Spring Boot 配置文件加密

方式一&#xff1a;Spring Cloud Config 一、建立config server 1. build.gradle 文件中添加&#xff1a; plugins {id javaid org.springframework.boot version 2.7.0id io.spring.dependency-management version 1.0.11.RELEASE }ext {set(springCloudVersion, "202…...

【树形权限】树形列表权限互斥选择、el-tree设置禁用等等

需求&#xff1a;按照权限管理配置的数据权限树展开&#xff1b;点击查看按钮后进入其他指定机构选择弹窗为一树形结构 本文章对项目中出现得关键点进行总结。 一、实现如上树形列表 在 element 官方表格示例中&#xff0c;实现树形表格列表数据渲染&#xff0c;非常简单。只…...

ubuntu 22.04安装cuda、cudnn、conda、pytorch

1、cuda 视频连接 https://www.bilibili.com/video/BV1bW4y197Mo/?spm_id_from333.999.0.0&vd_source3b42b36e44d271f58e90f86679d77db7cuda 11.8 https://developer.nvidia.com/cuda-toolkit-archive点击进入 https://developer.nvidia.com/cuda-11-8-0-download-arc…...

2023 最新前端面试题 (HTML 篇)

1. src 和 href 的区别 src 用于替换当前元素&#xff08;引入&#xff09;&#xff0c;href 用于在当前文档和引用资源之间确立联系&#xff08;引用&#xff09; &#xff08;1&#xff09;src&#xff08;source&#xff09; 指向外部资源的位置&#xff0c;指向的内容将会嵌…...

华为云银河麒麟V10安装libmcrypt

本次安装是在华为云上执行。cpu是鲲鹏&#xff0c;操作系统是银河麒麟V10. 先下载安装包&#xff1a; wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz 解包&#xff0c;进入目录中。 执行如下命令&#xff1a; ./configure make make install 执…...

智慧导览|智能导游系统|AR景区导览系统|景区电子导览

随着文旅市场的加快复苏&#xff0c;以及元宇宙、VR、AR、虚拟数字人等新兴技术的快速发展&#xff0c;文旅行业也正在加快数字化转型的步伐&#xff0c;向智慧景区建设迈进。为满足不同年龄段游客的游览需要&#xff0c;提升旅游服务体验&#xff0c;越来越多的旅游景区、博物…...

【Docker】Docker基本使用介绍

Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。 一、安装Docker 首先&#xff0c;你需要从官方网站上下载Docker的安装包&#xff0c;并按…...

Linux命令200例:man用于显示和阅读关于Linux内置命令的使用说明

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…...

idea 无法识别maven的解决

问题描述 从git拉取代码或者修改文件夹以后&#xff0c;整个项目所有依赖爆红无法通过修改或者重新加载maven解决版本为idea 2021 问题定位 maven的版本太高&#xff0c;而idea的般本太低&#xff0c;导致识别的时候稳定性差 解决 使用idea原生的maven版本 选择已捆绑的m…...

String底层函数的实现方式

一、常见的String封装函数 1. strcpy函数的实现 char *strcpy(char *dest, const char *src) {char *tmp dest;while ((*dest *src) ! \0)/* nothing */;return tmp; } 2. strncpy函数的实现 char *strncpy(char *dest, const char *src, size_t count) {char *tmp dest…...

uniapp实现微信小程序全局可分享功能

uniapp实现微信小程序全局【发送给朋友】、【分享到朋友圈】、【复制链接】 主要使用 Vue.js 的 全局混入 1.创建一个全局分享的js文件。示例文件路径为&#xff1a;./utils/shareWx.js &#xff0c;在该文件中定义全局分享的内容&#xff1a; export default {data() {retur…...

大数据成为市场营销利器 ,促进金融贷款企业获客精准化

随着大数据技术的不断普及&#xff0c;中国对尖端技术和云计算技术的投资大幅增加。大数据、云计算技术、物联网等一系列新一代信息技术也加速完善。 目前&#xff0c;大数据技术也非常成熟&#xff0c;大数据的应用领域也多种多样。大数据的重要方面“运营商大数据”已经被政…...

Acwing 3472. 八皇后

题目如下&#xff1a; 会下国际象棋的人都很清楚&#xff1a;皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。 如何将 88 个皇后放在棋盘上&#xff08;有 88 个方格&#xff09;&#xff0c;使它们谁也不能被吃掉&#xff01; 这就是著名的八皇后问题。 对于某个满足要…...

Word转为PDF后图片模糊怎么办?Word转为PDF的技巧介绍

将Word文档转为PDF是我们日常办公和文档处理中常见的需求。PDF格式的优势在于跨平台兼容性、保留原始格式、文档保护以及方便共享和分发等方面。本文将探讨Word转为PDF后图片模糊怎么办?Word转为PDF的技巧有哪些?通过这些问题的答案&#xff0c;可以帮助您更好的利用文件转换…...

【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;开源建设者与全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#xff1a;Zeeland&#x1f4da; Github主页: Undertone0809 (Zeeland)&…...

3D开发工具HOOPS Publish如何快速创建交互式3D PDF文档?

HOOPS Publish是一款功能强大的SDK&#xff0c;可以创作丰富的工程数据并将模型文件导出为各种行业标准格式&#xff0c;包括PDF、STEP、JT和3MF。HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:2014)&#xff0c;它为装配树、拓扑和几何、产品制造信息和视…...

【Kafka】ZooKeeper启动失败报错java.net.BindException: Address already in use: bind

问题描述 Kafka 2.8.1 ZooKeeper启动失败。 zookeeper-server-start.bat ../../config/zookeeper.properties[2023-09-04 18:21:49,497] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory) [2023-09-04 18:21:49,498] ERROR Un…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

信息收集:从图像元数据(隐藏信息收集)到用户身份的揭秘 --- 7000

目录 &#x1f310; 访问Web服务 &#x1f4bb; 分析源代码 ⬇️ 下载图片并保留元数据 &#x1f50d; 提取元数据&#xff08;重点&#xff09; &#x1f464; 生成用户名列表 &#x1f6e0;️ 技术原理 图片元数据&#xff08;EXIF 数据&#xff09; Username-Anarch…...

PC与Windows远程连接与串流:方案简介(ZeroTier + Parsec、Moonlight + Sunshine、网易UU远程)

简介 在远程办公、云游戏、家用 NAS 串流、图形远程渲染等需求增长的背景下&#xff0c;越来越多用户开始寻找低延迟、高画质、跨网络可用的远程连接方案。今天这篇文章将深度分析三种目前在玩家圈和远程办公中都非常流行的组合方案&#xff1a; &#x1f7e2; ZeroTier Pars…...

Vue 3 Teleport 实战:优雅实现模态框、通知和全局组件

Vue 3 Teleport&#xff1a;突破 DOM 层级限制的组件渲染利器 在 Vue 应用开发中&#xff0c;组件通常与其模板的 DOM 结构紧密耦合。但当处理模态框&#xff08;Modal&#xff09;、通知&#xff08;Toast&#xff09;或全局 Loading 指示器时&#xff0c;这种耦合会成为障碍…...