Code Monkey home page Code Monkey logo

node's Introduction

Node是一个用Golang实现的高性能tcp框架

node实现了客户端、服务端的封装,提供基于节点ID、API进行路由处理,连接认证、请求、转发、功能,开箱即用,利用此框架可以轻易的实现一个转发服务器,把公网的请求转发到内网进行处理。

框架的核心

  • 简单:放弃各种设计模式、直观代码风格
  • 连接:服务端节点的每个连接之间基于Id、API互相通信
  • 高性能:采用多种措施,例如协程池(ants)、编解码不使用反射机制(go_jeans提供支持)等

组成

由客户端节点、服务端节点组成,节点之间通过ID、API互相通信,客户端节点可以向服务端任意节点通信

功能

  • 认证:想要与服务节点建立连接首先应该进行认证,与服务端节点建立连接后会立即进入认证环节,认证保证客户端是否为非法。
    1. 服务端节点查看连接最大数量是否达到,达到返回认证失败关闭连接 | 否则服务端向客户端发送一个session id,等待一段时间,没有接收到消息关闭连接。
    2. 客户端节点向服务端节点发送自己的ID、session id、认证服务端的ID、认证数据,并等待服务端节点确认结果。
    3. 服务端节点判断session id和认证服务端的id与自己是否相同,如果相同,调用认证回调函数最终由决定是否通过认证
  • 注册API:客户端节点向服务端节点自由注册自己的API,服务节点注册的API不允许重复,如果事先服务端节点已经存在的API,再次注册那么会注册失败,并返回注册失败的API列表,本次注册所有API失败,注册后其它节点直接向服务端节点发送或请求即可,不需要知道目的API在那个节点上。
  • 心跳机制:保持连接不会被网络通信设备认为当前连接不活跃被关闭采取的措施,通常是在一定周期内没有收到数据会被激活
  • 发送数据
    1. send方法:仅为发送数据,并不需要具有回复,不需要明确目的地,如果api在节点中不存在,并不会通知客户端失败信息,所以客户端并不知晓这一次发送是否真的被处理,如果出现错误只会在tcp连接层出现问题才会产生,不需要明确目的地
    2. request方法:发送数据并希望在等待时间内得到对端的回复,不需要明确目的地
    3. forward方法:发送消息到指定节点处理,需要明确目的ID

场景

场景4目前正在开发调试过程 scene.png

example\示例

更新迭代

  • 详细的文档将在之后的更新中推出
  • 进一步丰富框架功能
  • 提升程序的健壮性
  • 采用IO多路复用技术,提升整体性能,为大连接数量做准备。

node's People

Contributors

li-giegie avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.