SpringCloud——微服务

目录

导入hmall单体项目

认识微服务

单体架构

微服务架构

SpringCloud

微服务拆分

熟悉代码

拆分原则

远程调用

服务治理

注册中心原理

Nacos注册中心

服务发现

OpenFeign

快速入门

连接池

最佳使用

日志

网关

网关路由

快速入门

路由属性

网关登录校验

思路及问题

自定义过滤器

GlobalFilter

GatewayFilter

登录校验代码

配置管理

问题提出

共享配置

配置热更新

动态路由


SpringCloud官网:https://spring.io/projects/spring-cloud

导入hmall单体项目

在Docker中我们已经部署了hmall项目,项目资源默认是用dev中的Mysql的配置,所以我们在上一篇文章Docker就能成功运行,但是我们想让他改成本地的local就要如下步骤

认识微服务

单体架构

微服务架构

SpringCloud

国内公司大多都用JDK8或者JDK11,2022.0.xSpringCloud对应的是3.0.x的SpringBoot版本底层必须JDK17以上,所以我们学习2021.0.x的SpringCloud版本。

在pom.xml文件中我们有如下:

Ctrl+B进入Spring-cloud-dependencies中可以看到里面有SpringCloud中的组件以及版本控制,几乎所有的SpringCloud的组件这里面都引入了。所以我们在引入了Spring-cloud-dependencies以后,我们在开发过程中就不需要指定组件的版本了,以后要用到那个版本,直接把组件引入过来,不用管版本。

微服务拆分

熟悉代码

ThreadLocal重点,在苍穹外卖中也讲过。

拆分原则

微服务项目结构

拆分的工程结构有两种:

独立的project是指,地下每一个微服务(模块)就是一个project,而黑马商城hmall是一个空文件夹,文件夹里面就有这些所有的project。

Maven聚合是,如上图,黑马商城就是一个project,底下的每个微服务就都是一个模块。如下图,每新建一个模块其实就是新建一个微服务,这种模式看起来和单体架构差不多,但是其实有区别的,如下图单体架构hm-common他是不运行的,只有hm-service是运行的。(这种模式更加方便我们去管理,这种结构比较受中小型项目的一些欢迎,所以之后我会来讲这种模式)

注意拆分的时候,配置里面的数据库的连接,数据库的连接很重要,每个微服务都要做到独立,独立部署,数据独立等,也就是说我们需要重新去创建一个新的Mysql的实例,利用Docker重新创建一个,这个微服务独享一台mysql,那么IP地址端口肯定都会变化,但是这样成本太高。所以我的建议是我们就搞一台Mysql,然后在里面创建不同的Database(数据库),一个微服务一个数据库,模拟一下,但是真实的企业中肯定是一个微服务一个独立的mysql实例。(如下图,配置修改了数据库的名称)

远程调用

问题引入:

当我们把hmall项目的购物车以及商品两个微服务拆分时,购物车有的业务需要商品的查询功能,就需要调用商品的Service层的代码,但是现在他们两个是两个微服务,并且数据库也是不一样的,从物理上隔离开了,没办法去调用商品的Service层代码,所以我们在查询购物车的时候拿不到商品的信息。

解决:物理上两者是隔绝的,但是从网络上两者又是相通的,因为这两者之后部署到服务器上也好,部署到容器当中也好,都是可以通过网络连接的。所以可以通过网络请求数据。购物车微服务通过网络向商品微服务发起请求:

购物车服务怎么向商品服务发网络请求呢?Java在这方面就模拟了前端向后端发送http请求,因为前端是个静态页面,需要后端传递数据才可以实现各种业务,如上的问题也可以模拟前端向后端发送的请求来完成。(针对于返回值类型,其实本来应该是JSON格式的数据,但是Java会反序列化成实体class类型给你)

举例:

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值