[微服务]非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"
}
]
}
}
- HDUOJ---Hamming Distance(4712)
- HDUOJ-----Difference Between Primes
- HDUOJ----(4706)Children's Day
- poj-------Common Subsequence(poj 1458)
- poj----Maximum sum(poj 2479)
- HDUOJ---hello Kiki
- HDUOJ-----X问题
- POJ-----C Looooops
- POJ--Strange Way to Express Integers
- HDUOJ----More is better(并查集)
- HDUOJ 1099——Lottery
- HDUOJ-----取(m堆)石子游戏
- HDUOJ-----Be the Winner
- HDUOJ-------- Fibonacci again and again
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- client-go 之 Indexer 的理解
- 你的登录接口真的安全吗?
- Python,你真的会使用 staticmethod 和 classmethod 吗?
- GitLabCI/CD自动集成和部署到远程服务器
- istio-cni详解
- 【Pytorch 】笔记八:Tensorboard 可视化与 Hook 机制
- K近邻算法:以"同类相吸"解决分类问题!
- ROS与PCL中点云数据之间的转换
- 啊,http2还没搞明白,http3又来了?
- 掌握Linux文件权限,看这篇就够了
- 【shell脚本入门到精通】基本规范及良好的编写习惯
- shell脚本的函数介绍使用和常用案例
- 详解shell脚本case条件语句,开发各种服务启动脚本跳板机
- 详解自动交互命令expect,免去手动输入!
- 快速掌握shell脚本的各种循环语句