第三章:核心服务详解
3.1 引言
GeoServer Cloud 采用微服务架构,将传统 GeoServer 的各项功能拆分为独立的服务组件。每个服务专注于特定的业务能力,可以独立部署、扩展和管理。本章将深入介绍 GeoServer Cloud 的各个核心服务组件,包括它们的功能、配置选项和使用方法。
理解这些服务组件是有效使用和管理 GeoServer Cloud 的基础。无论您是系统管理员、GIS 开发人员还是解决方案架构师,本章的内容都将帮助您更好地理解系统的工作原理,从而做出更好的配置和架构决策。
3.2 服务概览
3.2.1 服务分类
GeoServer Cloud 的服务可以分为三大类:
基础设施服务(Infrastructure Services)
提供微服务架构所需的基础能力:
- Discovery(服务发现)
- Config(配置管理)
- Gateway(API 网关)
- 消息总线(RabbitMQ/Kafka)
业务服务(Business Services)
实现 GeoServer 核心功能的 OGC 标准服务:
- WMS(Web Map Service)
- WFS(Web Feature Service)
- WCS(Web Coverage Service)
- WPS(Web Processing Service)
- GWC(GeoWebCache)
管理服务(Management Services)
提供配置和管理功能:
- REST API(RESTful 配置接口)
- WebUI(Web 管理界面)
- ACL(访问控制列表)
3.2.2 服务依赖关系
服务之间的依赖关系如下图所示:
┌─────────────────────────────────────┐
│ 客户端请求 │
└──────────────────┬──────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ Gateway (API 网关) │
│ - 请求路由 │
│ - 负载均衡 │
│ - 认证/授权 │
└──────────────────────────────────────────────────────────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ WMS │ │ WFS │ │ WebUI │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└───────────────────────────┼───────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Discovery (服务发现) │
│ Config (配置服务) │
│ Event Bus (消息总线) │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Catalog Backend (目录后端) │
│ PostgreSQL / DataDir │
└─────────────────────────────────────┘
3.2.3 服务端口分配
默认端口分配(开发模式下的本地端口):
| 服务 | 容器内端口 | 本地开发端口 | 用途 |
|---|---|---|---|
| Gateway | 8080 | 9090 | API 网关入口 |
| Discovery | 8761 | 8761 | Eureka Dashboard |
| Config | 8888 | 8888 | 配置服务 |
| WMS | 8080 | 9102 | 地图服务 |
| WFS | 8080 | 9101 | 要素服务 |
| WCS | 8080 | 9103 | 覆盖服务 |
| WPS | 8080 | 9104 | 处理服务 |
| REST | 8080 | 9105 | REST API |
| WebUI | 8080 | 9106 | Web 界面 |
| RabbitMQ | 5672/15672 | 5672/15672 | 消息队列 |
| PostgreSQL | 5432 | 5432 | 数据库 |
3.3 Gateway 网关服务
3.3.1 功能概述
Gateway 是 GeoServer Cloud 的统一入口点,基于 Spring Cloud Gateway 实现。它的主要职责包括:
- 请求路由:根据 URL 路径将请求转发到对应的后端服务
- 负载均衡:在多个服务实例之间分配请求
- 服务发现集成:自动发现和路由到可用的服务实例
- 请求/响应处理:添加请求头、修改响应等
- 安全控制:集中式的认证和授权(可选)
3.3.2 路由配置
Gateway 的路由配置定义了 URL 路径与后端服务的映射关系。默认配置示例:
spring:
cloud:
gateway:
routes:
# WMS 路由
- id: wms-service
uri: lb://wms-service
predicates:
- Path=/geoserver/cloud/wms/**,/geoserver/cloud/ows**
filters:
- StripPrefix=2
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 100
redis-rate-limiter.burstCapacity: 200
# WFS 路由
- id: wfs-service
uri: lb://wfs-service
predicates:
- Path=/geoserver/cloud/wfs/**
filters:
- StripPrefix=2
# WebUI 路由
- id: webui-service
uri: lb://webui-service
predicates:
- Path=/geoserver/cloud/web/**,/geoserver/cloud/j_spring_security/**
filters:
- StripPrefix=2
# REST API 路由
- id: rest-service
uri: lb://restconfig-v1
predicates:
- Path=/geoserver/cloud/rest/**
filters:
- StripPrefix=2
3.3.3 负载均衡策略
Gateway 默认使用 Round Robin(轮询)负载均衡策略。可以通过配置修改:
spring:
cloud:
loadbalancer:
ribbon:
enabled: false # 使用 Spring Cloud LoadBalancer
gateway:
loadbalancer:
use404: true # 无可用实例时返回 404
支持的负载均衡策略:
- Round Robin:默认,按顺序轮询
- Random:随机选择实例
- Weighted:按权重分配
3.3.4 超时配置
配置请求超时以避免长时间等待:
spring:
cloud:
gateway:
httpclient:
connect-timeout: 10000 # 连接超时(毫秒)
response-timeout: 60000 # 响应超时(毫秒)
routes:
- id: wms-service
metadata:
response-timeout: 120000 # WMS 可能需要更长时间
3.3.5 跨域配置(CORS)
如果前端应用需要跨域访问:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins:
- "https://example.com"
- "http://localhost:3000"
allowedMethods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
allowedHeaders: "*"
exposedHeaders:
- "Content-Type"
- "Content-Length"
maxAge: 3600
3.3.6 日志和监控
启用详细的请求日志:
logging:
level:
org.springframework.cloud.gateway: DEBUG
reactor.netty.http.client: DEBUG
management:
endpoints:
web:
exposure:
include: gateway,health,info
查看路由信息:
# 获取所有路由
curl http://localhost:9090/actuator/gateway/routes
# 刷新路由
curl -X POST http://localhost:9090/actuator/gateway/refresh
3.4 Discovery 服务发现
3.4.1 功能概述
Discovery 服务基于 Netflix Eureka 实现,提供服务注册与发现功能:
- 服务注册:各服务启动时向 Discovery 注册自己的地址
- 服务发现:客户端从 Discovery 获取可用服务实例列表
- 健康检查:定期检查服务实例的健康状态
- 自我保护:在网络分区时避免错误地注销服务
3.4.2 Eureka Server 配置
Discovery 服务(Eureka Server)的主要配置:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false # Server 不需要注册自己
fetchRegistry: false # Server 不需要获取注册表
server:
# 自我保护模式
enableSelfPreservation: true
renewalPercentThreshold: 0.85
# 清理间隔
evictionIntervalTimerInMs: 60000
# 响应缓存
responseCacheUpdateIntervalMs: 30000
3.4.3 Eureka Client 配置
各服务作为 Eureka Client 的配置:
eureka:
client:
serviceUrl:
defaultZone: http://discovery:8761/eureka/
registryFetchIntervalSeconds: 30 # 获取注册表间隔
instance:
preferIpAddress: true # 使用 IP 而非主机名
leaseRenewalIntervalInSeconds: 10 # 心跳间隔
leaseExpirationDurationInSeconds: 30 # 过期时间
instanceId: ${spring.application.name}:${random.uuid}
3.4.4 Eureka Dashboard
访问 http://localhost:8761 查看 Eureka Dashboard:
Dashboard 显示的信息:
- System Status:系统状态、环境和数据中心信息
- Instances currently registered:已注册的服务实例列表
- General Info:服务注册表版本、更新时间等
- Instance Info:当前 Eureka Server 的信息
3.4.5 Kubernetes 部署注意事项
在 Kubernetes 环境中,通常不需要 Eureka,可以使用 Kubernetes 原生的服务发现:
spring:
profiles:
active: standalone # 启用 standalone 配置文件
# standalone 配置
eureka:
client:
enabled: false # 禁用 Eureka
使用 Kubernetes Service 进行服务发现:
apiVersion: v1
kind: Service
metadata:
name: wms-service
spec:
selector:
app: wms
ports:
- port: 8080
targetPort: 8080
3.5 Config 配置服务
3.5.1 功能概述
Config 服务基于 Spring Cloud Config 实现,提供集中式配置管理:
- 配置集中化:所有服务的配置存储在一个地方
- 环境隔离:支持不同环境(dev、test、prod)的配置
- 动态刷新:支持运行时刷新配置
- 加密支持:敏感配置可以加密存储
3.5.2 配置存储后端
Config 服务支持多种配置存储方式:
Git 仓库(推荐)
spring:
cloud:
config:
server:
git:
uri: https://github.com/geoserver/geoserver-cloud-config
default-label: main
clone-on-start: true
force-pull: true
本地文件系统
spring:
profiles:
active: native
cloud:
config:
server:
native:
search-locations: file:///opt/config/
Vault(敏感配置)
spring:
cloud:
config:
server:
vault:
host: vault.example.com
port: 8200
token: ${VAULT_TOKEN}
3.5.3 配置文件命名规范
配置文件按照以下命名规范组织:
{application}-{profile}.yml
例如:
application.yml:所有服务共享的配置wms-service.yml:WMS 服务的配置wms-service-docker.yml:WMS 服务在 Docker 环境的配置wms-service-kubernetes.yml:WMS 服务在 K8s 环境的配置
3.5.4 配置优先级
配置按以下优先级(从高到低)加载:
- 命令行参数
- 环境变量
- Config Server 的
{application}-{profile}.yml - Config Server 的
{application}.yml - Config Server 的
application-{profile}.yml - Config Server 的
application.yml - 本地
application.yml
3.5.5 配置刷新
支持运行时刷新配置(无需重启服务):
刷新单个服务实例
curl -X POST http://localhost:9101/actuator/refresh
刷新所有服务实例(通过 Bus)
curl -X POST http://localhost:8888/actuator/bus-refresh
配置自动刷新
使用 Spring Cloud Bus 实现配置变更自动推送:
spring:
cloud:
bus:
enabled: true
refresh:
enabled: true
rabbitmq:
host: rabbitmq
port: 5672
3.5.6 Kubernetes 部署替代方案
在 Kubernetes 中,通常使用 ConfigMap 和 Secret 替代 Config Server:
apiVersion: v1
kind: ConfigMap
metadata:
name: geoserver-config
data:
application.yml: |
geoserver:
backend:
pgconfig:
enabled: true
host: postgresql
database: geoserver
挂载到容器:
spec:
containers:
- name: wms
volumeMounts:
- name: config
mountPath: /etc/geoserver
volumes:
- name: config
configMap:
name: geoserver-config
3.6 WMS(Web Map Service)
3.6.1 功能概述
WMS 服务提供标准的 OGC Web 地图服务,支持:
- GetCapabilities:返回服务能力描述文档
- GetMap:返回指定区域的地图图像
- GetFeatureInfo:返回指定位置的要素信息
- GetLegendGraphic:返回图例图形
支持的 WMS 版本:1.1.1、1.3.0
3.6.2 请求示例
GetCapabilities
GET /geoserver/cloud/wms?
service=WMS&
version=1.3.0&
request=GetCapabilities
GetMap
GET /geoserver/cloud/wms?
service=WMS&
version=1.3.0&
request=GetMap&
layers=ne:countries&
styles=&
crs=EPSG:4326&
bbox=-180,-90,180,90&
width=800&
height=400&
format=image/png
GetFeatureInfo
GET /geoserver/cloud/wms?
service=WMS&
version=1.3.0&
request=GetFeatureInfo&
layers=ne:countries&
query_layers=ne:countries&
crs=EPSG:4326&
bbox=-180,-90,180,90&
width=800&
height=400&
i=400&
j=200&
info_format=application/json
3.6.3 配置选项
WMS 服务的主要配置项:
geoserver:
wms:
# 输出格式
svg:
enabled: true
antialias: true
# 缓存配置
getmap:
max-buffer: 50
max-rendering-time: 60
# 最大请求限制
max-request-memory: 67108864 # 64MB
3.6.4 性能调优
渲染性能优化
geoserver:
wms:
# 并行渲染
rendering:
pool-size: 4
# 标注缓存
label-cache:
enabled: true
size: 10000
内存配置
# JVM 参数
JAVA_OPTS: >
-Xms1g -Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
3.6.5 扩展能力
WMS 服务支持的主要扩展:
| 扩展 | 功能 |
|---|---|
| Vector Tiles | 输出 MVT/GeoJSON 矢量瓦片 |
| CSS Styling | CSS 样式支持 |
| MBStyle | MapBox 样式支持 |
| Rendering Transforms | 渲染转换 |
3.7 WFS(Web Feature Service)
3.7.1 功能概述
WFS 服务提供标准的 OGC Web 要素服务,支持:
- GetCapabilities:返回服务能力描述
- DescribeFeatureType:返回要素类型的 Schema
- GetFeature:查询并返回要素数据
- Transaction(WFS-T):插入、更新、删除要素
- LockFeature:锁定要素以进行编辑
- GetPropertyValue:获取属性值
支持的 WFS 版本:1.0.0、1.1.0、2.0.0
3.7.2 请求示例
GetCapabilities
GET /geoserver/cloud/wfs?
service=WFS&
version=2.0.0&
request=GetCapabilities
GetFeature(基本查询)
GET /geoserver/cloud/wfs?
service=WFS&
version=2.0.0&
request=GetFeature&
typeNames=ne:countries&
count=10&
outputFormat=application/json
GetFeature(带过滤条件)
POST /geoserver/cloud/wfs
Content-Type: application/xml
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs/2.0"
service="WFS" version="2.0.0"
outputFormat="application/json">
<wfs:Query typeNames="ne:countries">
<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0">
<fes:PropertyIsEqualTo>
<fes:ValueReference>continent</fes:ValueReference>
<fes:Literal>Asia</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>
Transaction(插入要素)
POST /geoserver/cloud/wfs
Content-Type: application/xml
<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs/2.0"
service="WFS" version="2.0.0">
<wfs:Insert>
<sf:bugsites xmlns:sf="http://cite.opengeospatial.org/gmlsf">
<sf:cat>3</sf:cat>
<sf:str1>New Bug Site</sf:str1>
<sf:the_geom>
<gml:Point xmlns:gml="http://www.opengis.net/gml/3.2" srsName="EPSG:4326">
<gml:pos>-74.0 40.7</gml:pos>
</gml:Point>
</sf:the_geom>
</sf:bugsites>
</wfs:Insert>
</wfs:Transaction>
3.7.3 输出格式
WFS 支持多种输出格式:
| 格式 | MIME Type | 说明 |
|---|---|---|
| GML 3.2 | application/gml+xml; version=3.2 | 默认格式 |
| GeoJSON | application/json | 常用的 JSON 格式 |
| Shapefile | application/x-shapefile | ESRI Shapefile |
| CSV | text/csv | 逗号分隔值 |
| KML | application/vnd.google-earth.kml+xml | Google Earth |
| FlatGeoBuf | application/flatgeobuf | 高效二进制格式 |
| DXF | application/dxf | AutoCAD 格式 |
3.7.4 配置选项
geoserver:
wfs:
# 最大返回要素数
max-features: 1000000
# 默认返回数量
default-max-features: 1000
# 事务支持
service-level: COMPLETE # BASIC, TRANSACTIONAL, COMPLETE
# GML 配置
gml:
srs-name-style: URN2 # XML, URN, URN2, URL
# JSONP 支持
jsonp:
enabled: false
3.7.5 性能调优
分页查询优化
GET /geoserver/cloud/wfs?
service=WFS&
version=2.0.0&
request=GetFeature&
typeNames=ne:countries&
startIndex=0&
count=100
属性选择
GET /geoserver/cloud/wfs?
service=WFS&
version=2.0.0&
request=GetFeature&
typeNames=ne:countries&
propertyName=name,population
3.8 WCS(Web Coverage Service)
3.8.1 功能概述
WCS 服务提供栅格数据访问,支持:
- GetCapabilities:返回服务能力描述
- DescribeCoverage:返回覆盖数据的详细描述
- GetCoverage:返回指定区域的栅格数据
支持的 WCS 版本:1.0.0、1.1.0、1.1.1、2.0.1
3.8.2 请求示例
GetCapabilities
GET /geoserver/cloud/wcs?
service=WCS&
version=2.0.1&
request=GetCapabilities
DescribeCoverage
GET /geoserver/cloud/wcs?
service=WCS&
version=2.0.1&
request=DescribeCoverage&
coverageId=DEM__GTOPO30
GetCoverage
GET /geoserver/cloud/wcs?
service=WCS&
version=2.0.1&
request=GetCoverage&
coverageId=DEM__GTOPO30&
subset=Lat(-10,10)&
subset=Long(100,120)&
format=image/tiff
3.8.3 输出格式
| 格式 | MIME Type | 说明 |
|---|---|---|
| GeoTIFF | image/tiff | 最常用格式 |
| JPEG 2000 | image/jp2 | 高压缩比 |
| NetCDF | application/x-netcdf | 科学数据格式 |
| PNG | image/png | 无损压缩 |
3.8.4 配置选项
geoserver:
wcs:
# 最大输出大小(像素)
max-input-memory: 2147483648 # 2GB
# 支持的输出格式
output-formats:
- image/tiff
- image/png
- application/x-netcdf
3.9 WPS(Web Processing Service)
3.9.1 功能概述
WPS 服务提供地理空间处理功能:
- GetCapabilities:返回服务能力描述
- DescribeProcess:返回处理过程的详细描述
- Execute:执行地理处理操作
- GetStatus:获取异步执行状态
- GetResult:获取执行结果
支持的 WPS 版本:1.0.0
3.9.2 内置处理过程
GeoServer WPS 内置了丰富的处理过程:
矢量处理
geo:buffer:缓冲区分析geo:union:合并要素geo:intersection:交集运算geo:clip:裁剪geo:centroid:质心计算
栅格处理
ras:Contour:等值线提取ras:CropCoverage:裁剪栅格ras:Rasterize:矢量栅格化
渲染处理
render:Map:地图渲染render:Animation:动画生成
3.9.3 请求示例
同步执行(缓冲区分析)
POST /geoserver/cloud/wps
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<wps:Execute xmlns:wps="http://www.opengis.net/wps/1.0.0"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:gml="http://www.opengis.net/gml"
service="WPS" version="1.0.0">
<ows:Identifier>geo:buffer</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>geom</ows:Identifier>
<wps:Data>
<wps:ComplexData mimeType="application/wkt">
POINT(0 0)
</wps:ComplexData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>distance</ows:Identifier>
<wps:Data>
<wps:LiteralData>10</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput mimeType="application/json">
<ows:Identifier>result</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
异步执行
<wps:ResponseForm>
<wps:ResponseDocument storeExecuteResponse="true" status="true">
<wps:Output>
<ows:Identifier>result</ows:Identifier>
</wps:Output>
</wps:ResponseDocument>
</wps:ResponseForm>
3.9.4 配置选项
geoserver:
wps:
# 执行资源限制
max-synchronous-processes: 10
max-asynchronous-processes: 20
# 结果存储
storage:
max-age: 86400 # 秒
type: file
path: /tmp/wps-output
3.10 REST API 服务
3.10.1 功能概述
REST API 服务提供 RESTful 风格的配置管理接口,用于:
- 工作区(Workspace)管理
- 数据存储(DataStore)管理
- 图层(Layer)管理
- 样式(Style)管理
- 缓存(GeoWebCache)管理
3.10.2 API 端点
主要 API 端点:
| 端点 | 方法 | 说明 |
|---|---|---|
| /rest/workspaces | GET, POST | 工作区列表和创建 |
| /rest/workspaces/{ws} | GET, PUT, DELETE | 工作区详情 |
| /rest/workspaces/{ws}/datastores | GET, POST | 数据存储管理 |
| /rest/workspaces/{ws}/datastores/{ds}/featuretypes | GET, POST | 要素类型管理 |
| /rest/workspaces/{ws}/coveragestores | GET, POST | 覆盖存储管理 |
| /rest/styles | GET, POST | 样式管理 |
| /rest/layers | GET | 图层列表 |
| /rest/layers/{layer} | GET, PUT, DELETE | 图层详情 |
3.10.3 使用示例
列出所有工作区
curl -u admin:geoserver \
"http://localhost:9090/geoserver/cloud/rest/workspaces.json"
创建工作区
curl -u admin:geoserver -X POST \
-H "Content-Type: application/json" \
-d '{"workspace":{"name":"test"}}' \
"http://localhost:9090/geoserver/cloud/rest/workspaces"
创建 PostGIS 数据存储
curl -u admin:geoserver -X POST \
-H "Content-Type: application/json" \
-d '{
"dataStore": {
"name": "postgis_store",
"connectionParameters": {
"entry": [
{"@key": "host", "$": "localhost"},
{"@key": "port", "$": "5432"},
{"@key": "database", "$": "geodata"},
{"@key": "schema", "$": "public"},
{"@key": "user", "$": "geoserver"},
{"@key": "passwd", "$": "geoserver"},
{"@key": "dbtype", "$": "postgis"}
]
}
}
}' \
"http://localhost:9090/geoserver/cloud/rest/workspaces/test/datastores"
发布图层
curl -u admin:geoserver -X POST \
-H "Content-Type: application/json" \
-d '{
"featureType": {
"name": "countries",
"nativeName": "countries",
"title": "World Countries"
}
}' \
"http://localhost:9090/geoserver/cloud/rest/workspaces/test/datastores/postgis_store/featuretypes"
上传样式
curl -u admin:geoserver -X POST \
-H "Content-Type: application/vnd.ogc.sld+xml" \
-d @style.sld \
"http://localhost:9090/geoserver/cloud/rest/styles?name=mystyle"
3.10.4 认证配置
REST API 需要认证,支持以下方式:
- HTTP Basic:用户名和密码
- API Key:通过请求头或查询参数传递
# Basic 认证
curl -u admin:geoserver ...
# API Key(如果启用)
curl -H "X-GS-ApiKey: your-api-key" ...
3.11 WebUI 管理界面
3.11.1 功能概述
WebUI 提供图形化的管理界面,功能包括:
- 服务配置(WMS/WFS/WCS 参数)
- 数据管理(数据存储、图层发布)
- 样式编辑(SLD/CSS 样式)
- 安全设置(用户、角色、权限)
- 系统监控(资源使用、日志)
3.11.2 主要功能模块
数据模块
- 工作区管理
- 存储(矢量/栅格)管理
- 图层管理
- 图层组管理
- 样式管理
服务模块
- WMS 配置
- WFS 配置
- WCS 配置
- WPS 配置
- CSW 配置(如果启用)
安全模块
- 用户管理
- 组管理
- 角色管理
- 数据安全规则
- 服务安全规则
瓦片缓存模块
- 瓦片层管理
- Grid Sets 管理
- Blob Stores 管理
- 缓存种子/清理
3.11.3 访问 WebUI
默认地址:http://localhost:9090/geoserver/cloud/web/
登录后的主界面展示:
- 服务状态概览
- 最近活动
- 快捷操作链接
3.12 GeoWebCache 瓦片缓存
3.12.1 功能概述
GWC(GeoWebCache)提供瓦片缓存服务:
- 预渲染瓦片:提前生成地图瓦片
- 动态瓦片:按需生成并缓存
- 多格式支持:PNG、JPEG、WebP、矢量瓦片
- 多服务支持:WMTS、TMS、KML
3.12.2 支持的服务
| 服务 | 端点 | 说明 |
|---|---|---|
| WMTS | /gwc/service/wmts | OGC 瓦片服务 |
| TMS | /gwc/service/tms | Tile Map Service |
| WMS-C | /gwc/service/wms | WMS 瓦片缓存 |
| KML | /gwc/service/kml | Google Earth |
3.12.3 请求示例
WMTS GetCapabilities
GET /geoserver/cloud/gwc/service/wmts?
service=WMTS&
request=GetCapabilities
WMTS GetTile
GET /geoserver/cloud/gwc/service/wmts?
service=WMTS&
request=GetTile&
layer=ne:countries&
tilematrixset=EPSG:4326&
tilematrix=EPSG:4326:0&
tilerow=0&
tilecol=0&
format=image/png
TMS
GET /geoserver/cloud/gwc/service/tms/1.0.0/ne:countries@EPSG:4326@png/0/0/0.png
3.12.4 瓦片存储后端
GWC 支持多种瓦片存储方式:
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 文件系统 | 本地或网络文件系统 | 开发/小规模 |
| S3 | AWS S3 兼容存储 | 云部署 |
| Azure Blob | Azure 存储 | Azure 部署 |
| Google Cloud | GCS 存储 | GCP 部署 |
| PostgreSQL | 数据库存储 | 统一管理 |
配置示例(S3):
gwc:
blobstores:
- name: s3-tiles
type: S3BlobStore
enabled: true
default: true
bucket: my-tiles-bucket
prefix: tiles
region: us-east-1
3.12.5 种子和清理
通过 REST API 管理瓦片缓存:
开始种子任务
curl -u admin:geoserver -X POST \
-H "Content-Type: application/xml" \
-d '<seedRequest>
<name>ne:countries</name>
<srs><number>4326</number></srs>
<zoomStart>0</zoomStart>
<zoomStop>10</zoomStop>
<format>image/png</format>
<type>seed</type>
<threadCount>4</threadCount>
</seedRequest>' \
"http://localhost:9090/geoserver/cloud/gwc/rest/seed/ne:countries.xml"
清理缓存
curl -u admin:geoserver -X POST \
"http://localhost:9090/geoserver/cloud/gwc/rest/seed/ne:countries?truncate=true"
3.13 本章小结
本章详细介绍了 GeoServer Cloud 的各个核心服务组件:
-
Gateway:统一的 API 入口,提供路由、负载均衡和安全控制。
-
Discovery:基于 Eureka 的服务发现,实现服务的自动注册和发现。
-
Config:集中式配置管理,支持动态配置刷新。
-
WMS:Web 地图服务,提供地图图像渲染。
-
WFS:Web 要素服务,支持矢量数据查询和编辑。
-
WCS:Web 覆盖服务,提供栅格数据访问。
-
WPS:Web 处理服务,支持空间分析操作。
-
REST API:RESTful 配置接口,用于编程管理 GeoServer。
-
WebUI:图形化管理界面。
-
GWC:瓦片缓存服务,提高地图服务性能。
理解这些服务的功能和配置是有效使用 GeoServer Cloud 的基础。在下一章中,我们将深入探讨目录(Catalog)和配置管理。
3.14 思考题
-
在什么情况下应该扩展 WMS 服务而不是 WFS 服务?如何确定每个服务需要的实例数量?
-
Gateway 服务的负载均衡策略有哪些?各适用于什么场景?
-
如果需要在 WFS 服务中实现数据编辑(Transaction),需要考虑哪些安全因素?
-
GeoWebCache 的不同瓦片存储后端各有什么优缺点?如何选择?
-
在生产环境中,是否应该禁用 Eureka 而改用 Kubernetes 原生服务发现?为什么?