# tensquare_dev84 **Repository Path**: hduming/tensquare_dev84 ## Basic Information - **Project Name**: tensquare_dev84 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-02-11 - **Last Updated**: 2020-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tensquare_dev84 #### 介绍 将十次方的配置文件部署在码云上,从码云读取。 # 十次方社交项目 父工程tensquare_parent,采用springboot+spring data jpa+springcloud框架 tensquare_common,存放公共的工具类与包装类 tensquare_base,基础微服务,http://localhost:9001 tensquare_recruit,招聘微服务,http://localhost:9002 tensquare_qa,问答微服务,http://localhost:9003 tensquare_article,文章微服务,http://localhost:9004 tensquare_gathering,活动微服务,http://localhost:9005 tensquare_spit,吐槽微服务,http://localhost:9006 tensquare_search,搜索微服务,http://localhost:9007 tensquare_user,用户微服务,http://localhost:9008 tensquare_sms,消息微服务,http://localhost:9009 tensquare_friend,交友微服务,http://localhost:9010 tensquare_manager,后台微服务,http://localhost:9011 tensquare_web,前台微服务,http://localhost:9012 tensquare_config,配置中心微服务,http://localhost:12000 /远程仓库配置文件名称 tensquare_eureka,Eureka注册中心服务器,http://localhost:6868 **mysql**:3306 **redis**:6379 **MongoDB**:27017 **ElasticSearch**:9300(java),9200(其他);win+r+cmd,输入elasticsearch启动 **head图形化管理ElasticSearch**:http://localhost:9100;win+r+cmd,进入图形化安装包的路径D:\tensquare_APP\elasticsearch-head-master\elasticsearch-head-master,执行命令 grunt server启动图形化界面 **Rabbitmq**:15672(自动开启服务) **Rabbitmq图形化界面**:http://localhost:15672 ;账号密码:guest ## 后台代码实现 ## 第一天(环境搭建) ### 1.docker搭建mysql微服务 用Xshell6连接已经配置好的虚拟机(配置名称,IP,账号:root,密码:itcast); ip查看命令:ip addr; 执行 systemctl start docker 命令启动docker; 执行 docker images 可以查看当前docker容器已经下载好的镜像文件; 镜像文件的下载与安装(只能下载网上存在的镜像,如mysql): 1)执行 docker search mysql 查询网上可下载的所有mysql镜像; 2)执行 docker pull 镜像名称 可以下载该镜像; 3)执行 docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admins centos/mysql-57-centos7(这是镜像名), 看见ae2fe6029e9d34e862765b3d6678662d189bf943de646c63e45b4edb5057780e信息,表示搭建Mysql的微服务成功; 5)执行docker ps查看到Mysql正在运行;执行docker ps -a 可查看已经不运行的进程。 注意:如果搭建失败,再次搭建会搭建一个新的mysql,删除要先执行docker ps -a,然后可以看见mysql镜像前面有一个ID号码,所以执行(docker rm ID号码 )删除该安装包。 最后通过mysql的可视化界面连接虚拟机上的mysql即可(账号:root,密码:admins,端口:3306,ip地址:192.168.25.128) 关闭虚拟机之后,mysql是会关闭的,可以通过docker start ID号码 启动mysql; 关闭使用命令 docker stop ID号码(或名称) 即可关闭; 由于本人连接的是局域网,ip变动影响测试,所以将数据库移动到本地mysql。 ### 2.创建项目工程 创建一个maven父工程tensquare_parent,配置springboot+spring data jpa环境; 创建一个maven子工程tensquare_common,存放公共的工具类与包装类; 创建一个maven子工程tensquare_base,基础微服务,端口为9001,进行CRUD测试; 为什么使用推特的雪花算法分布式ID生成器(一个util工具类)? 因为该算法位数比较多,微服务ID不会重复。 使用postman软件进行CRUD测试 ## 第二天(SpringDataRedis) ### 1.创建项目工程 利用代码生成器生成一个maven子工程tensquare_recruit,招聘微服务,端口为9002,业务:热门企业查询,推荐企业查询,最新企业查询 利用代码生成器生成一个maven子工程tensquare_qa,问答微服务,端口为9003,业务:最新,热门,等待回答 利用代码生成器生成一个maven子工程tensquare_article,文章微服务,端口为9004,业务:文章审核,文章点赞 利用代码生成器生成一个maven子工程tensquare_gathering,活动微服务,端口为9005,业务:将查询结果保存到spring自带缓存中;修改删除文章时,将缓存删除 ### 2.docker搭建redis微服务 执行 docker run -di --name=tensquare_redis -p 6379:6379 redis 安装redis微服务; 根据ID查询文章时,将查询结果保存到缓存中;修改删除文章时,将缓存删除。 ## 第三天(MongoDB,SpringDataMongoDB) ### 1.本地与docker搭建mongoDB微服务 1)本地搭建: 下载安装包,直接安装到本地文件夹(默认在C:\Program Files\MongoDB); 配置path环境变量(C:\Program Files\MongoDB\Server\3.2\bin); 在盘符根目录下创建一个文件夹(mongoDB_data)用于保存mongoDB数据; 在这个文件夹下执行cmd进入到d盘,然后执行mongod -dbpath=d:\mongoDB_data,即可将配置MongoDB服务; 重新开启cmd执行mongo连接到数据库,exit结束(或者ctrl+c);默认端口27017。 2)docker搭建: 执行 docker run -di --name=tensquare_mongo -p 27017:27017 mongo 安装MongoDB微服务 远程连接:cmd下执行mongo 远程IP地址 3)MongoDB数据语法:Bson(json的加强版) 注意:它的整型没有加NumberInt表示浮点型,加了表示整型 创建数据库:use spitdb 查询数据库所有数据:db.spitdb.find() 添加数据:db.spitdb.insert({id:"2",content:"这是内容",userid:"1013",nickname:"小明",visits:NumberInt(1111)}),后面继续追加》》》 ### 2.创建项目工程 手动创建一个maven工程tensquare_spit,吐槽微服务,端口:9006, 业务: 1)通过MongoDB对吐槽进行增删改查; 2)根据父节点查询吐槽(就是说一个人的吐槽下面会跟着其他人的吐槽),并且分页显示; 3)吐槽点赞:如果每次点赞都是先根据ID查询该吐槽并在点赞数上加1,这样性能是不好的;可以使用原生mongo命令进行操作,这样只需要执行一次修改操作。 4)控制不能重复点赞:当前用户登录后进行点赞,先从redis查询是否有该用户,如果有不能点赞,如果没有可以点赞,点赞之后将该用户保存到redis 5)发布吐槽:判断当前吐槽是否有父节点,有的话,你这边发布一个吐槽,父节点的吐槽数就要加一;要设置一些初始值为0防止空值异常 ## 第四天(ElasticSearch) ElasticSearch是一个分布式搜索和分析引擎,Solr搭建分布式却要借助于其他插件,他们的底层都是lucene。 ### 1.环境准备 1)安装ElasticSearch 下载安装包,解压缩,win+r+cmd,进入到安装包里面的bin目录D:\tensquare_APP\elasticsearch-5.6.8\elasticsearch-5.6.8\bin(配置path路径可直接运行),执行elasticsearch,显示两个端口,java开发用9300,其他用9200。 浏览器输入 http://localhost:9200 会显示数据,即安装成功。 2)安装head插件:图形化管理索引库,这个图形化界面是由node.js做的; 1》安装node.js:下载安装包直接下一步安装完成; 2》安装cnpm(国外的下载速度太慢,所以从国内阿里下载):win+r+cmd,执行命令 npm install -g cnpm --registry=https://registry.npm.taobao.org 3》将grunt安装为全局命令:win+r+cmd,执行命令 npm install -g grunt-cli 4》安装依赖:win+r+cmd,进入图形化安装包的路径D:\tensquare_APP\elasticsearch-head-master\elasticsearch-head-master,执行命令 cnpm install 5》启动图形化界面:win+r+cmd,进入图形化安装包的路径D:\tensquare_APP\elasticsearch-head-master\elasticsearch-head-master,执行命令 grunt server;默认端口9100 3)ES配置允许跨域访问 找到D:\tensquare_APP\elasticsearch-5.6.8\elasticsearch-5.6.8\config\elasticsearch.yml文件,在最下面添加下面2行代码即可:http.cors.enabled: true http.cors.allow-origin: "*" 4)配置IK分词器 将ik的插件包放到D:\tensquare_APP\elasticsearch-5.6.8\elasticsearch-5.6.8\plugins下即可 5)添加IK词汇(比如一些网上流行词) 在D:\tensquare_APP\elasticsearch-5.6.8\elasticsearch-5.6.8\plugins\ik\elasticsearch\config下创建一个文件,命名为myword.dic,在里面添加词汇,然后在IKAnalyzer.cfg.xml文件下启用该文件。 测试是否生效:http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=肖德子裕 ### 2.创建项目工程 手动创建一个maven工程tensquare_search,搜索微服务,端口:9007 业务: 1)添加文章到索引库 概念: 是否索引:表示该域是否能被搜索 是否分词:表示搜索时是整体匹配还是分词匹配 是否显示:表示是否在页面上显示该域的内容 2)根据关键字搜索文章 可以设置多个关键字进行搜索 ### 3.logstash(日志收集处理框架,同步索引) ElasticSearch与Mysql数据同步(即将Mysql数据导入索引库) 1)logstash的安装 下载安装包,解压即可 2)logstash的命令 测试:进入安装包bin目录下(可配置环境变量),win+r+cmd,执行 logstash -e 'input { stdin { } } output { stdout {} }' -e:表示直接执行 -f:表示执行本地的文件(因为文档太多,一般通过这种方式导入) 3)同步索引 将配置好的数据库文件 mysqlcode 放到 logstash 的安装包下,对mysqlcode 下的 mysql.conf文件进行配置,让它配置好要导入的数据库相关信息; win+r+cmd,执行 logstash -f D:\tensquare_APP\logstash-5.6.8\mysqlcode\mysql.conf(其实就是找到那个配置文件去执行导入,可能会卡住,耐心等待) 注意:删除操作是不能同步的,所以一般要设置状态,修改状态,根据状态查询相应的信息即可 ### 4.docker下安装ElasticSearch 执行 docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8 安装ElasticSearch微服务 192.168.25.128:9200启动测试成功 1)解决docker安装后9300端口不能用(ElasticSearch微服务要启动状态) 首先要修改一个ElasticSearch的配置文件,要找到该文件所在路径;执行docker exec -it tensquare_es /bin/bash;发现该配置文件在/usr/share/elasticsearch下,但是我们只能访问/usr/share下的文件,所以我们要把它复制出来,放到/usr/share下。 执行exit退出; 执行复制文件命令docker cp tensquare_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml; 接着要先删除已经安装的ElasticSearch,执行docker stop tensquare_es关闭, 执行docker rm tensquare_es删除;然后执行docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8 即可将这个配置文件挂载到ElasticSearch下。 修改配置文件: 执行cd /usr/share/;执行ls进入查看所有文件发现现在有elasticsearch.yml这个文件了;接下来执行vi elasticsearch.yml 进入修改页面,按i进行修改,将transport.host: 0.0.0.0这个注释放开,按del可以删除前面#号,接着按esc,shift+z+z退回页面。 执行docker restart tensquare_elasticsearch重启服务;发现不能重启,原因在于内存不够,所以要配置硬件调优。执行vi /etc/security/limits.conf进入配置文件修改,在最后面添加* soft nofile 65536 和 * hard nofile 65536,接着按esc,shift+z+z退回页面。执行vi /etc/sysctl.conf进入修改,在最下面添加vm.max_map_count=655360;最后重启虚拟机,执行reboot,开启服务docker start ID号;完美。 2)安装IK分词器 本来是点击图标将本地磁盘的IK分词器上传到虚拟机,但是我的是破解版,这个功能不能使用,所以无法上传。 上传之后(直接拖过去),执行docker cp ik tensquare_elasticsearch:/usr/share/elasticsearch/plugins即可将IK分词器放入到插件文件夹下;重启生效。 4)支持跨域;安装head图形化界面 执行cd /usr/share/;执行vi elasticsearch.yml;添加: http.cors.enabled: true http.cors.allow-origin: "*" 重启生效 执行 docker run -di --name=tensquare_heard -p 9100:9100 mobz/elasticsearch-head:5 安装head成功。192.168.25.128:9001启动图形化界面。 ## 第五天(Rabbitmq) 效率:Kafka(卡夫卡,大数据使用)>Rabbitmq(有交换器)>Activemq 安全:Kafka(卡夫卡,大数据使用)