# gmall **Repository Path**: Gene_orange/gmall ## Basic Information - **Project Name**: gmall - **Description**: 基于B2C的电商网站,应用到 Dubbo + Zookeeper + Mybatis + MySQL + FastDFS + ELK + Thymeleaf + redis分布式锁、缓存等技术。实现了用户注册、微博授权登录、搜索商品、查看商品详情、下单、加入购物车等功能模块。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-01-17 - **Last Updated**: 2021-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、整体业务流程 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/212854_2387b544_5470869.png "屏幕截图.png") 二、应用到技术架构 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/212920_9b32a038_5470869.png "屏幕截图.png") **dubbo的基本概念** 调用关系: ``` 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者 监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心 ``` 调用关系说明 ``` 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向注册中心订阅自己所需的服务。 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 ``` **Thymeleaf模板技术** ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/213642_a2059bf2_5470869.png "屏幕截图.png") **FastDFS文件上传下载** ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/214346_d70089da_5470869.png "屏幕截图.png") **ElasticSearch搜索引擎** Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 特点: ``` 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎--做不规则查询 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 ``` ES能做什么? ``全文检索(全部字段)、模糊查询(搜索)、数据分析(提供分析语法,例如聚合)`` 三、项目总览 ![注册页面](https://images.gitee.com/uploads/images/2021/0507/220348_e67b0c79_5470869.png "注册页面.png") ![登录页面](https://images.gitee.com/uploads/images/2021/0507/215944_1123a72f_5470869.png "登录页面.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220459_752df3f7_5470869.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220515_1e0e853f_5470869.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220532_345c88cb_5470869.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220553_51896aeb_5470869.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220617_a0b0b724_5470869.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0507/220602_40da3d96_5470869.png "屏幕截图.png") 四、项目总结 ``` 总体代码结构还是不错的,就是有些代码写的不是那么好,(比如token还是存在cookie)文档的内容也显得乱凑的,当然里面也涉及到比较复杂的SQL语句。总之还是挺适合入门学习 Dubbo + Zookeeper。 ```