简单了解微服务--黑马(在更)

认识微服务

单体架构

不适合大型复杂项目

微服务架构

将单体结构的各个功能模块拆分为多个独立的项目

拆取的独立项目分别开发,在部署的时候也要分别去编译打包,分别去部署,不同的模块部署在不同的服务器上,对外提供不同的功能,相当于每个模块都是一个小的服务,即微服务。

另外还需要做到数据库的数据隔离,每个服务有各自的数据库,互不影响

好处:单体架构在编译部署时要花费大量的时间,微服务拆分开之后,打包编译的速度非常快

坏处:复杂度提升,运维成本变高

SpringCloud

OpenFeign

微服务的远程调用

只需定义接口,无需去实现,底层会帮我们完成跨服务的远程调用,包括服务的拉取,负载均衡,发送请求等等复杂的代码。

网关

网络的关口,负责请求路由转发身份校验

类比

网关:小区开门的老大爷

微服务:小区的各个住户

前端:相当于某人要来小区找人

检查:身份校验

告诉某某某xxx住在xxx号:路由

找不着带你过去:转发

小区可以看成是微服务的集群,小区的住户看成各个微服务

网关(开门的大爷)就能解决微服务太多,前端不知道请求谁的问题,前端只需要知道网关的地址即可,网关根据前端的请求来判断由哪个微服务来处理请求。

判断的过程-->路由,网关将请求转发的过程-->转发

思考:微服务很多,网关如何知道每个微服务的实例ip地址和端口?

注册中心。所有微服务一经启动,都会将信息注册到注册中心,此时注册中心就会有微服务的所有信息,网关也是微服务,启动之后可以去注册中心拉取所有微服务地址。

微服务不需要暴露给前端,只需要将网关暴露给前端即可

配置路由规则

微服务的治理

服务治理包含两部分:

part1:所有微服务在启动时都应该提交自己的服务信息到nacos-->服务的注册

part2:服务的调用者去注册中心拉取服务列表进行服务的调用-->服务的发现

注册中心原理

核心用于微服务的治理-->治理过程复杂-->使用注册中心的组件Nacos

Nacos注册中心组件

服务注册

服务治理包含两部分:

part1:所有微服务在启动时都应该提交自己的服务信息到nacos-->服务的注册

服务发现

part2:服务的调用者去注册中心拉取服务列表进行服务的调用-->服务的发现

步骤1,2和服务的注册是通用的,需要单独完成服务发现的列表拉取

总结(一)

在对单体架构进行微服务的拆分过程中,发现的问题,利用微服务组件进行问题的解决。

**远程调用:**例如,服务拆分之后,每个服务进行单一的职责,复杂服务会出现服务之间的调用(如查询),即远程调用,使用OpenFeign进行解决。

**服务治理:**远程调用有很多,调用关系错综复杂,需要对微服务地址进行维护,并知道它们的健康状态,即服务的治理,使用Nacos组件进行实现。

**网关:**服务很多,前端不知道调用谁,引入网关进行解决。

**配置管理:**微服务越来越多,每个服务都有自己的配置文件,配置太多太复杂,并且配置出现变更需要重新启动服务,服务的可用性降低,使用Nacos组件进行问题解决,可以对配置进行抽取和共享,简化微服务的配置,还可以实现微服务配置的热更新,服务无需重启,提高服务的可用性

RabbitMQ

相关推荐
AskHarries6 分钟前
Spring Boot集成Akka Cluster快速入门Demo
java·spring boot·后端·akka
2402_857589367 分钟前
Java免税商品购物商城:Spring Boot实现详解
java·开发语言·spring boot
少喝冰美式10 分钟前
【大模型教程】如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!
人工智能·spring boot·后端·langchain·llm·ai大模型·计算机技术
Armyyyyy丶16 分钟前
spring-boot-maven-plugin插件打包和java -jar命令执行原理
java·maven·插件打包
.生产的驴26 分钟前
SpringBoot 消息队列RabbitMQ 交换机模式 Fanout广播 Direct定向 Topic话题
spring boot·rabbitmq·java-rabbitmq
罗政35 分钟前
[附源码]SpringBoot+VUE+Java实现人脸识别系统
java·vue.js·spring boot
-XWB-42 分钟前
【Java】将一个List拆分使用线程池多线程运行
java·windows·list
陈大爷(有低保)1 小时前
题目:基于TCP/IP用DOM4j修改XML
java·服务器·tcp/ip
m0_738755921 小时前
.ideavimrc在idea打不开
java·vim·intellij-idea
超级小的大杯柠檬水1 小时前
IDEA中实现springboot热部署
java·spring boot·intellij-idea