mtg-shop商城SpringCloudAlibaba基础组件构建

介绍


mgt-shop是一款基于SpringCloudAlibaba从0到1构建的商城系统,本篇主要将SpringCloudAlibaba相关微服务组件集成到mtg-shop的项目中,具体的组件有:

  1. Nacos服务发现集成主要将微服务通过nacos客户端注册到nacos服务端。

  2. Nacos配置中心集成:可以替代springcloud-config组件,基于命名空间和group能够设置多开发环境,如:dev/test/pre/prod。也可以对项目中的配置做拆分,如:数据源配置、Redis链接配置等等。

  3. OpenFegin集成:服务与服务之间的调用将通过OpenFegin组件实现,也可以做到类似dubbo,提供者可以抽象接口依赖jar包,消费者依赖jar包进行开发,让消费者不在维护提供者提供的接口。

  4. GetWay集成:旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。

Nacos服务发现集成


由于Nacos1.x版本底层的协议使用的是http的方式,Nacos2.x版本底层增加了gRpc长连接的方式,所以我们尽量的去使用新版本。但是我们发现当我们将SpringCloudAlibaba2021.0依赖进行之后发现,它依赖的nacos还是1.4.x版本,所以我们将其排除掉并使用nacos2.0.0的客户端版本。这里先创建一个common模块用来存放所有公用的模块。

添加common模块的依赖,将mtg-order纳入到注册中心,mtg-order配置文件配置如下

server:  port: 9002spring:  application:    name: mtg-order  cloud:    nacos:      discovery:        server-addr: 192.168.56.10:8848

启动mtg-order,根据《SpringCloud Alibaba之Nacos客户端启动流程源码分析》我们可以验证一下nacos2.0版本是否使用了gRpc,首先找到注册服务的代码块,并将代码块打断点,看下启动的时候是否进入gRpc的方式进行服务的注册。

NamingGrpcClientProxy.registerService

当前组件是将mtg-order服务通过gRpc的方式注册到nacos的服务端,nacos客户端启动流程源码分析我们已经分析过了,这里不做赘述。看下注册中心管理平台。其它几个服务做同样的配置,将其纳入到注册中心。

Nacos配置中心


依赖​​​​​​​

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>    <exclusions>        <exclusion>            <groupId>com.alibaba.nacos</groupId>            <artifactId>nacos-client</artifactId>        </exclusion>    </exclusions></dependency>

nacos config使用

在nacos的控制台中,提供了namespace命名空间,它可以定义各个模块,模块与模块之间相互隔离,例如:mtg-order模块、mtg-product模块等,可以在每个模块中定义自己的配置。

具体操作结果如下图所示

在namespace有group,可以将每个模块进行分组,利用分组可以达到不同的环境,如:dev/test/pre/prod。

nacos控制台设置不同的环境,如下图所示

再来个demo

在product中配置一个提示信息,用于在商品抢购的时候,被抢完了,此时返回给客户端一个提示信息:客官你来晚了,商品已经被抢购一空~~~,未来提示信息可能会变化,所以我们要将其当做一个配置项应变未来可能的变化,类似的情况都可以这样做。

1、配置bootstrap.properties,nacos-config的配置信息。​​​​​​​

spring:  application:    name: mtg-product  cloud:    nacos:      config:        server-addr: 192.168.56.10        #mtg-product的namespace对应的id        namespace: c1b104cd-ec77-4d7b-b5a0-491c1fbc3766        #我们选择pre        group: pre

2、创建常量类

3、客户端调用

当nacos控制台的值变化的时候,调用方的数据会自动刷新

OpenFegin集成


依赖和配置​​​​​​​

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

将openfeign放入common模块,绝大部分的模块应该都会依赖它,版本的选择在上一篇文章已经说过。配置很简单,只需要在启动类上添加一个开启注解即可。

@EnableFeignClients

使用OpenFeign

在使用OpenFeign的时候,服务与服务之间调用api的管理,采用如下的方式进行管理。

当order模块调用product模块的一个接口,我们将这个接口抽出来放到一个模块mtg-product-sdk,只要product需要往外提供的接口都定义在这个模块中。这样的好处在于提供者提供服务的时候会单独给一个jar包,消费者依赖这个jar包,消费者不需要关心未来jar包的维护,如果提供者修改了字段或者新增方法,消费者只需要更新jar包就可以。接下来开发一个demo,product提供一个接口,order依赖这个接口并利用OpenFeign发起调用。

一、创建mtg-product-sdk模块

二、product依赖sdk并做具体的实现

三、order继承sdk并通过OpenFeign发起调用

OpenFeign集成完毕,未来就会按照这种方式进行服务与服务之间的调用。

GetWay集成


网关的作用:旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。让服务提供者不直接和客户端进行通信,采用网关统一管理。

SpringCloud的GetWay主要提供的功能包括:路由、断言和过滤器。通过官网可以看到他提供了很多功能。

依赖​​​​​​​

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-gateway</artifactId></dependency>

创建mgt-gateway模块

做一个简单的demo​​​​​​​

server:  port: 9005spring:  application:    name: mtg-gateway  cloud:    nacos:      discovery:        server-addr: 192.168.56.10:8848    gateway:      routes:        - id: baiduUrl          uri: https://www.baidu.com          predicates:            - Query=uri,baidu

访问当前项目并在uri地址后面增加一个uri=baidu的一个参数,让其跳转到baidu的主页,可以看到gateway生效了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山竹之七语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值