视频讲解
1_基础环境准备
2_新增商品需求
3_查询商品需求
说明
项目代码文件夹:es-kafka-hw
SQL 代码:hw.sql
基础环境搭建:基础环境准备.md
系统架构图
基础环境准备
在 VM 中克隆出一个新的虚拟机,IP 地址为 192.168.186.20。
在 Docker 中安装 MySQL 容器,端口映射到宿主机。
在 Docker 中安装 ElasticSerach 容器,端口映射到宿主机。
在 Docker 中安装 Kibana 容器,配置 ES 的 URL 地址,端口映射到宿主机。
在 Centos7 中创建集群网络,192.168.0.0/24 命名为:kafka
。
在 Docker 中搭建 Zookeeper 集群。
在 Docker 中搭建 Kafka 集群。
在 Docker 中安装 Kafka-Manager,端口映射到宿主机。
登录到 Kafka 容器,创建主题:product,3 个分区,3 个副本。
要求将基础环境搭建流程、使用命令、效果截图等信息编写到一个 Markdown 文档中。
数据库和索引库准备
新建索引库 renda
,类型名称为 product,Mapping 要求:
name
:"type" : "text", "analyzer" : "ik_max_word"
goods_desc
:"type" : "text", "analyzer" : "ik_max_word"
其它映射关系可以根据数据类型、需求场景自行定义。
需求
新增商品
流程图
流程说明
1、持久化:商品微服务将用户传入的商品信息封装为商品对象持久化到数据库。
2、生产消息:商品微服务将商品对象保存后,获得该商品对象在数据库中记录的 id,将该 id 作为消息发送到 Kafka 的 product 主题中。
3、监听并消费消息:ES 微服务监听 Kafka 的 product 主题,收到新消息(新插入商品的 id)后,从数据库中查询该 id 对象的商品对象。
4、添加文档:ES 微服务将通过 id 查询到的商品对象,添加到 Elasticsearch 的 renda
索引库中。
{
"name": "New Phone17",
"price": ,
"flag": ,
"goodsDesc": "商品描述。。。",
"images": "www.baidu.com",
"goodsStock": ,
"goodsType": "3"
}
代码语言:javascript复制{
"name": "华为手机 P40",
"price": ,
"flag": "1",
"goodsDesc": "华为P40 5G手机 分期 麒麟990 晨曦金 8 256GB",
"images": "https://img14.360buyimg.com/n0/jfs/t1/133822/33/8832/135985/5f4da578E7c6efde1/2cd53a53083ab2ed.jpg",
"goodsStock": ,
"goodsType": "1"
}
商品查询
流程图
需求描述
实现商品查询功能,类似电商站内商品搜索。
- 查询条件:
name
。 - 分页查询:每页 5 条。
- 排序规则:price,升序。
- 结果过滤:商品价格范围过滤。
- 实现高亮效果。