同步操作将从 lerry_lca/faq-qa-sys-v2 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
采用了微服务架构,是对单体架构的升级。
项目采用了Spring Boot,Spring Cloud Alibaba,MyBatis等核心技术,同时提供了前端界面用于访问系统。
faq-qa-sys-v2
├── gateway -- 基于Spring Cloud Gateway的微服务API网关服务
├── microservice-dialogue -- 对话微服务
└── microservice-management -- 管理微服务
对话系统已实现的功能如下:
管理系统已实现的功能如下:
技术 | 说明 |
---|---|
MySQL | 关系型数据库 |
Redis | 缓存数据库 |
Elasticsearch | 检索引擎/文档型数据库 |
技术 | 说明 |
---|---|
Spring Boot | Java应用框架 |
Spring Cloud | 微服务框架 |
Spring Cloud Alibaba | 微服务框架 |
MyBatis | ORM框架 |
MyBatis Generator | 数据层代码生成器 |
Lombok | 简化对象封装工具 |
Log4j2 | 日志管理 |
SpringFox Swagger2 | API文档框架 |
Rest high level client | Elasticsearch Java客户端 |
工具 | 说明 |
---|---|
Nginx | Web服务器 |
Kibana | 数据可视化工具 |
Nacos | 服务发现与注册中心 |
Sentinel | 流量控制组件 |
Ribbon | 客户端负载均衡工具 |
RocketMQ | 消息中间件 |
技术 | 说明 |
---|---|
ChatUI | 搭建智能对话机器人的前端框架 |
LayUI | 前端框架 |
工具 | 版本 |
---|---|
JDK | 1.8 |
MySQL | 8.0 |
Redis | 5.0 |
Elasticsearch | 6.8.13 |
Kibana | 6.8.13 |
Nginx | - |
Nacos Server | 1.4.1 |
Sentinel Dashboard | 1.8.0 |
RocketMQ | 4.8.0 |
关于JDK的配置可参考该教程
关于Redis的下载安装和启动可参考该教程
#cd到es目录
bin/elasticsearch
下载和es对应版本的ik分词插件,解压里面的内容到es根目录的plugins/ik
新建用户自定义词典data/dictionary/user_word.dic
放在es根目录的plugins/ik/config/user_word.dic
user_word.dic
内容示例如下(一个自定义词一行):
兰陵王入阵曲
然后在用户自定义词典的统计目录下,修改ik配置vim IKAnalyzer.cfg.xml
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">user_word.dic</entry>
新建同义词库data/dictionary/synonym.txt
放在es根目录的config/analysis/synonym.txt
synonym.txt
内容示例如下(使用最简单的表达形式)
jump,leap,hop
如果遇到这些词项中的任何一项,则将其替换为所有列出的同义词。关于其他同义词形式参考官方文档
关于MySQL的下载安装和启动可参考该教程
启动成功后,通过命令use qadb;
进入qadb
数据库,若没有可通过如下语句创建
CREATE DATABASE IF NOT EXISTS qadb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
/sql/qadb.sql
,将在qadb
数据库中创建4张表stdq_stda
和stdq_simq
,feedback
和history
,使用以下命令导入source qadb.sql;
Nginx是高性能的Web和反向代理服务器 ,关于Nginx的安装配置可参考该教程
#cd到nginx目录,启动
sudo sbin/nginx -c conf/nginx.conf
#cd到nginx目录,平滑重启
sudo sbin/nginx -c conf/nginx.conf -s reload
# 编辑nginx.conf
server {
listen 8600;
server_name localhost;
# 配置对话页面的请求路由
location /qa-ui {
alias /home/lca/code/ui/qa-ui/;
index dialogue.html;
}
}
server {
listen 8600;
server_name localhost;
# 转发其他请求到服务网关
location / {
proxy_pass http://localhost:8900;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
# 假定启动两个相似度模型服务,端口号分别为6661和6662,weight表示访问权重
upstream sim_server {
server localhost:6101 weight=1;
server localhost:6102 weight=1;
keepalive 30;
}
# 6100端口的/sim请求将被转发到sim_server上
server {
listen 6100;
server_name localhost;
# 转发其他请求到服务网关
location /sim {
proxy_pass http://sim_server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
重启nginx,可通过localhost:8600/qa-ui访问对话页面
搭建Nacos Server,可参考官方文档
下载和Spring Cloud Alibaba版本对应的Nacos
启动服务器
# Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
# 如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
# Windows启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
访问localhost:8848/nacos
,使用nacos/nacos
登陆控制台
下载Sentinel控制台Dashboard
启动控制台java -jar sentinel-dashboard.jar
,启动成功后通过浏览器访问localhost:8080
,使用sentinel/sentinel登陆
#启动name server
sh bin/mqnamesrv
#启动broker
sh bin/mqbroker -n localhost:9876
下载控制台源码
application.properties
# console端口
server.port=17890
# nameserver地址
rocketmq.config.namesrvAddr=localhost:9876
在pom.xml中找到该行,修改版本为你rocketmq的版本
<rocketmq.version>4.8.0</rocketmq.version>
进入rocketmq-console目录,输入下面命令
mvn clean package -Dmaven.test.skip=true
进入target目录,启动jar
java -jar rocketmq-console-ng-2.0.0.jar
通过浏览器访问localhost:17890/#/
确保在上一步骤已经完成了环境的搭建,接下来分别启动相似度服务、网关服务、对话微服务和管理微服务
关于相似度服务的启动参考readme
关于网关服务的启动参考readme
关于对话微服务的启动参考readme
关于管理微服务的启动参考readme
前端演示UIQA-UI
关于开发过程中的微服务技术的整合、配置步骤,参考这里
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。