SpringCloud天机学堂环境搭建(二)

SpringCloud天机学堂环境搭建(二)


1、企业开发模式

在企业开发中,微服务项目非常庞大,往往有十几个,甚至数十个,数百个微服务。而这些微服务也会交给不同的开发组去完成开发。你可能只参与其中的某几个微服务开发,那么问题来了:

如果我的微服务需要访问其它微服务怎么办?

难道说我需要把所有的微服务都部署到自己的电脑吗?

很明显,这样做是不现实的。第一,不是所有的代码你都有访问的权限;第二,你的电脑可能无法运行这数十、数百的微服务。

因此,企业往往会提供一个通用的公共开发、测试环境,在其中部署很多公共服务,以及其它团队开发好的、开发中的微服务。

而我们大多数情况下只在本地运行正在开发的微服务,此时我们就需要一些其它的测试手段:

  • 单元测试:测试最小的可测试单元
  • 集成测试:验证某些功能接口,是否能与其它微服务正确交互
  • 组件测试:验证微服务组件
  • 端对端联调:验证整个系统

单元测试

单元测试一般是在项目的test目录下自己编写的测试,可以针对具体到每一个方法的测试。

集成测试

接口开发完成后,可能需要调用其它微服务接口,此时可以调用开发环境中的其它微服务,测试接口功能是否正常工作。

组件测试

将自己团队开发的微服务部署到开发环境,作为一个微服务组件,与开发环境中的其它微服务联调,测试整个微服务是否正常工作。

端对端测试

在测试环境部署前端、后端微服务群,直接进行前后端的联调测试。

当然,实际中我们可以把集成测试与组件测试合并,开发完成后直接与开发环境的其它微服务联调,测试服务工作状态。

img

在天机学堂中,我们也给大家模拟了这样的一个开发环境,其中部署了各种公共服务,而我们只需要在本地开发未完成的几个服务即可:

img

2、导入虚拟机

为了模拟企业中的开发环境,我们利用虚拟机搭建了一套开发环境,其中部署了开发常用的组件:

  • Git私服(gogs):代码全部提交带了自己的Git私服,模拟企业开发的代码管理,大家也需要自行到私服拉取代码
  • jenkins:持续集成,目前已经添加了所有部署脚本和Git钩子,代码推送会自动编译,可以根据需求手动部署
  • nacos:服务注册中心、统一配置管理,大多数共享的配置都已经交给nacos处理
  • seata:分布式事务管理
  • xxl-job:分布式任务系统
  • elasticsearch:索引库
  • redis:缓存库
  • mysql:数据库
  • kibana:es控制台

如图:

img

导入方式有两种:

  • 方式一:下载完整虚拟机并导入,参考文档《虚拟机导入说明》
  • 方式二:下载基础DockerCompose文件,及基础数据,利用脚本一键部署。参考文档《自定义部署》

注意:导入虚拟机后所有软件即可使用,无需重复安装,VMware一定要按照文档中设置IP,不要私自修改。一定要关闭windows防火墙。

3、配置本机hosts

为了模拟使用域名访问,我们需要在本地配置hosts:

192.168.150.101 git.tianji.com
192.168.150.101 jenkins.tianji.com
192.168.150.101 mq.tianji.com
192.168.150.101 nacos.tianji.com
192.168.150.101 xxljob.tianji.com
192.168.150.101 es.tianji.com
192.168.150.101 api.tianji.com
192.168.150.101 www.tianji.com
192.168.150.101 manage.tianji.com
192.168.150.101 cpolar.tianji.com

当我们访问上述域名时,请求实际是发送到了虚拟机,而虚拟机中的Nginx会对这些域名做反向代理,这样我们就能请求到对应的组件了:

img

在浏览器中输入对应域名,即可查看到对应服务,例如Git私服地址:http://git.tianji.com

img

每个域名对应的服务列表如下:

名称域名账号端口
Jenkins持续集成jenkins.tianji.comroot/12318080
RabbitMQmq.tianji.comtjxt/12332115672
Nacos控制台nacos.tianji.comnacos/nacos8848
xxl-job控制台xxljob.tianji.comadmin/1234568880
ES的Kibana控制台es.tianji.com-5601
微服务网关api.tianji.com-10010
用户端入口www.tianji.com-18081
Git私服git.tianji.comtjxt/12332110880
管理端入口manage.tianji.com-18082
redis123321
mysqlroot/123

同样,我们访问用户端或者管理端页面时,也会被Nginx反向代理:

img

当我们访问www.tianji.com时,请求会被代理到虚拟机中的 /usr/local/src/tj-portal目录中的静态资源

当页面访问api.tianji.com时,请求会被代理到虚拟机中的网关服务。

4、虚拟机部署

项目已经基于Jenkins实现了持续集成,每当我们push代码时,就会触发项目完成自动编译和打包。

我们可以在Git仓库模拟代码push操作:

  • 首先,访问http://git.tianji.com(tjxt/123321),找到tianji这个仓库,点击仓库设置按钮:

img

  • 然后,点击《管理Web钩子》菜单,进入页面后点击钩子后面的修改按钮:

img

进入页面后,向下滚动,点击测试推送按钮:

img

然后回到jenkins页面,会发现已经触发了tjxt-dev-build的自动编译。如果没有的嘛,手动点击tjxt-dev-build进行编译。

需要运行某个微服务时,我们只需要经过两步:

  • 第一步,访问jenkins控制台:http://jenkins.tianji.com (账号:root/123)
  • 第二步,选一个尚未构建的微服务,点击对应微服务后面的运行按钮

img

构建过程中,可以在页面左侧看到构建进度,如果没有说明构建已经结束了(你的机器速度太快了!):

img

完成后,点击对应的微服务名称【例如tj-gateway】,即可进入构建任务的详情页面,在页面左侧可以看到构建历史:

img

其中#1代表第一次构建,点击前面的√即可查看构建日志:

img

看到上面的日志,说明构建已经成功,容器也成功运行了。

我们需要分别启动几个开发完成的微服务:

  • tj-user
  • tj-auth
  • tj-gateway
  • tj-course
  • tj-media
  • tj-search
  • tj-exam
  • tj-data

此时访问Nacos控制台,可以看到微服务都成功注册了:

img

此时访问 http://www.tianji.com (jack/123 rose/123456)即可看到用户端页面:

img

此时访问 http://manage.tianji.com 即可看到管理端页面:

img

如果想要知道微服务具备哪些API接口,可以访问网关中的swagger页面,路径如下:

http://api.tianji.com/doc.html

img

其中可以查看所有微服务的接口信息

5、本地部署

对于需要开发功能的微服务,则需要在本地部署,不过首先我们要把代码拉取下来。

查看Git私服的代码:http://git.tianji.com/tjxt/tianji :

img

利用命令将代码克隆到你的IDEA工作空间中:

git clone http://192.168.150.101:10880/tjxt/tianji.git -b lesson-init

img

注意,开发时需要使用dev分支,因此我们需要创建新的分支:

# 进入项目目录
cd tianji
# 创建新的分支
git checkout -b dev

为了方便我们教学,目前所有微服务代码都聚合在了一个Project中,如图:

img

在默认情况下,微服务启用的是dev配置,如果要在本地运行,需要设置profile为local:

img

可以在本地启动ExamApplication,然后我们去Nacos控制台查看exam-service,可以看到有两个实例,分别是虚拟机IP和宿主机IP:

img

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林学习编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值