基于nodejs的微服务的注册与发现机制实现的调研

基于nodejs的微服务的注册与发现机制实现的调研

朱治龙
2017-09-07 / 0 评论 / 19 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年06月04日,已超过1261天没有更新,若内容或图片失效,请留言反馈。

https://github.com/lehoangduc/node-registrify
基于hapi和redis的服务注册,同时提供命令行操作
被设计为一个注册中心,
注册服务和服务发现由客户端通过RESTAPI去获取
优点:代码逻辑比较清晰,接口比较全
问题:
github星:22颗 参考价值:4分 接口全

https://github.com/samuelkitazume/nodeservices
基于express和nedb,包括服务注册与服务发现,提供命令行操作。被设计为一个注册中心。
优点:代码简洁,
问题:没有健康检查
github星:1颗 参考价值:5分

https://github.com/Digipolitan/yemma-discovery
https://github.com/Digipolitan/yemma
基于express、mongoDB、socket.io,
被设计为子应用(客户端)调用,通过token鉴权。
优点:有心跳机制,有服务token鉴权,注册服务非常简单。
问题:要配合yemma框架,代码不直观
github星:1颗 参考价值:3分

https://github.com/ParthaBoocha/service-registry
基于glue(glue)基于hapi,看代码迁移到express也很容易,用的json文件存储数据
对跨域有处理,被设计为一个注册中心。
优点:代码简洁
问题:对微服务没有特别的处理,例如没有心跳机制,只是一个简单的数据存储读取
github星:0颗 参考价值:5分 json文件存数据

https://github.com/express-components/registry
基于 express、nedb、socket.io的,基于udp协议的服务注册,
有健康检查,健康检查没使用数据训的TTL特性,是用的时间比较,然后主支去请求各服务的状态,看来是被设计为一个注册中心。
服务发现由客户端通过RESTAPI去获取。
优点:基于udp协议,有健康检查
问题:
github星:0颗 参考价值:7分 udp协议与健康检查

https://github.com/RCT-Solutions/rct-nars
基于express,处理了跨域情况,使用自己写的迷你内存数据库,有健康检查接口(待客户端去调用),
注册和服务发现都是由客户端通过RESTAPI去获取,看来是设计为一个注册中心
优点:模块分的比较细,对心跳包等的数据结构定义规范
问题:模块分的比较细,健康检查没示例
github星:0颗 参考价值:6分 内存数据库,

https://github.com/nswbmw/etcd-proxy
基于koa和etcd的,有服务注册,
本身的实现为子应用(客户端),非注册中心,注册中心即为数据库,
心跳机制为每5秒去更新etcd里的过期时间(TTL,即Time To Life),
服务发现由客户端通过RESTAPI去获取
通过不断地注册来作心跳,通过工具库ip获取ip,通过工具库get-port获取可用端口,
好像是相同的应用名允许注册多个,返回时随机取一个
优点:121行代码,代码简洁,功能完备,赞
问题:依赖etcd,使用了etcd的过期机制TTL
github星:3颗 参考价值:8分 代码简洁

https://github.com/koalazak/redis-registry
基于redis,有服务注册,
本身的实现为子应用(客户端),非注册中心,注册中心即为数据库,
心跳机制为每5秒去更新redis里的过期时间,
服务发现由客户端通过查询redis去获取
通过工具库network-address获取,
好像是相同的应用名允许注册多个,返回时随机取一个
优点:174行代码,代码简洁,
问题:依赖redis,使用了redis的过期机制expire
github星:3颗 参考价值:7分 代码简洁
{
name: 'my-service-name',
port: 8080,
hostname: '192.168.1.10',
host: '192.168.1.10:8080',
url: 'http://192.168.1.10:8080'
}

发现几个工具包
https://www.npmjs.com/package/get-port
获得一个没有被占用的端口

https://www.npmjs.com/package/network-address
获取本地ip
https://www.npmjs.com/package/ip
获取ip,及掩码等,功能比network-address多

https://www.npmjs.com/package/network-address
获取机器ip或ipv6

https://www.npmjs.com/package/nedb-promise
https://github.com/louischatriot/nedb
js数据库,执久或内存数据库,API为MongoDB子集

https://www.npmjs.com/package/glue
管理hapi.js创建的服务
https://www.npmjs.com/package/hapi
知名web服务框架

https://github.com/coreos/etcd
go语言写的分布式高可用键值对数据库

https://www.npmjs.com/package/request-promise

0

评论 (0)

取消