Node.js微服务+流水线服务框架的设想

Node.js微服务+流水线服务框架的设想

要点:

  1. 每个微服务从代码实现来看,就是一个JS函数,输入是一个JSON对象,输出也是一个JSON对象
    1. 框架负责将其转换为基于URL输入和输出的Web服务;
  2. 统计每个微服务的每秒请求数、每秒IO量,以单独的options url公开,以便全局的性能统计模块进行后端服务集群的性能统计
  3. 微服务支持动态的注册和重启:
    1. 动态注册:提供服务的名称和JS函数实现代码,框架的运行时负责将其转换为一个URL
    2. 上游可以调用下游,下游也可以调用上游,当发现某个服务不可用时,首先尝试缓冲数据,过一段时间重试;否则向中介者发请求,启动此依赖服务
      1. 所有这些过程都由微服务框架自动完成,负责微服务具体业务开发的人不需要关心这些东西
  4. 流水线的要点就是:每个步骤的处理速度尽可能快,以避免挤压/堆积
    1. 如果全局的性能监控模块发现某个流水线步骤是瓶颈,则自动水平扩展,分配新的服务运行实例
  5. 批量IO:微服务之间通过URL相互调用,假如协议是基于HTTP的,则一个请求输入/结果输出一个HTTP连接可能性能太差,框架应提供批量IO的wrapper功能
  6. 异步请求:
    1. 微服务一般可以认为是同步的,但如果某个请求的处理延迟太大的话,则最好做成异步的,对应到实施策略上,那就是:
      1. JS函数写成加一个异步callback参数的写法,而不是return一个结果
      2. 而框架负责将其转换为“异步Web服务”的模式:即服务的请求者在发送请求数据时,附带一个本地监听URL,之后服务的接受者将通过这个URL异步返回结果
        1. 如果无法打开“本地监听URL”,比如一个内网浏览器客户端,则可以通过“反向Comet长连接/WebSocket”技术来处理


对一个实时的流数据处理+推荐系统来说,可能根本不需要使用数据库,第一步当然可以从MySQL切换到内存数据库Redis,第2步可以直接把数据库存储只作为一个“系统观察者+状态持久化”来考虑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值