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

时间:2022-05-06
本文章向大家介绍[微服务]非Java应用如何使用Eureka?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

如果非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"
      }
    ]
  }
}