微服务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
基本介绍 服务集群:一个请求由多个服务完成,服务接口暴露,以便于相互调用; 注册中心:每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务; 配置中心:这些…...
【ES6】JavaScript中的异步编程:async和await
在JavaScript中,异步编程是一种处理长时间运行的操作的方法,这些操作包括读取文件、网络请求或处理大数据等。在传统的回调函数中,代码按照顺序执行,一旦遇到长时间运行的操作,就需要回调函数来处理结果。这使得代码变…...
51单片机热水器温度控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
51单片机热水器温度控制系统仿真设计 1.主要功能:2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单 &&下载链接 51单片机热水器温度控制系统仿真设计( proteus仿真程序原理图报告讲解视频) 仿真图proteus7.8及以上 程序编译器&#x…...
Spring Boot 配置文件加密
方式一:Spring Cloud Config 一、建立config server 1. build.gradle 文件中添加: 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设置禁用等等
需求:按照权限管理配置的数据权限树展开;点击查看按钮后进入其他指定机构选择弹窗为一树形结构 本文章对项目中出现得关键点进行总结。 一、实现如上树形列表 在 element 官方表格示例中,实现树形表格列表数据渲染,非常简单。只…...
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 用于替换当前元素(引入),href 用于在当前文档和引用资源之间确立联系(引用) (1)src(source) 指向外部资源的位置,指向的内容将会嵌…...
华为云银河麒麟V10安装libmcrypt
本次安装是在华为云上执行。cpu是鲲鹏,操作系统是银河麒麟V10. 先下载安装包: wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz 解包,进入目录中。 执行如下命令: ./configure make make install 执…...
智慧导览|智能导游系统|AR景区导览系统|景区电子导览
随着文旅市场的加快复苏,以及元宇宙、VR、AR、虚拟数字人等新兴技术的快速发展,文旅行业也正在加快数字化转型的步伐,向智慧景区建设迈进。为满足不同年龄段游客的游览需要,提升旅游服务体验,越来越多的旅游景区、博物…...
【Docker】Docker基本使用介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。 一、安装Docker 首先,你需要从官方网站上下载Docker的安装包,并按…...
Linux命令200例:man用于显示和阅读关于Linux内置命令的使用说明
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师࿰…...
idea 无法识别maven的解决
问题描述 从git拉取代码或者修改文件夹以后,整个项目所有依赖爆红无法通过修改或者重新加载maven解决版本为idea 2021 问题定位 maven的版本太高,而idea的般本太低,导致识别的时候稳定性差 解决 使用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文件。示例文件路径为:./utils/shareWx.js ,在该文件中定义全局分享的内容: export default {data() {retur…...
大数据成为市场营销利器 ,促进金融贷款企业获客精准化
随着大数据技术的不断普及,中国对尖端技术和云计算技术的投资大幅增加。大数据、云计算技术、物联网等一系列新一代信息技术也加速完善。 目前,大数据技术也非常成熟,大数据的应用领域也多种多样。大数据的重要方面“运营商大数据”已经被政…...
Acwing 3472. 八皇后
题目如下: 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。 如何将 88 个皇后放在棋盘上(有 88 个方格),使它们谁也不能被吃掉! 这就是著名的八皇后问题。 对于某个满足要…...
Word转为PDF后图片模糊怎么办?Word转为PDF的技巧介绍
将Word文档转为PDF是我们日常办公和文档处理中常见的需求。PDF格式的优势在于跨平台兼容性、保留原始格式、文档保护以及方便共享和分发等方面。本文将探讨Word转为PDF后图片模糊怎么办?Word转为PDF的技巧有哪些?通过这些问题的答案,可以帮助您更好的利用文件转换…...
【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式
💖 作者简介:大家好,我是Zeeland,开源建设者与全栈领域优质创作者。📝 CSDN主页:Zeeland🔥📣 我的博客:Zeeland📚 Github主页: Undertone0809 (Zeeland)&…...
3D开发工具HOOPS Publish如何快速创建交互式3D PDF文档?
HOOPS Publish是一款功能强大的SDK,可以创作丰富的工程数据并将模型文件导出为各种行业标准格式,包括PDF、STEP、JT和3MF。HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:2014),它为装配树、拓扑和几何、产品制造信息和视…...
【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…...
Node.js 项目如何无缝集成 Taotoken 实现大模型 API 统一调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 项目如何无缝集成 Taotoken 实现大模型 API 统一调用 在 Node.js 项目中引入大模型能力,开发者常常需要面对一…...
洞悉.NET 11:Blazor 与 Microsoft.Extensions.AI 的融合创新实践
洞悉.NET 11:Blazor 与 Microsoft.Extensions.AI 的融合创新实践 前言 在现代 Web 应用开发领域,提升用户体验和智能化交互至关重要。Blazor 凭借其在构建交互式 Web 界面的优势,与专注于 AI 集成的 Microsoft.Extensions.AI 相结合ÿ…...
终极Xbox手柄性能检测指南:5个技巧让你的游戏控制器发挥最大潜力
终极Xbox手柄性能检测指南:5个技巧让你的游戏控制器发挥最大潜力 【免费下载链接】XInputTest Xbox 360 Controller (XInput) Polling Rate Checker 项目地址: https://gitcode.com/gh_mirrors/xin/XInputTest 你是否曾经在激烈游戏对战中感觉手柄响应不够灵…...
5分钟学会在Windows电脑上安装Android应用:APK Installer终极指南
5分钟学会在Windows电脑上安装Android应用:APK Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行手机应用吗&#x…...
sleek开发者指南:基于Electron+React的现代桌面应用架构
sleek开发者指南:基于ElectronReact的现代桌面应用架构 【免费下载链接】sleek todo.txt manager for Linux, Windows and MacOS, free and open-source (FOSS) 项目地址: https://gitcode.com/gh_mirrors/sl/sleek sleek是一款跨平台的todo.txt管理器&#…...
除了高精度定位,CORS基准站网还能为你提供哪些意想不到的数据服务?
解锁CORS基准站网的隐藏价值:从厘米级定位到时空大数据平台 当大多数人提起CORS基准站网时,第一反应往往是"高精度定位"。确实,这套由数百个地面站点组成的网络系统,能够为各类GNSS设备提供实时厘米级甚至毫米级的定位修…...
为什么天下工厂能直接给到工厂老板 / 厂长手机号
做工业品销售的人都有过这种经历:在网上查到了一家目标工厂,拨过去,接电话的是前台。“您好,请问有什么事?” “我想找一下您们老板。” “老板不在,您要不要留个电话?” 电话留了,没…...
别再死记0.7V了!用Multisim仿真带你玩转二极管三种等效模型(附实战电路分析)
用Multisim仿真破解二极管模型的三大迷思:从理论到实战的深度探索 在电子工程的学习道路上,二极管总是那个让人又爱又恨的元件。它看似简单,却藏着无数让初学者抓狂的细节。你是否也曾困惑:为什么教科书总说硅管压降是0.7V&#x…...
音频解密工具终极指南:浏览器端高效解锁加密音乐文件完整解决方案
音频解密工具终极指南:浏览器端高效解锁加密音乐文件完整解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目…...
从ST转战小华HC32F448:一个电机控制老兵的实战避坑与快速上手指南
从ST转战小华HC32F448:一个电机控制老兵的实战避坑与快速上手指南 当国产MCU的性价比优势逐渐凸显,越来越多的工程师开始关注小华半导体这类新兴玩家。作为深耕电机控制领域多年的开发者,我最近在变频器项目中尝试了HC32F448这颗芯片…...

