如何快速搭建微服务开发测试环境
一、背景
作为后端开发一名,在某天下午接到紧急任务,需要根据客户需求快速搭建一套微服务架构的开发测试环境,以供客户联调。但是我们是小公司资源有限,在个人电脑上部署又很难对外提供服务。
经过一番查找,市场上符合开箱即用条件的厂商不多,有一些还是需要公有云或私有云部署,能提供开箱即用的SaaS化服务的就更少了。
比如:华为云提供了软件开发平台DevCloud,腾讯云收购CODING后也推出了自己的研发管理平台,但是要使用这些大厂的服务,就要为他们的其他生态工具买单,在前期投入有限的情况下,只能放弃。
二、CODING
我们先来看一下CODING,功能很完善,从文档管理、项目协同到部署测试,但是部署资源却需要自己准备,官方只提供有效期为6个小时到示例集群。
三、华为云
华为云提供的软件开发平台DevCloud同样也有类似的功能,不过这类云服务运营商,通常只能将应用部署在自家云服务器上。
四、StarOS
最后在朋友的推荐下,发现有一个名叫StarOS的一站式云原生在线开发平台,正在进行公开试用,各项服务暂时免费,提供免运维的容器集群,开箱即用的研发设施,非常符合我的需求。
StarOS主要分为:应用工厂、应用商店、云端编码三大板块。
1. 应用工厂
应用工厂顾名思义就是应用生产、发布的地方。StarOS最大的特色就是使用了组件化、可视化、可拖拉拽的应用编排模式,使得整个架构一目了然,非常清晰。
2. 应用商店
在应用商店里是平台内置的应用,可供用户快速发布自己想要的应用。
3. 云端编码
云端编码也就是在线IDE,可以在线编辑代码组件所引用的代码并推送。
五、搭建微服务架构图
为了方便其他人员维护,特次记录一下过程。
首先要做的准备工作:
- 确保在代码中使用环境变量来读取被调用服务地址,并上传至GitHub。
- 准备好nacos的docker镜像(nacos/nacos-server:latest)。
- 准备好mysql8的docker镜像(mysql:8)。
- 准备好mysql数据的初始化脚本,在mysql数据库发布后执行(https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql)。
1. 搭建mysql
首先新建一个mysql8的项目,使用镜像组件发布一个mysql应用,发布成功后使用nacos的sql脚本初始化数据库。
镜像组件的使用比较简单,只需架构图中拖入一个镜像组件,并在镜像地址栏中填写mysql8的docker镜像地址就好了。
如下图。
然后配置mysql8组件的参数,暴露网络服务端口号3306。
设置环境变量MYSQL_ROOT_PASSWORD为组件参数PASSWORD,组件参数是组件对外提供的可配置选项,参数的值将由用户在发布组件时录入,也可以通过组件间连线由其他组件的输出参数传入。
再设置mysql的存储路径用于数据持久化。
组件设置完成后保存架构图,点击发布按钮就可以发布mysql应用了。
在应用发布界面,mysql的访问地址和3306端口都会随机生成,当然也可以自行定义。
填写好参数PASSWORD的值和mysql数据持久化的数据卷就可以发布了。
发布成功后,就可以通过mysql的访问域名和端口进行连接了。
可以用navicat连接数据库,然后用nacos的sql脚本初始化mysql数据库。
为了让mysql数据库在其他项目中被使用,可在发布-运维监控
界面点击组件的更多设置
,打开允许项目外调用
的开关。
数据库准备好后,就可以搭建nacos了。
2. 搭建nacos
数据库搭建好后采用同样的方法,我们新建一个Spring Cloud项目,采取镜像组件搭建nacos应用,在配置组件时,暴露的端口号和环境变量设置可参考官方docker部署文件(https://github.com/nacos-group/nacos-docker/blob/master/example/standalone-mysql-8.yaml)。
搭建完nacos后,使用外部组件引入上一步搭建的mysql8数据库。
外部服务组件是指通过网络调用的外部服务所形成的组件。其可以引用其他项目中的组件,也可以使用IP或域名,引用系统外的组件。
组件设置完成后,使用连线将这两个组件连接起来。
注册配置中心nacos就搭建完成了。
3. 搭建spring boot admin
接下来使用代码组件搭建服务监控spring boot admin,代码组件是指用git等源码服务器地址进行编译构建的组件。
在架构图中拖入一个代码组件,并绑定GitHub账号,绑定完成后代码组件就可以拉取到该账号在GitHub到代码仓库了。
我的代码使用的是spring boot,所以在技术栈选项里选择SpringBoot@JDK8
就好了。
然后配置组件的网络服务端口,通过环境变量NACOS_HOST
引入nacos服务地址。
组件设置完成后,使用连线将组件admin和组件nacos连接起来。
4. 搭建服务producer
参照以上步骤,使用代码组件搭建服务producer。
根据实际代码配置组件的网络服务端口,通过环境变量NACOS_HOST
引入nacos服务地址。
组件设置完成后,使用连线将组件producer和组件nacos连接起来。
5. 搭建服务cosumers
参照以上步骤,使用代码组件搭建服务cosumers。
根据实际代码配置组件的网络服务端口,通过环境变量NACOS_HOST
引入nacos服务地址。
组件设置完成后,使用连线将组件cosumers和组件nacos连接起来。
6. 搭建服务网关gateway
参照以上步骤,使用代码组件搭建服务网关gateway。
根据实际代码配置组件的网络服务端口,通过环境变量NACOS_HOST
引入nacos服务地址。
组件设置完成后,使用连线将组件gateway和组件nacos连接起来。
到这一步,一个spring cloud微服务架构的基础框架就搭建完成了。
架构图搭建完毕后,就可以发布应用看看效果了。
7. 发布
在发布界面,系统会自动生成各个服务的随机域名和端口,当然也可以自定义域名和端口,要注意的是自定义域名和端口时不能重复,否则发布会失败。
发布成功后可通过相应的域名来访问服务。
按照以上步骤,就可以在StarOS上快速搭建一个微服务开发测试环境,真的是一键达成,非常方便。
后续我会继续完善这个微服务架构,预计后面会加入链路追踪、消息队列等。