# troll **Repository Path**: subpu/troll ## Basic Information - **Project Name**: troll - **Description**: jforum2项目的SpringCloud版本, 基于Netflix相关技术栈 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2021-04-11 - **Last Updated**: 2021-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # troll #### 介绍 forum2项目的SpringCloud版本, 基于Netflix相关技术栈 #### 软件架构 SpringCloud版本:2020.0.2, SpringBoot版本:2.4.4. 相关实例及业务接口基于: jforum2的integration-rest分支代码 #### SpringCloud 组件 1. 注册中心: eureka, 模块名称: eurekaserver, 依赖: `spring-cloud-starter-netflix-eureka-server` 2. 网关: gateway, 模块名称: gateway, 依赖: `spring-cloud-starter-gateway` 3. 客户端: eurekaClient, 模块名称: 业务子服务及相关组件, 依赖: `spring-cloud-starter-netflix-eureka-client` 4. 配置中心: config, 模块名称: troll-config(项目地址://gitee.com/subpu/troll-config), 依赖: 服务器端:`spring-cloud-config-server`,客户端:`spring-cloud-config-client` 5. 分布式事务: txlcn, 模块名称: troll-tx, 依赖: `com.codingapi.txlcn:txlcn-tm` 6. 断路器: circuitbreaker, 依赖: `spring-cloud-starter-circuitbreaker-resilience4j` 7. 事件分发: RabbitMQ, 依赖: `spring-boot-starter-amqp` #### 业务子服务 1. 会员服务, 模块名称: accounts 2. 版块服务, 模块名称: forum 3. 话题服务, 模块名称: threads 4. 回复服务, 模块名称: replies 5. 业务日志, 模块名称: troll-actionlog 6. 前端API, 模块名称: nest, 对外的服务API基于thrones.jersey(jforum2的integration-rest分支) #### 关于Docker 1. **项目基于openJDK 11+** 需要docker中安装: openjdk(Tag:11.0.7), windows wsl2中运行: `docker pull openjdk:11.0.7` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/211431_9e050251_351732.png "165653.png") 2. **requested access to the resource is denied** 在根目录的pom.xml中找到:docker.hub.username设置成docker hub的用户名, 若还不能解决建议在maven的全局setting(Maven的安装目录/conf/settings.xml)中设置用户名和密码, 如下图: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/214227_4dec0dd8_351732.png "165654.png") 在项目的pom.xml中增加plug: ``` com.spotify docker-maven-plugin docker-hub ``` 再执行: `mvn clean package docker:build -DpushImage` 3. **windows 10中运行docker** 请参考:[适用于 Linux 的 Windows 子系统安装指南 (Windows 10)](http://docs.microsoft.com/zh-cn/windows/wsl/install-win10) ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/212354_f162ded7_351732.png "屏幕截图 2021-04-17 203559.png") 4. **docker使用** 找到推上来的Image ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/212625_d567ed6e_351732.png "165655.png") 点击Run按钮,弹出窗口 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/212801_c1592a88_351732.png "165656.png") 点击Run按钮 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/213002_8c44794e_351732.png "165657.png") 第一个按钮: 在浏览器中打开地址, 第二个按钮: 打开命令行终端, 第三个按钮: 停止运行, 第四个按钮: 重启, 最五个按钮: 删除App; 点击App的空白打开App控制台 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0418/213507_56403ddb_351732.png "165658.png") 5. **关于SpringProfile文件(application-docker.yml)的说明** 各个模块中的配置文件(application.yml)默认使用同一个ip:10.0.0.5(看下图); 即然是分布式应用在实际中是不可能这样的, 一个子服务可能有多个实例, 每个子服务实例可能有自已的一个ip(可能是内网) ![输入图片说明](https://images.gitee.com/uploads/images/2021/0420/112028_45b4c03f_351732.png "1.png") 从(linux ifconfig)命令可以看到docker与宿主主机是通过192.168.0.1来联系的, docker中运行的app通过192.168.0.1可以访问宿主主机中mysql,redis,rabbitMQ. 而docker中运行的app使用独立的ip(172.17.0.x) ![输入图片说明](https://images.gitee.com/uploads/images/2021/0420/113046_542d5337_351732.png "屏幕截图 2021-04-20 113034.png") 6. **关于docker-compose.yml的说明** 项目连接外部的Mysql,Redis,RabbitMQ, `troll_default.env`文件里有些配置信息, docker-compose运行时需要把文件路径切换到项目的根,输入以下命令: ``` docker-compose --env-file troll_default.env up -d ``` ***注意:*** 1. 由于config在docker中布署时无法使用guest,所以需要创建一个RabbitMQ帐号,`troll_default.env`文件中的`RABBIT_USER`表示创建的帐号名, `RABBIT_PASS`表示创建帐号的登录密码 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0428/222610_2b781c2b_351732.png "222545.png") 2. docker-compose.yml中目前缺少build配置,所以运行docker-compose前需要先把相关Service(docker-compose中的services项)推送到docker中, 也表示可以通过`docker images`命令可以查看到这些镜像 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0428/135701_417afe09_351732.png "135642.png") troll-app 是`jforum2-device`打包在nginx中的镜像,可以通过它来测试Nest服务是否完全可用. ![输入图片说明](https://images.gitee.com/uploads/images/2021/0428/140005_a8965a42_351732.png "135943.png")