1.项目介绍 1.1项目简介
探花交友是一个陌生人的在线交友平台
,在该平台中可以搜索附近的人
,查看好友动态
,平台还会通过大数据计算进行智能推荐
,通过智能推荐可以找到更加匹配的好友,这样才能增进用户对产品的喜爱度。探花平台还提供了在线即时通讯功能
,可以实时的与好友进行沟通,让沟通随时随地的进行。
1.2技术方案
前端:
flutter + android + 环信SDK + redux + shared_preferences + connectivity + iconfont + webview + sqflite
后端:
Spring Boot + SpringMVC + Mybatis + MybatisPlus + Dubbo
MongoDB geo 实现地理位置查询
MongoDB 实现海量数据的存储
Redis 数据的缓存
Spark + MLlib 实现智能推荐
第三方服务 环信即时通讯
第三方服务 阿里云 OSS 、 短信服务
1.3技术架构
前端:
flutter + android + 环信SDK + redux + shared_preferences + connectivity + iconfont + webview + sqflite
后端:
采用Dubbo作为微服务架构技术
采用RabbitMQ 作为消息服务中间件
采用Redis实现缓存的高可用
采用Mysql,MongoDB进行海量数据的存储
集成第三方应用组件(阿里云,短信,即时通信)
基于Spark Mllib推荐系统
1.4技术解决方案
使用MongoDBgeo实现附近的人的解决方案
使用Spark + Mllib实现智能推荐的解决方案
使用MongoDB进行海量数据的存储的解决方案
使用采用分布式文件系统存储小视频数据的解决方案
使用百度人脸识别的解决方案
使用阿里云进行短信验证码发送的解决方案
1.5技术亮点
采用MongoDB geo实现地理位置查询
采用RabbitMQ作为消息服务中间件
采用MongoDB进行海量数据的存储
采用Spark + Mllib实现智能推荐
采用环信服务实现即时通讯
采用分布式文件系统存储小视频数据
采用SpringCloud Alibaba Dubbo作为微服务架构技术
采用SpringBoot + Mybatis实现系统主架构
采用Redis集群实现缓存的高可用
1.6前后端分类
项目基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作开发
前后端分离开发基于HTTP+JSON 交互
通过接口文档(API文档)定义规范
前后端按照文档定义请求及响应数据
2.开发工具
2.1Linux虚拟机
账号/密码:root/root123
导入Linux-tanhuan虚拟机
修改子网192.168.136.0
ip:192.168.136.160
在root/docker-file目录进入base里面
docker-compose up -d 启动检查工程
base
其中包含redis,nacos,yapi,mongo
fastdfs
rmq
recommend
Android模拟器 -导入APK
postman
JDK1.8
在本地导入sql
YAPI已经在linux虚拟机中准备好了
3.环境搭建 3.1工程结构
3.2创建模块
父工程
工程名称
说明
tanhua
tanhua-autoconfig
自动装配组件(短信等)
tanhua
tanhua-model
实体类模块
tanhua
tanhua-dubbo
Dubbo子模块(可以理解为文件夹,管理Dubbo模块)
tanhua
tanhua-commons
工具类
tanhua
tanhua-app-server
与手机端交互的入口模块
tanhua-dubbo
tanhua-dubbo-interface
Dubbo接口模块
tanhua-dubbo
tanhua-dubbo-db
Dubbo服务模块(数据库部分)
tanhua-dubbo
tanhua-dubbo-mongo
Dubbo服务模块(MongoDB部分)
3.3 配置依赖
3.3.1tanhua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 <parent > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-parent</artifactId > <version > 2.3.4.RELEASE</version > </parent > <properties > <maven.compiler.source > 8</maven.compiler.source > <maven.compiler.target > 8</maven.compiler.target > <mysql.version > 5.1.47</mysql.version > <jackson.version > 2.11.0</jackson.version > <druid.version > 1.0.9</druid.version > <servlet-api.version > 2.5</servlet-api.version > <jsp-api.version > 2.0</jsp-api.version > <joda-time.version > 2.5</joda-time.version > <commons-lang3.version > 3.3.2</commons-lang3.version > <commons-io.version > 1.3.2</commons-io.version > <mybatis.version > 3.5.6</mybatis.version > <mybatis.mybatis-plus > 3.4.1</mybatis.mybatis-plus > <lombok.version > 1.18.8</lombok.version > <mongo.version > 4.0.5</mongo.version > <spring-cloud.version > Hoxton.SR10</spring-cloud.version > <spring-cloud-alibaba.version > 2.2.5.RELEASE</spring-cloud-alibaba.version > </properties > <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-test</artifactId > <scope > test</scope > </dependency > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <version > 4.12</version > <scope > test</scope > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > </dependency > <dependency > <groupId > cn.hutool</groupId > <artifactId > hutool-all</artifactId > <version > 5.4.3</version > </dependency > <dependency > <groupId > com.alibaba</groupId > <artifactId > fastjson</artifactId > <version > 1.2.8</version > </dependency > </dependencies > <dependencyManagement > <dependencies > <dependency > <groupId > io.netty</groupId > <artifactId > netty-bom</artifactId > <version > 4.1.59.Final</version > <type > pom</type > <scope > import</scope > </dependency > <dependency > <groupId > io.projectreactor</groupId > <artifactId > reactor-bom</artifactId > <version > 2020.0.4</version > <type > pom</type > <scope > import</scope > </dependency > <dependency > <groupId > io.projectreactor.netty</groupId > <artifactId > reactor-netty</artifactId > <version > 0.9.8.RELEASE</version > </dependency > <dependency > <groupId > org.springframework.cloud</groupId > <artifactId > spring-cloud-dependencies</artifactId > <version > ${spring-cloud.version}</version > <type > pom</type > <scope > import</scope > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-alibaba-dependencies</artifactId > <version > ${spring-cloud-alibaba.version}</version > <type > pom</type > <scope > import</scope > </dependency > <dependency > <groupId > joda-time</groupId > <artifactId > joda-time</artifactId > <version > ${joda-time.version}</version > </dependency > <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus</artifactId > <version > ${mybatis.mybatis-plus}</version > </dependency > <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > <version > ${mysql.version}</version > </dependency > <dependency > <groupId > org.mongodb</groupId > <artifactId > mongodb-driver-sync</artifactId > <version > ${mongodb.version}</version > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > <optional > true</optional > <version > ${lombok.version}</version > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > <version > ${commons-lang3.version}</version > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > <version > 3.7</version > </dependency > <dependency > <groupId > com.fasterxml.jackson.core</groupId > <artifactId > jackson-databind</artifactId > <version > ${jackson.version}</version > </dependency > <dependency > <groupId > com.alibaba</groupId > <artifactId > druid</artifactId > <version > ${druid.version}</version > </dependency > <dependency > <groupId > commons-codec</groupId > <artifactId > commons-codec</artifactId > <version > 1.11</version > </dependency > </dependencies > </dependencyManagement > <build > <plugins > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-compiler-plugin</artifactId > <version > 3.2</version > <configuration > <source > 1.8</source > <target > 1.8</target > <encoding > UTF-8</encoding > </configuration > </plugin > </plugins > </build >
3.3.2tanhua-model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <dependencies > <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus</artifactId > </dependency > </dependencies > <build > <finalName > tanhua-model</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <version > 2.3.9.RELEASE</version > </plugin > </plugins > </build >
3.3.3tanhua-autoconfig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <dependencies > <dependency > <groupId > com.aliyun</groupId > <artifactId > aliyun-java-sdk-core</artifactId > <version > 4.5.3</version > </dependency > <dependency > <groupId > com.aliyun</groupId > <artifactId > dysmsapi20170525</artifactId > <version > 2.0.1</version > </dependency > <dependency > <groupId > com.aliyun.oss</groupId > <artifactId > aliyun-sdk-oss</artifactId > <version > 3.10.2</version > </dependency > <dependency > <groupId > com.aliyun</groupId > <artifactId > facebody20191230</artifactId > <version > 1.0.10</version > </dependency > <dependency > <groupId > com.baidu.aip</groupId > <artifactId > java-sdk</artifactId > <version > 4.8.0</version > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > </dependency > <dependency > <groupId > com.easemob.im</groupId > <artifactId > im-sdk-core</artifactId > <version > 0.2.5</version > </dependency > <dependency > <groupId > com.aliyun</groupId > <artifactId > aliyun-java-sdk-green</artifactId > <version > 3.6.1</version > </dependency > </dependencies >
3.3.4tanhua-commons 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <dependencies > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > </dependency > <dependency > <groupId > commons-codec</groupId > <artifactId > commons-codec</artifactId > </dependency > <dependency > <groupId > joda-time</groupId > <artifactId > joda-time</artifactId > </dependency > <dependency > <groupId > io.jsonwebtoken</groupId > <artifactId > jjwt</artifactId > <version > 0.9.1</version > </dependency > </dependencies >
3.3.5tanhua-dubbo-interface 1 2 3 4 5 6 7 <dependencies > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-model</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > </dependencies >
3.3.6tanhua-dubbo-db 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > </dependency > <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus</artifactId > </dependency > <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus-boot-starter</artifactId > <version > ${mybatis.mybatis-plus}</version > </dependency > <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > </dependency > <dependency > <groupId > com.alibaba</groupId > <artifactId > druid</artifactId > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > </dependency > <dependency > <groupId > com.fasterxml.jackson.core</groupId > <artifactId > jackson-databind</artifactId > </dependency > <dependency > <groupId > commons-codec</groupId > <artifactId > commons-codec</artifactId > </dependency > <dependency > <groupId > joda-time</groupId > <artifactId > joda-time</artifactId > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-dubbo</artifactId > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-alibaba-nacos-discovery</artifactId > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-dubbo-interface</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > </dependencies > <build > <finalName > tanhua-dubbo-db</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <version > 2.3.9.RELEASE</version > </plugin > </plugins > </build >
3.3.7tanhua-dubbo-mongo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > </dependency > <dependency > <groupId > com.fasterxml.jackson.core</groupId > <artifactId > jackson-databind</artifactId > </dependency > <dependency > <groupId > commons-codec</groupId > <artifactId > commons-codec</artifactId > </dependency > <dependency > <groupId > joda-time</groupId > <artifactId > joda-time</artifactId > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-dubbo</artifactId > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-alibaba-nacos-discovery</artifactId > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-commons</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-dubbo-interface</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > </dependencies > <build > <finalName > tanhua-dubbo-mongo</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <version > 2.3.9.RELEASE</version > </plugin > </plugins > </build >
3.3.8tanhua-app-server 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-data-redis</artifactId > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > </dependency > <dependency > <groupId > com.fasterxml.jackson.core</groupId > <artifactId > jackson-databind</artifactId > </dependency > <dependency > <groupId > commons-codec</groupId > <artifactId > commons-codec</artifactId > </dependency > <dependency > <groupId > joda-time</groupId > <artifactId > joda-time</artifactId > </dependency > <dependency > <groupId > io.jsonwebtoken</groupId > <artifactId > jjwt</artifactId > <version > 0.9.1</version > </dependency > <dependency > <groupId > com.github.tobato</groupId > <artifactId > fastdfs-client</artifactId > <version > 1.26.7</version > <exclusions > <exclusion > <groupId > ch.qos.logback</groupId > <artifactId > logback-classic</artifactId > </exclusion > </exclusions > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-dubbo</artifactId > </dependency > <dependency > <groupId > com.alibaba.cloud</groupId > <artifactId > spring-cloud-starter-alibaba-nacos-discovery</artifactId > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-dubbo-interface</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-commons</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > <dependency > <groupId > com.heima</groupId > <artifactId > tanhua-autoconfig</artifactId > <version > 1.0-SNAPSHOT</version > </dependency > </dependencies > <build > <finalName > tanhua-app-server</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <version > 2.3.9.RELEASE</version > </plugin > </plugins > </build >