Mall商城的高级篇的开发(一)

2024-03-06 07:20
文章标签 开发 高级 商城 mall

本文主要是介绍Mall商城的高级篇的开发(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Mall商城的高级篇的开发

项目的整体架构图

image-20220504212423119

实现全文检索和日志分析

在本项目中,全文检索使用ElasticSearch来做全文检索。

做日志存储和日志检索(日志的快速定位)使用ELK(ElasticSearch+Kibana+LogStash).

比如,腾讯云的ES服务器利用LogStash来进行数据传输汇聚到我们的ES中进行存储和异常定位与监控。

他会收集我们项目中日志,包括前台服务和后台服务,还有第三方的中间件

image-20220504212523588

实现全文检索

流程是这样:在我们后台管理系统中对应着有SPU管理,有一个商品上架的功能。

image-20220505081801386

通过点击商品的上架功能,我们的后台服务器将改商品的所有属性传给我们的ES服务器并在ES服务器保存(index),之后在实现我们的全文检索的功能。

其中保存商品的数据,不是说将商品的所有信息都保存在ES服务器,主要的原因是ES服务器保存的数据都在内存中,内存相对硬盘,性价比还是相差很大。

SKU在ES中的存储模型分析

当然在ES服务器中保存的是JSON数据,基于此,我们约定好需要检索的内容。

{"skuId":"1","spuId":"11""skuTitle":"Apple xx","price":"99","seleCount":"990""attrs":[{"尺寸":"xx"},{"CPU":"xx"},{"分辨率":""},    ]
}

这样进行存储,很容易产生冗余字段。但是呢,这样检索起来方便。这个是利用空间换时间。

其实呢,为了减少冗余字段,因为每个商品的属性有的就是一样。

sku索引{"skuId":"1","skuTitle":"Apple xx","price":"99","seleCount":"990"
}attr索引{"spuId":"11","attrs":[{"尺寸":"xx"},{"CPU":"xx"},{"分辨率":""}  ]
}

这个使用时间换空间。

最后我们还是选择浪费时间少的存储模型。

PUT product
{"mappings":{"properties": {"skuId":{ "type": "long" },"spuId":{ "type": "keyword" },  # 不可分词"skuTitle": {"type": "text","analyzer": "ik_smart"  # 中文分词器},"skuPrice": { "type": "keyword" },  # 保证精度问题"skuImg"  : {"type": "keyword","index":false,"doc_value"},  "saleCount":{ "type":"long" },"hasStock": { "type": "boolean" },"hotScore": { "type": "long"  },"brandId":  { "type": "long" },"catalogId": { "type": "long"  },"brandName": {"type": "keyword"}, # 视频中有false"brandImg":{"type": "keyword","index": false,  # 不可被检索,不生成index,只用做页面使用"doc_values": false # 不可被聚合,默认为true},"catalogName": {"type": "keyword" }, # 视频里有false"attrs": {"type": "nested","properties": {"attrId

这篇关于Mall商城的高级篇的开发(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779257

相关文章

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo