目录
- 快速导航
- 前言
- 1.GeoServer Cloud 介绍
- 2.环境准备
- 3.Win10 Win11安装Docker、JDK、IDEA
- 4.安装GeoServer Cloud
- 4.1 获取docker-compose.yml
- 4.2 拉取镜像
- 4.3 启动
- 4.4 访问
- 5.注意事项
- 5.1 JDK冲突问题
- 5.2 GeoServer Cloud Config 版本问题
- 5.3 GeoServer Cloud WebUI 404问题
- 6.总结
快速导航
从零开始学GeoServer源码一(开篇)
从零开始学GeoServer源码二(搭建开发环境)
从零开始学GeoServer源码三(断点应该打在哪?)
从零开始学GeoServer源码四(自定义插件或拓展数据源)
从零开始学GeoServer源码五(切片原理及自定义插件支持wms、wmts、tms)
从零开始学GeoServer源码六(如何打包发布?)
从零开始学GeoServer源码七(如何注册服务并发布3dtiles和cesium的地形terrain?)
从零开始学GeoServer源码八(内存溢出?Out of Memory Error ?)
从零开始学GeoServer源码九(如何集成Cesium以实现预览3dtiles和terrain服务?)
从零开始学GeoServer源码十(如何修改菜单项以整合我们的功能?)
从零开始学GeoServer源码十一(如何解决No Multipart-config for Servlet错误)
从零开始学GeoServer源码十二(GeoServer中的切片规则)
从零开始学GeoServer源码十三(GeoServer生成的矢量切片缺失问题)
从零开始学GeoServer源码十四(GeoServer Cloud微服务版本初体验)
前言
在之前的十三篇博文中,我们已经系统的学习了GeoServer
的一系列知识,包括环境搭建、断点查找、原理解释、数据源拓展、Cesium
集成、打包发布等等。但是我们还有一个重要的知识点还未涉及,那就是GeoServer
的集群。传统GeoServer
的集群(基于nginx
或JMS
)本质上还是单体架构的集群,无法根据并发量进行自适应,因此我们就引出了GeoServer
的微服务版本------------GeoServer Cloud
。
之前就有很多同学问我有没有微服务的版本,其实我也一直想将单体架构的GeoServer
改成微服务版本的,也是在无意中看到这个GeoServer Cloud
项目,实在太棒了,这就是我想要的。想想也是,既然我们能想得到,那OSGeo
的那帮大佬们肯定也能想得到,那么话不多说,咱们直接开整。
1.GeoServer Cloud 介绍
GeoServer Cloud
是GitHub
的一个开源项目,项目地址为https://github.com/geoserver/geoserver-cloud
。我们首先把GeoServer Cloud
的架构图放上来。
从架构图中我们就能看出来,这是标准的微服务架构,WMS、WMTS、WFS、GWC、WebUI
等等功能都被分离出来了,每个都是一个独立的应用,还有独立的网关、服务发现、日志、配置、外部数据源、缓存等等。那么我们就产生了两个疑问:
1.GeoServer Cloud
是一个独立的项目吗?
答:不是,OSGeo
官方说GeoServer Cloud
是GeoServer
的兄弟项目,和GeoServer
是有关联的
2.GeoServer Cloud
的功能和GeoServer
比起来咋样?还一样吗?
答:两者几乎一摸一样,我们可以看下GeoServer Cloud
跑起来后的界面
2.环境准备
首先我们要声明一下,GeoServer Cloud
项目是需要运行在Docker
里的,因此需要Docker
和Docker-Compose
的环境。又因为我们后面要对源码进行修改,因此我们在此将JDK
的版本和Maven
的版本以及IDEA
的版本一并列出。
1.JDK ≥ 21
2.IDEA ≥ 2022
3.Docker ≥ 19.03.3
4.Docker-Compose ≥ 1.26.2
3.Win10 Win11安装Docker、JDK、IDEA
直接在Docker
官网https://www.docker.com/products/docker-desktop/
下载最新版本的Docker Desktop
,我下载的是Docker Desktop4.28.0
,其中包含的Docker
的版本是25.0.3,Docker-Compose
的版本是2.24.6。注意不要混淆Docker
和Docker Desktop
。如果是低版本的Docker Desktop
,那就需要自己手动安装Docker-Compose
了。
确认Docker
和Docker-Compose
的版本。
win11默认没有HyperV,装上了Docker以后启动时一直卡在启动界面转圈,需要自己手动装上HyperV,再启动Docker就可以了。注意配置Docker的国内镜像源,要不然很慢。
JDK21
和IDEA2022
以及破解方法,百度网盘自取
链接:https://pan.baidu.com/s/1f_72hQ9sIH-vPf1mf8gLjw
提取码:3ztx
4.安装GeoServer Cloud
参照官方文档https://geoserver.org/geoserver-cloud/
中的Quick Start
部分。第一步我们需要通过wget
命令获取到任意一个docker-compose.yml
。
4.1 获取docker-compose.yml
如果电脑没有wget
工具,那就直接在浏览器访问一下后面链接,新建一个docker-compose.yml
将内容复制进去即可。
4.2 拉取镜像
cmd
进入到docker-compose.yml
所在的路径,输入以下命令开始拉取
docker-compose pull
4.3 启动
还是cmd
进入到docker-compose.yml
所在的路径,输入以下命令启动
docker-compose --compatibility up -d
4.4 访问
如果一切顺利的话,那么访问以下两个地址即可:
Eureka
服务注册页面:http://localhost:8761/
GeoServer Cloud WebUI
界面:http://localhost:8090/web
5.注意事项
5.1 JDK冲突问题
如果你的Eureka
服务注册页面正常,GeoServer Cloud WebUI
界面报错java.lang.IllegalStateException: Could not locate PropertySource and the fail fast property is set, failing: None of labels [] found
,检查你的JDK
的环境变量JAVA_HOME
配置的对不对,有可能还用的1.8的路径。
5.2 GeoServer Cloud Config 版本问题
注意docker-compose.yml
中配置的版本,这个坑很隐蔽,我在这里卡了半天,最后还是问了ChatGPT
才知道的,按理说一个开源项目不应该出现这种低级错误。注意看,这里config
指向的版本是1.7.1
而当我们去访问一下这个地址https://github.com/geoserver/geoserver-cloud-config.git
,切换到tag
发现只有1.7.0,因此我们需要将docker-compose.yml
中的所有1.7.1全部替换为1.7.0。而这个错误会导致和5.2节一样的错误。
5.3 GeoServer Cloud WebUI 404问题
如果你的Eureka
服务注册页面正常,GeoServer Cloud WebUI
界面报错404,那你就需要打开之前下载的docker-compose.yml
,看看gateway
的配置
注意这个GEOSERVER_BASE_PATH
,如果没有这个选项,那么GeoServer Cloud WebUI
的访问路径就是http://localhost:8090/web
,但是现在新版本加了这个选项,那么现在访问地址就变为了http://localhost:8090/geoserver/cloud/web
6.总结
本期是我们GeoServer Cloud
项目的第一次体验,并没有涉及代码修改,后面会逐渐开始更新,鉴于国内很多人没有试过这个版本,相关的博文也比较少,所以一定会遇到很多问题,因此一定要耐心,遇到问题要善于搜索和思考,如果找不到答案,也可以问问ChatGPT
,作者在踩坑的过程中也是使用了ChatGPT
很快定位了问题,希望各位同学一定要学会使用新技术来增加自己的效率,回见~