如果非java应用也想要使用Eureka的话,Eureka为你提供了REST api。
appID是指应用程序的名称,instanceID是一个实例的唯一ID.在AWS cloud中,
instanceID就是指实例的id,但在其他的数据中心,instanceID是实例的hostname。
针对JSON/XML,提供的内容类型必须是application/xml或application/json。
Note:如果是 Spring Cloud请去掉REST中的v2。至少目前是这样的。
操作 | HTTP action |
---|---|
注册一个新的应用实例 | POST /eureka/v2/apps/appID |
删除一个应用实例 | DELETE /eureka/v2/apps/appID/instanceID |
发送应用实例心跳 | PUT /eureka/v2/apps/appID/instanceID |
查询所有的实例 | GET /eureka/v2/apps |
查询指定appID下所有实例 | GET /eureka/v2/apps/appID |
查询指定应用下的指定实例 | GET /eureka/v2/apps/appID/instanceID |
根据实例id查询某个实例 | GET /eureka/v2/instances/instanceID |
使实例退出服务 | PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE |
将实例恢复使用(删除覆盖) | DELETE/eureka/v2/apps/appID/instanceID/status?value=UP (The value=UP is optional, it is used as a suggestion for the fallback status due to removal of the override) |
更新 metadata | PUT/eureka/v2/apps/appID/instanceID/metadata?key=value |
查询特定vip地址下的所有实例 | GET /eureka/v2/vips/vipAddress |
查询特定安全vip地址下的所有实例 | GET /eureka/v2/svips/svipAddress |
示例:
http://localhost:7070/eureka/apps/
xml输出:
<application>
<name>EUREKA.CLIENT</name>
<instance>
<instanceId>172.31.151.192:eureka.client:9090</instanceId>
<hostName>172.31.151.192</hostName>
<app>EUREKA.CLIENT</app>
<ipAddr>172.31.151.192</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">9090</port>
<securePort enabled="false">443</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1484313760242</registrationTimestamp>
<lastRenewalTimestamp>1484455099402</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1484313760044</serviceUpTimestamp>
</leaseInfo>
<metadata class="java.util.Collections$EmptyMap"/>
<homePageUrl>http://172.31.151.192:9090/</homePageUrl>
<statusPageUrl>http://172.31.151.192:9090/info</statusPageUrl>
<healthCheckUrl>http://172.31.151.192:9090/health</healthCheckUrl>
<vipAddress>eureka.client</vipAddress>
<secureVipAddress>eureka.client</secureVipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1484313760242</lastUpdatedTimestamp>
<lastDirtyTimestamp>1484184868021</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
</application>
默认返回的是xml格式的数据,如果你希望返回json格式的,那么请设置
http的header中的Accept属性为 application/json。
Java语言中使用httpclient访问的话,类似下面这样:
HttpGet httpget = new HttpGet(
"http://localhost:7070/eureka/apps/eureka.client/"
);
httpget.setHeader("Accept","application/json");
其他编程语言也是类似的,你只需要设置header的Accept就可以了。
json结果:
{
"application": {
"name": "EUREKA.CLIENT",
"instance": [
{
"instanceId": "172.31.151.192:eureka.client:9090",
"hostName": "172.31.151.192",
"app": "EUREKA.CLIENT",
"ipAddr": "172.31.151.192",
"status": "UP",
"overriddenstatus": "UNKNOWN",
"port": {
"$": 9090,
"@enabled": "true"
},
"securePort": {
"$": 443,
"@enabled": "false"
},
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 1484313760242,
"lastRenewalTimestamp": 1484471774992,
"evictionTimestamp": 0,
"serviceUpTimestamp": 1484313760044
},
"metadata": {
"@class": "java.util.Collections$EmptyMap"
},
"homePageUrl": "http://172.31.151.192:9090/",
"statusPageUrl": "http://172.31.151.192:9090/info",
"healthCheckUrl": "http://172.31.151.192:9090/health",
"vipAddress": "eureka.client",
"secureVipAddress": "eureka.client",
"isCoordinatingDiscoveryServer": "false",
"lastUpdatedTimestamp": "1484313760242",
"lastDirtyTimestamp": "1484184868021",
"actionType": "ADDED"
}
]
}
}
本文分享自 ImportSource 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!