前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[微服务]非Java应用如何使用Eureka?

[微服务]非Java应用如何使用Eureka?

作者头像
ImportSource
发布2018-04-03 14:16:35
1.6K0
发布2018-04-03 14:16:35
举报
文章被收录于专栏:ImportSource

如果非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输出:

代码语言:javascript
复制
<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访问的话,类似下面这样:

代码语言:javascript
复制
HttpGet httpget = new HttpGet(
代码语言:javascript
复制
"http://localhost:7070/eureka/apps/eureka.client/"
代码语言:javascript
复制
);

httpget.setHeader("Accept","application/json");

其他编程语言也是类似的,你只需要设置header的Accept就可以了。

json结果:

代码语言:javascript
复制
{
  "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"
      }
    ]
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ImportSource 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档