Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册

主题

非jvm语言结合Sidecar实现服务注册

前言

如何将非jvm语言提供的服务纳入到Spring Cloud管理中来,找到了这个Sidecar组件,发现官方提供一篇文档(https://cloud.spring.io/spring-cloud-netflix/multi/multi__polyglot_support_with_sidecar.html),如果在阅读时发现本文有误,请及时通知给我。

非JVM微服务可操作Eureka的REST端点,从而实现注册与发现。事实上,也可使用Sidecar更方便整合非JVM微服务。

Spring Cloud Netflix Sidecar的灵感来自Netflix Prana,它包括了一个简单的HTTP API来获取指定服务所有实例信息(例如主机和端口)。不仅如此,还可通过内嵌的Zuul来代理服务调用,该代理从Eureka Server中获取信息。非JVM微服务需要实现监控检查,以便Sidecar将它的状态上报该Eureka Server,健康检查的形式如下:

{

    "status":"UP"

}

内容

编写node.js微服务

1.node-service.js代码如下

var http = require('http');
var url = require("url");
var path = require('path');

// 创建server
var server = http.createServer(function(req, res) {
 // 获得请求的路径
 var pathname = url.parse(req.url).pathname;
 res.writeHead(200, { 'Content-Type' : 'application/json; charset=utf-8' });
 // 访问http://localhost:8028/,将会返回{"index":"欢迎来到首页"}
 if (pathname === '/') {
   res.end(JSON.stringify({ "index" : "欢迎来到首页" }));
 }
 // 访问http://localhost:8028/health,将会返回{"status":"UP"}
 else if (pathname === '/health.json') {
   res.end(JSON.stringify({ "status" : "UP" }));
 }
 // 其他情况返回404
 else {
   res.end("404");
 }
});
// 创建监听,并打印日志
server.listen(8028, function() {
 console.log('listening on localhost:8028');
});

2.测试

2.1.使用node node-service.js 命令启动该项目

2.2 访问http://127.0.0.1:8028/health.json及http://127.0.0.1:8028返回内容如下:

Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册_第1张图片

Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册_第2张图片

至此,非JVM微服务创建完毕。

 

创建cloud-sidecar微服务

1.创建项目

创建cloud-sidecar微服务

2.添加依赖


  org.springframework.cloud
  spring-cloud-starter-netflix-zuul


  org.springframework.cloud
  spring-cloud-starter-netflix-eureka-client


  org.springframework.cloud
  spring-cloud-netflix-sidecar

3.在启动类上添加@EnableSidecar注解,声明这是一个Sidecar

@EnableSidecar
@SpringBootApplication
public class CloudSidecarApplication {

   public static void main(String[] args) {
       SpringApplication.run(CloudSidecarApplication.class, args);
   }
}

4.修改配置文件

server:
 port: 8027

spring:
 application:
   name: cloud-sidecar

eureka:
 client:
   serviceUrl:
     defaultZone: http://127.0.0.1:8001/eureka/
 instance:
   prefer-ip-address: true

sidecar:
 port: 8028                                               # Node.js微服务的端口
 health-uri: http://127.0.0.1:8028/health.json           # Node.js微服务的健康检查URL

由配置可知,已经把Sidecar注册到Eureka Server上,并用sidecar.port属性指定了非JVM微服务所监听的端口,用sidecat.health-uri属性指定了非JVM微服务的健康检查URL。

 

总测试

(1)启动cloud-discovery-eureka

(2)启动cloud-register-user

(3)启动node-service

(4)启动scloud-sidecar

(5)访问http://localhost:8027/cloud-register-user/1

Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册_第3张图片

因此,非JVM微服务可通过这种方式调用注册在Eureka Server上的JVM微服务。

非JVM应用通过Sidecar接入Spring Cloud微服务集群的整体架构,大致就如下图:

Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册_第4张图片

源码获取

1.gitee:https://gitee.com/StarskyBoy/cloud

2.github: https://github.com/StarskyBoy/cloud

获取更多信息,请扫我

Spring Cloud之Zuul(七):主要实现非jvm语言结合Sidecar实现服务注册_第5张图片

你可能感兴趣的:(Spring,Cloud)