Netflix Prana 开源项目教程
PranaA sidecar for your NetflixOSS based services.项目地址:https://gitcode.com/gh_mirrors/pr/Prana
项目介绍
Netflix Prana 是一个用于非JVM语言的应用程序与Netflix Eureka服务注册中心进行交互的侧车(sidecar)项目。它提供了一个HTTP API,使得非JVM语言的应用程序能够轻松地注册和发现服务。Prana 通过提供一个简单的接口,帮助开发者管理服务实例的生命周期,并与其他Netflix OSS组件(如Ribbon和Hystrix)集成。
项目快速启动
环境准备
- Java 8 或更高版本
- Git
克隆项目
git clone https://github.com/Netflix/Prana.git
cd Prana
构建项目
./gradlew build
运行项目
java -jar build/libs/prana-<version>.jar
配置文件
在 src/main/resources/application.properties
中配置你的Eureka服务器地址:
eureka.client.serviceUrl.defaultZone=http://your-eureka-server:8761/eureka/
应用案例和最佳实践
服务注册
Prana 允许非JVM语言的应用程序通过HTTP API注册到Eureka。例如,一个Python应用可以通过以下方式注册:
import requests
url = "http://localhost:7654/prana/v1/applications/my-python-app"
payload = {
"instanceId": "my-python-app-1",
"hostName": "localhost",
"ipAddr": "127.0.0.1",
"port": {"$": 5000, "@enabled": "true"},
"securePort": {"$": 443, "@enabled": "false"},
"homePageUrl": "http://localhost:5000/",
"statusPageUrl": "http://localhost:5000/status",
"healthCheckUrl": "http://localhost:5000/health",
"vipAddress": "my-python-app",
"secureVipAddress": "my-python-app",
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
}
}
response = requests.post(url, json=payload)
print(response.status_code)
服务发现
通过Prana,非JVM语言的应用程序可以查询Eureka中的服务实例:
import requests
url = "http://localhost:7654/prana/v1/applications/my-python-app"
response = requests.get(url)
print(response.json())
典型生态项目
- Netflix Eureka: 服务注册和发现的服务器。
- Netflix Ribbon: 客户端负载均衡器,与Prana集成以实现服务调用的负载均衡。
- Netflix Hystrix: 断路器,保护系统免受故障服务的影响。
通过这些组件的集成,Prana 提供了一个完整的解决方案,使得非JVM语言的应用程序能够无缝地与Netflix OSS生态系统集成。
PranaA sidecar for your NetflixOSS based services.项目地址:https://gitcode.com/gh_mirrors/pr/Prana