上云无忧 > 文档中心 > 腾讯云微服务引擎 TSE Eureka 迁移方案 - Eureka协议使用命名空间
微服务引擎 TSE
腾讯云微服务引擎 TSE Eureka 迁移方案 - Eureka协议使用命名空间

文档简介:
介绍: 北极星对 Eureka 的 API 进行了全兼容,由于 Eureka 默认不支持命名空间,北极星拓展了一个请求头x-namespace来支持命名空间的隔离。当有客户端的请求到达服务端,服务端将检查这个 header: 如果 header 存在,则使用这个 header 标识的命名空间进行服务注册发现的隔离。 如果 header 不存在或者值为空,则使用默认的命名空间default。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

介绍

北极星对 Eureka 的 API 进行了全兼容,由于 Eureka 默认不支持命名空间,北极星拓展了一个请求头x-namespace来支持命名空间的隔离。当有客户端的请求到达服务端,服务端将检查这个 header:
如果 header 存在,则使用这个 header 标识的命名空间进行服务注册发现的隔离。
如果 header 不存在或者值为空,则使用默认的命名空间default

示例

下面通过 eureka 协议的api进行说明。向命名空间ns1下注册服务EUREKA-DEMO-PROVIDER的一个实例,实例端口为18081。
		
curl -X 'POST' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-d '{
"instance": {
"instanceId": "10.91.80.100:eureka-demo-provider:18081",
"hostName": "10.91.80.100",
"app": "EUREKA-DEMO-PROVIDER",
"ipAddr": "10.91.80.100",
"status": "UP",
"overriddenStatus": "UNKNOWN",
"port": {
"$": 18081,
"@enabled": "true"
},
"securePort": {
"$": 443,
"@enabled": "false"
},
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 0,
"lastRenewalTimestamp": 0,
"evictionTimestamp": 0,
"serviceUpTimestamp": 0
},
"metadata": {
"management.port": "18081"
},
"homePageUrl": "http://10.91.80.100:18081/",
"statusPageUrl": "http://10.91.80.100:18081/actuator/info",
"healthCheckUrl": "http://10.91.80.100:18081/actuator/health",
"vipAddress": "EUREKA-DEMO-PROVIDER",
"secureVipAddress": "EUREKA-DEMO-PROVIDER",
"isCoordinatingDiscoveryServer": "false",
"lastUpdatedTimestamp": "1681266990026",
"lastDirtyTimestamp": "1681266990889"
}
}' \
-v
向命名空间ns2下注册服务EUREKA-DEMO-PROVIDER的一个实例,实例端口为18082。
		
curl -X 'POST' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-H "x-namespace: ns2" \
-d '{
"instance": {
"instanceId": "10.91.80.100:eureka-demo-provider:18082",
"hostName": "10.91.80.100",
"app": "EUREKA-DEMO-PROVIDER",
"ipAddr": "10.91.80.100",
"status": "UP",
"overriddenStatus": "UNKNOWN",
"port": {
"$": 18082,
"@enabled": "true"
},
"securePort": {
"$": 443,
"@enabled": "false"
},
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 0,
"lastRenewalTimestamp": 0,
"evictionTimestamp": 0,
"serviceUpTimestamp": 0
},
"metadata": {
"management.port": "18082"
},
"homePageUrl": "http://10.91.80.100:18082/",
"statusPageUrl": "http://10.91.80.100:18082/actuator/info",
"healthCheckUrl": "http://10.91.80.100:18082/actuator/health",
"vipAddress": "EUREKA-DEMO-PROVIDER",
"secureVipAddress": "EUREKA-DEMO-PROVIDER",
"isCoordinatingDiscoveryServer": "false",
"lastUpdatedTimestamp": "1681266990026",
"lastDirtyTimestamp": "1681266990889"
}
}' \
-v
查询ns1EUREKA-DEMO-PROVIDER的实例。
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v
## 返回18081端口实例
查询ns2EUREKA-DEMO-PROVIDER的实例。
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Accept: application/json" \
-H "x-namespace: ns2" \
-v
## 返回18082端口实例
如上所见,向不同命名空间下相同的服务名进行服务注册发现,已经通过命名空间进行隔离。

API 支持列表

注册服务实例

请求方法:PUT
路由:/eureka/apps/{appId}
示例:
		
curl -X 'POST' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-d '{
"instance": {
"instanceId": "10.91.80.100:eureka-demo-provider:18081",
"hostName": "10.91.80.100",
"app": "EUREKA-DEMO-PROVIDER",
"ipAddr": "10.91.80.100",
"status": "UP",
"overriddenStatus": "UNKNOWN",
"port": {
"$": 18081,
"@enabled": "true"
},
"securePort": {
"$": 443,
"@enabled": "false"
},
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 0,
"lastRenewalTimestamp": 0,
"evictionTimestamp": 0,
"serviceUpTimestamp": 0
},
"metadata": {
"management.port": "18081"
},
"homePageUrl": "http://10.91.80.100:18081/",
"statusPageUrl": "http://10.91.80.100:18081/actuator/info",
"healthCheckUrl": "http://10.91.80.100:18081/actuator/health",
"vipAddress": "EUREKA-DEMO-PROVIDER",
"secureVipAddress": "EUREKA-DEMO-PROVIDER",
"isCoordinatingDiscoveryServer": "false",
"lastUpdatedTimestamp": "1681266990026",
"lastDirtyTimestamp": "1681266990889"
}
}' \
-v

健康检查

请求方法:PUT
路由:/eureka/apps/{appId}/{instanceId}
示例:
		
curl -X 'PUT' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081' \
-H "x-namespace: ns1" \
-v

取消注册

请求方法:DELETE
路由:/eureka/apps/{appId}/{instanceId}
示例:
		
curl -X 'DELETE' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081' \
-H "x-namespace: ns1" \
-v

查询所有实例

请求方法:GET
路由:/eureka/apps
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

查询 delta 实例

请求方法:GET
路由:/eureka/apps/delta
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps/delta' \
-H "Accept: application/json" \
-v

查询某个服务下所有实例

请求方法:GET
路由:/eureka/apps/{appId}
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

查询某个服务下某个实例

请求方法:GET
路由:/eureka/apps/{appId}/{instanceId}
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

查询某个实例

请求方法:GET
路由:/eureka/instance/{instanceId}
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/instance/10.91.80.100:eureka-demo-provider:18081' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

查询 vip 下的所有实例

请求方法:GET
路由:/eureka/vips/{vip}
示例:
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/vips/EUREKA-DEMO-PROVIDER' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

查询 secure vip 下的所有实例

请求方法:GET
路由:/eureka/svips/{svip}
示例
		
curl -X 'GET' 'http://127.0.0.1:8761/eureka/svips/EUREKA-DEMO-PROVIDER' \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-v

强制隔离实例

请求方法:PUT
路由:/eureka/apps/{appId}/{instanceId}/status
示例
		
curl -X 'PUT' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081/status' \
-H "x-namespace: ns1" \
-v

关闭强制隔离

请求方法:DELETE
路由:/eureka/apps/{appId}/{instanceId}/status
示例
		
curl -X 'DELETE' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081/status' \
-H "x-namespace: ns1" \
-v

更新元数据

请求方法:PUT
路由:/eureka/apps/{appId}/{instanceId}/metadata?{key}={value}
示例
		
curl -X 'PUT' 'http://127.0.0.1:8761/eureka/apps/EUREKA-DEMO-PROVIDER/10.91.80.100:eureka-demo-provider:18081/metadata?k=v' \
-H "x-namespace: ns1" \
-v

批量复制

请求方法:POST
路由:/eureka/peerreplication/batch
示例
		
curl -X 'POST' 'http://127.0.0.1:8761/eureka/peerreplication/batch' \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-H "x-namespace: ns1" \
-d '{
"replicationList":[
{
"appName": "EUREKA-DEMO-PROVIDER",
"id": "10.91.80.100:eureka-demo-provider:18081",
"lastDirtyTimestamp": 1681266990889,
"overriddenStatus": "UNKNOWN",
"status": "UP",
"instanceInfo": {
"instanceId": "10.91.80.100:eureka-demo-provider:18081",
"hostName": "10.91.80.100",
"app": "EUREKA-DEMO-PROVIDER",
"ipAddr": "10.91.80.100",
"status": "UP",
"overriddenStatus": "UNKNOWN",
"port": {
"$": 18081,
"@enabled": "true"
},
"securePort": {
"$": 443,
"@enabled": "false"
},
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 0,
"lastRenewalTimestamp": 0,
"evictionTimestamp": 0,
"serviceUpTimestamp": 0
},
"metadata": {
"management.port": "18081"
},
"homePageUrl": "http://10.91.80.100:18081/",
"statusPageUrl": "http://10.91.80.100:18081/actuator/info",
"healthCheckUrl": "http://10.91.80.100:18081/actuator/health",
"vipAddress": "EUREKA-DEMO-PROVIDER",
"secureVipAddress": "EUREKA-DEMO-PROVIDER",
"isCoordinatingDiscoveryServer": "false",
"lastUpdatedTimestamp": "1681266990026",
"lastDirtyTimestamp": "1681266990889"
},
"action": "Register"
}
]
}' \
-v
相似文档
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部