从零开始学GeoServer源码十四(GeoServer Cloud微服务版本初体验)

目录

  • 快速导航
  • 前言
  • 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的集群(基于nginxJMS)本质上还是单体架构的集群,无法根据并发量进行自适应,因此我们就引出了GeoServer的微服务版本------------GeoServer Cloud
  之前就有很多同学问我有没有微服务的版本,其实我也一直想将单体架构的GeoServer改成微服务版本的,也是在无意中看到这个GeoServer Cloud项目,实在太棒了,这就是我想要的。想想也是,既然我们能想得到,那OSGeo的那帮大佬们肯定也能想得到,那么话不多说,咱们直接开整。

1.GeoServer Cloud 介绍

  GeoServer CloudGitHub的一个开源项目,项目地址为https://github.com/geoserver/geoserver-cloud。我们首先把GeoServer Cloud的架构图放上来。
在这里插入图片描述
  从架构图中我们就能看出来,这是标准的微服务架构,WMS、WMTS、WFS、GWC、WebUI等等功能都被分离出来了,每个都是一个独立的应用,还有独立的网关、服务发现、日志、配置、外部数据源、缓存等等。那么我们就产生了两个疑问:

1.GeoServer Cloud是一个独立的项目吗?
答:不是,OSGeo官方说GeoServer CloudGeoServer的兄弟项目,和GeoServer是有关联的

2.GeoServer Cloud的功能和GeoServer比起来咋样?还一样吗?
答:两者几乎一摸一样,我们可以看下GeoServer Cloud跑起来后的界面
在这里插入图片描述

2.环境准备

  首先我们要声明一下,GeoServer Cloud项目是需要运行在Docker里的,因此需要DockerDocker-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。注意不要混淆DockerDocker Desktop。如果是低版本的Docker Desktop,那就需要自己手动安装Docker-Compose了。
  确认DockerDocker-Compose的版本。

win11默认没有HyperV,装上了Docker以后启动时一直卡在启动界面转圈,需要自己手动装上HyperV,再启动Docker就可以了。注意配置Docker的国内镜像源,要不然很慢。

在这里插入图片描述

  JDK21IDEA2022以及破解方法,百度网盘自取

链接: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很快定位了问题,希望各位同学一定要学会使用新技术来增加自己的效率,回见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619374.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点亮一颗 LED: 单片机 ch32v003 (RISC-V) 使用 rust 编写固件

首发日期 2024-04-09, 以下为原文内容: 使用 rust 编写单片机的程序 ? 很新, 但没问题. 使用 RISC-V CPU 的单片机 (比如 ch32v003) ? 也没问题. 同时使用 ? 哦嚯, 问题出现了 !! ch32v003 是一款使用 rv32ec 指令集的国产单片机, 很便宜 (某宝零卖只要 0.4 元一个, 在同档…

深入解析Tomcat的工作流程

tomcat解析 Tomcat是一个广泛使用的开源Servlet容器,用于托管Java Web应用程序。理解Tomcat的工作流程对于开发人员和系统管理员来说是非常重要的。本文将深入探讨Tomcat的工作原理,包括请求处理、线程池管理、类加载、以及与Web服务器之间的通信。 ###…

地球上的七大洲介绍

地球上的七大洲示意图: 1. 亚洲(Asia):世界上最大的洲,面积约为44579000平方公里。亚洲地域辽阔,包括从北极圈到赤道的各种气候和地形。它拥有世界上最多的人口,也是世界上一些最古老文明的发源…

解决 Docker 容器服务连接不上 Redis 服务问题

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

基于深度学习的花卉检测系统(含PyQt界面)

基于深度学习的花卉检测系统(含PyQt界面) 前言一、数据集1.1 数据集介绍1.2 数据预处理 二、模型搭建三、训练与测试3.1 模型训练3.2 模型测试 四、PyQt界面实现参考资料 前言 本项目是基于swin_transformer深度学习网络模型的花卉检测系统,…

简历上写熟悉Linux下常用命令?直接寄

大家写简历技术栈时,都觉得越多越好,其中一条,熟悉Linux下常用命令?其实开发中Linux不是必备考点,除了运维,真正用的多的仅仅cd ls mkdir等,但当面试官问到上面命令时,是不是就傻眼了…

Linux三剑客-sed、awk、egrep(上)

一、知识梗概 二、正则表达式 定义:正则表达式是一种强大的文本处理工具,用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成,可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。 简单来…

【Docker】docker原理及使用-1

Docker目录 1️⃣概念2️⃣使用容器的好处2️⃣docker和普通软件启动方式的区别2️⃣docker和传统虚拟机的区别 1️⃣下载安装2️⃣安装步骤 1️⃣必须要掌握的核心概念1️⃣命令2️⃣例子2️⃣练习题目2️⃣进入一下python环境(简洁) 1️⃣解释一下 redis1️⃣docker底层隔离机…

C语言 | Leetcode C语言题解之第30题串联所有单词的子串

题目: 题解: typedef struct {char key[32];int val;UT_hash_handle hh; } HashItem;int* findSubstring(char * s, char ** words, int wordsSize, int* returnSize){ int m wordsSize, n strlen(words[0]), ls strlen(s);int *res (int *)mall…

卫星影像联合无人机实现农业保险全生命周期监管监测

随着科技的进步,农业保险监管系统的发展日新月异。特别是近年来,随着卫星技术与无人机技术的结合,为农业保险监管系统带来了前所未有的革新。本文将深入探讨如何利用卫星与无人机方案构建高效的农业保险监管系统,并结合实例进行说…

机器学习-09-图像处理01-理论

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像处理技术。 参考 02图像知识 色彩基础知识整理-色相、饱和度、明度、色调 图像特征提取(VGG和Resnet特征提取卷积过程详解) Python图像处理入门 【人工智能】PythonOpenCV…

嵌入式MCU BootLoader开发配置详细笔记教程

目录 一、BootLoader基础 二、BootLoader原理及配置 三、BootLoader程序 bootloader.h bootloader.c 四、Application1 用户程序 application1.h application1.c 五、Application2 用户程序 application2.h 六、程序运行效果 七、工程文件Demo 一、BootLoader基础 …