一止长渊
Stream流建立多级菜单

在数据库中我们常常遇到多级分类,我们如何简单便捷地建立一个多级分类树呢?

截屏2021-03-17 22.04.20.png
背景:数据库中有表描述商品分类信息,其中 parent_cid 就是其父类分类的 id,如何从数据库中查出结果后,找出每个分类的子分类。如果有 SQL 查询,如果想找到所有的二级分类,则需要先找到所有的一级分类的 id,然后利用 in 操作找出所有的二级分类,然后三级分类还是需要再写一个 SQL 语句,然后查询完还需要将相应的 children 归并到相应的一级分类中,这是十分麻烦的,多次 SQL 查询也会造成性能比较低。

Gateway网关

网关的意义在于

  • 在控制界面对所有服务集群进行管理时,如果某个服务挂了,我们不可能还在控制界面的后台修改代码将请求转向另一个服务的端口号
  • 利用网关可以进行鉴权,然后将服务转发给后端集群,避免了每个服务都要编写鉴权这一步
  • 服务发现注册、服务熔断、过滤、匹配请求

截屏2021-03-14 20.28.04.png

Nacos:如何注册服务(上)

SpringCloud-Alibaba-Nacos是阿里出品的一个服务发现与注册的组件,微服务需要调用其他微服务模块的服务或者微服务模块需要被其他模块调用,都需要到Nacos注册中心中注册该微服务模块

如何微服务模块注册到注册中心,主要是以下几个步骤

1.在微服务模块引入Nacos的依赖

2.启动Nacos服务器

3.微服务模块设置好注册中心的接口以及该微服务模块需要注册到服务中心的名称

4.在启动类加入 @EnableDiscoveryClient 注解表示该服务注册到Nacos中

Nacos:如何统一配置(下)
我们项目部署期间,如果修改配置,则需要重新打包部署到服务器上,这一过程十分繁琐,有什么简便的方法能够实现在服务不停机的情况下,动态修改配置呢?这里就要使用 Nacos 来统一管理我们的配置了。

一、传统使用配置模式

之前我们的开发模式为,我们将需要的配置防止在 application.properies 中,然后需要使用时通过@Value(“$(配置名)”)的方式来进行引入配置,如同下面一样 👇
application.properties 配置

Nacos:如何调用其他微服务(中)

上节我们将微服务模块注册到了注册中心 Nacos 中,接下来就是如何实现微服务模块之间接口的调用。
这里我们使用 SpringCloud-Alibaba 提供的 OpenFeign 进行微服务模块之间调用,如果微服务 A 需要调用微服务模块 B 的接口 1,那么我们如何实现呢?

首先介绍一下原理:微服务 A、微服务 B 相互调用,前提是两个微服务都已经注册到注册中心 Nacos 中。然后微服务模块 A1 需要调用微服务 B 时,就去注册中心查看健康可用微服务模块 B 的地址,然后通过 Nacos 返回一个健康可用的微服务模块 B1 的地址给微服务模块 A1,然后微服务模块通过利用 OpenFeign 向从 Nacos 中获得的地址发送HTTP 请求给微服务模块 B1 的接口 1,然后微服务 A1 调用微服务 B1 的接口 1 完成了。