40 图|硬核解析用 Mac M1 玩转 SpringCloud
我的开源 Spring Cloud 项目 PassJava
一直可以在 Windows 上正常运行,最近不是换 Mac M1
了么,想把这个项目在 M1 上跑起来,毕竟我的那台 Windows 用起来发烫,是该体验下 M1 的性能了。
因为 M1
的兼容性不好,所以在从 0 开始跑这个项目的遇到了很多问题,比如 MySQL 工具经常打不开,前端 Vue 项目起不来,所以专门针对这些疑难杂症,我也做好了记录,相信对使用 M1 的同学有帮助。
我把后端、前端、小程序都上传到同一个仓库里面了,大家可以通过 github
或 码云
访问。地址如下:
Github: https://github.com/Jackson0714/PassJava-Platform
码云:https://gitee.com/jayh2018/PassJava-Platform
配套教程:www.passjava.cn
整体的架构图如下图所示:
本文主要内容如下:
一、配置 Nacos
Nacos 作为配置中心和注册中心,是必须要启动的。
1.1 下载地址
Nacos 下载地址:
最新版是 2.0.0-bugfix,我下载后,启动成功了,但是无法访问 Nacos 后台,怀疑是本地环境有问题,所以换了一个低版本的 1.4.1,可以正常工作。另外我之前在 windows 机器上使用的 1.2.1 的版本,拷贝到 Mac 上也能正常运行。
1.2 启动 Nacos
进入 nacos 根目录,执行命令:
执行后的结果如下图所示:
看到 nacos is starting withi standalone 就表示启动成功。注意:启动成功不代表正常运行。
接下来访问 nacos 的后台管理系统:
账号和密码都是 nacos
。
1.3 添加命名空间
添加 7 个微服务的命名空间:
新建命名空间时需要填写的字段:
1.4 添加 question 微服务配置
在配置列表添加几个微服务的配置,目前保证 question 微服务和 thirdparty 微服务有配置即可。
如下图所示,添加三个配置项:数据源,mybatis 配置,其他配置。详细的配置参数参照这篇来配置:《SpringCloud整合Nacos配置中心》
。
1.5 添加 thirdparty 微服务配置
主要是配置阿里云 OSS,用来保存图片的。配置如下图所示,key 需要大家到自己登陆到阿里云并申请 OSS 才能获取到。参照这篇《SpringCloud整合OSS对象存储》
。
二、初始化数据
创建数据库、表、初始化数据这些工作都需要做,下载一个 MySQL 客户端还是要方便点,然后找 Mac 上好用的客户端软件,下面是安装软件的艰辛历程。
1.1 安装 Mac 版 MySQL
首先需要安装 mac 版的 MySQL,下载地址:
选择第一个就可以了,官网已经提示该版本兼容 Mac M1
下载后点击安装,安装成功后,到系统偏好配置里面找到 MySQL,并单击打开。
可以看到运行的 MySQL 实例是 MySQL 8.0.23,且默认开机运行。
![]
2.2 安装 Mac 版图形化 MySQL 界面
2.2.1 Workbench 在 M1 上不能运行
我试过安装 workbench 后,不能运行。
2.2.2 Squel Pro 在 M1 上不能运行
安装 Squel Pro 后,切换数据库的时候程序崩溃。
2.2.3 Navicat
经过上面两个软件的崩溃后,我最后还是下载了试用版的 Navicat,可以免费用 14 天,对于初始化数据足够了。
下载地址:
下载 macOS 的最新版 15,它是兼容 M1 芯片的。
然后需要执行三个 SQL 文件,文件我已经上传到仓库上了,
依次执行上面的三个文件后,会生成 6 个数据库,一个系统数据库,五个业务数据库。
三、启动微服务
主要启动 4 个核心服务:网关微服务
、题目微服务
、第三方微服务
、系统管理微服务
。
架构图如下所示:
目前这几个微服务已经整合了 Nacos、OpenFeign、Gateway、统一异常处理、链路追踪,Redis 等。
启动都是基于 IDEA 开发工具直接启动的,所以需要下载 IDEA。
3.1 下载安装 IDEA
我安装的 IDEA 是旗舰版 2020.3 的,试用版 30 天。大家可以下载免费的社区版 Community,功能上也能满足。
性能非常快,我的 Windows 的配置:ThinkPad、 32 G 内存、1T 固态硬盘,启动一个微服务需要 10 秒以上。而 Mac 只需要 3 秒
。
官网下载地址:
3.2 启动系统管理服务
我们的后台框架是用的人人框架,主要的功能就是后台的登陆、系统管理功能、所以必须启动 renren-fast
服务才能使用后台管理。
大家可以启动 RenrenApplication 这个 Service,启动成功后,会提示以下信息:
renren-fast 服务暴露的端口是 8080,但是这个端口对前端是不可见的,前端 API 都是走网关的 8060 端口。将前端的请求转发到 renren-fast 的 8060 端口,比如登陆请求。注意:一定要初始化完数据才能启动成功。
3.3 启动网关
网关微服务没有什么特殊要求,我都配置好了,直接启动就好了。另外如果遇到端口被占用的情况,可以通过如下命令解决:
网关微服务暴露的端口是 8060,启动后如下图所示:
3.4 启动题目服务
题目服务是核心模块,很多实战案例都是基于这个模块进行讲解的。启动服务之前,需要配置数据库 MySQL 的连接。
3.4.1 配置数据库连接
另外我们也可以通过 nacos 来配置:
3.4.2 启动题目服务
IDEA 工具中直接启动就可以了,暴露的端口是 11000,启动后如下图所示:
3.4.3 测试题目服务
用 postman 测试网关+题目微服务是否正常工作:
由于我的数据库中是有数据的,所以会返回很多数据,大家后面可自行添加数据。
3.5 启动第三方服务
这个第三方不是指另外一方的服务,而是我把与第三方中间件交互的服务都归在这个服务里面了,比如对阿里云 OSS(对象存储) 的操作。
这个服务的名字叫做:passjava-thirdparty
。另外需要注意,OSS 需要大家到阿里云官网申请,有免费额度哦~配置方式可以参照这篇:《SpringCloud整合OSS对象存储》
启动成功后,如下图所示:
四、启动 Admin 后台
Admin 管理后台的技术选型还是用的 Vue,所以需要使用 npm 工具来安装依赖。
4.1 安装 npm、nvm
使用 homebrew 安装 npm
使用 homebrew 安装 nvm
4.2 切换镜像源
默认的 npm 使用的是官方的镜像源,我们切换为国内的淘宝镜像源。
4.3 安装 node_module
仓库里面并没有将依赖包一起上传,因为依赖包太大了,所以可在本地通过如下命令安装依赖包,这个是一次性的,后面不需要再执行。
进入到 passjava-platform/passjava-portal 目录,执行如下命令来安装依赖:
启动前端 portal
报错,提示 Node Sass 不兼容当前的系统:
根据网上提供的解决方案,要先卸载 Node Saas
但是又提示 chromedriver 安装失败(当前操作系统不兼容),根据网上的解决方案,单独安装,但依旧提示 64 位系统不兼容,于是我把 package.json 文件中的 "chromedriver": "2.27.2" 删掉了,问题迎刃而解!最新的代码已删除该依赖项配置。
先删除之前安装 node_modules
再次执行卸载 node-sass 的命令:
卸载成功后,安装 node-sass
重新安装依赖
4.4 启动后台
在根目录执行如下命令就可以启动后台了:
启动成功后,会自动打开浏览器,访问的地址是 http://localhost:8081
4.5 登陆后台
账号密码都是 admin,输入验证码即可登录。注意:如果验证码没有出现,说明 RenrenApplication 微服务有异常,请查看 IDEA 中打印出的 log。
登录后台界面如下图所示:
4.6 添加题目分类
首先需要给题目进行分类,在后台点击新增类型,如下图所示:
注意:上传图片前需要启动 thirdparty 微服务,且 OSS 配置正确。
4.7 添加面试题
五、其他
5.1 未适配的镜像
我的开源项目中要用 Elasticsearch 和 Kibana 需要运行在 docker 上,目前这些镜像在 M1 上还未适配。
5.2 前端小程序
小程序的开发和测试在这里也不演示了, M1 上开发小程序完全没问题~
5.3 未添加的中间件
因本篇只是出于核心功能的演示,所以还有些中间件未提及,比如配置 Redis、链路追踪等,这些功能不影响 M1 上使用 Spring Cloud,所以会放在后续的文章中做进一步说明。
下一篇实战 Redis 也安排上了,敬请期待。
作者简介:8 年互联网职场老兵|全栈工程师|90 后超级奶爸|开源践行者|公众号万粉原创号主。
蓝桥签约作者,著有《JVM 性能调优实战》专栏,手写了一套 7 万字 SpringCloud 实战总结和 3 万字分布式算法总结。欢迎关注我的公众号「悟空聊架构」,免费获取资料学习。
版权声明: 本文为 InfoQ 作者【悟空聊架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ab89fc2286180f6135750675】。未经作者许可,禁止转载。
评论