海量订单系统微服务开发:使用MongoDB支持海量数据

海量订单系统微服务开发

订单系统是电商平台中一个非常重要的组成部分,而且它还是一个具有巨大流量和高并发访问的系统,与订单相关的服务涉及库存、支付、物流等。在设计订单系统时,我们选择使用支持海量数据的NoSQL 数据库MongoDB,配合使用反应式的Spring Data MongoDB,实现高并发设计。

本章实例项目代码可从本书源代码中下载,在IDEA 中检出,或通过页面直接下载使用。检出后请获取分支版本V2.1。在这个分支中包含以下几个模块:

  • order-object:订单公共对象设计。
  • order-restapi:订单微服务接口应用设计。
  • order-web:订单后台管理应用设计。

使用MongoDB支持海量数据

MongoDB是一个分布式数据库,对于开发调试,我们只需一个单机版即可。

使用 Mongo插件

如果使用的是IDEA开发工具,则为了方便查询数据库,也可以安装一个Mongo客户端插件。打开 IDEA 设置,在插件上搜索Mongo进行安装即可,安装完成后,如图8-1所示。

安装插件之后,就可以在设置中通过Other Settings连接 MongoDB,使用客户端来查询数据。图8-2是一个本地数据库连接的配置实例。

MongoDB数据源相关配置

我们在模块 order-restapi中进行MongoDB的设计,首先在项目对象模型pom.xml中引入相关依赖引用,代码如下所示:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>

这里引用的是反应式Spring Data MongoDB组件,它可以支持无事务的高并发非阻塞的异步请求调用。

在模块的配置文件 applicaption.yml 中,设定连接MongoDB服务器的数据源配置,代码如下所示:

#datasourcespring:
data:
mongodb:
host: localhostport: 27017
#矫正Mongo查询时间jackson:
timezone: GMT+8

这里是开发环境的一个本地连接的简单配置,如果是生产环境,则可以设置用户名和密码,并且指定使用的数据库名称。

这里是开发环境的一个本地连接的简单配置,如果是生产环境,则可以设置用户名和密码,并且指定使用的数据库名称。

因为MongoDB使用了格林尼治时间(GMT),所以为了显示东八区的正确时间,我们在数据查询时做了“GMT+8”的配置。

订单文档建模

订单数据主要由订单及其明细数据组成,由于订单从生成开始到交易结束,会发生一系列状态变化,而这些状态一般可以固定下来,所以可以使用一个枚举类来实现。

订单及其明细数据

订单文档的建模由Order类实现,代码如下所示:

@Document
@Data
@NoArgsConstructorpublic 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值