Blog icon indicating copy to clipboard operation
Blog copied to clipboard

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

Open abeet opened this issue 7 years ago • 0 comments

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

abeet avatar Apr 16 '18 11:04 abeet