Seneca:NodeJS 微服务框架入门(一)

Seneca是什么?

(1)官网是这样介绍的:

Seneca is a microservices toolkit for Node.js.
It helps you write clean, organized code that you can scale and deploy at any time.

大概意思是:Seneca是一个库,在Node平台上开发微服务时用的,它能够帮助开发人员写出干净、有组织的代码,同时也利于项目更新和部署。

(2)百度百科是这样介绍的:

Seneca是Node.js微服务框架开发工具。它的目的在于复制架构师和开发人员的服务想法,提供方法把代码融入到由模式所触发的逻辑行为中,这是根据用例所作用的模型。一旦被定义,模式就可以轻松转为API,使用用例和模式来定义消息内容。

除了第一句好理解,Seneca是一个Node.js微服务框架的开发工具,后面讲的就比较抽象了;模式可以轻松转API,所以什么是模式呢?

为什么要用Seneca?

我们前面已经了解到Seneca是在Node平台上开发微服务框架时候用的,那么我们为什么要选择它呢,它有哪些好处?

  • 代码结构清晰
  • 使项目易于更新,部署

Seneca 能做到这些,原因在于它的三大核心功能:

  • 模式匹配
  • 无依赖传输(可以是消息,http,tcp等)
  • 组件化(插件)

后面将会结合代码示例,详细介绍如何使用这三大功能。

怎么样使用Seneca?

模式匹配 (Patterns )

(1)模式匹配是什么?

我们知道微服务中存在两个角色,一个服务端,一个客户端;通常服务端以Restful API形式提供微服务, 客户端通过HTTP 请求调用微服务。而使用Seneca,服务调用是基于消息的,消息之间则通过模式匹配来确保服务的唯一性;消息就是一个可以有任何你喜欢的内部结构的 JSON 对象。
一个简单的示例,一个进行数学计算,另一个调用它

const seneca = require('seneca')();

seneca.add('role:math, cmd:sum', (msg, reply) => {
   
  reply(null, {
    answer: ( msg.left + msg.right )})
});

seneca.act({
    role: 'math', cmd: 'sum', left: 1,  right: 2 }, (err, result) => {
   
  if (err) {
   
    return console.error(err);
  }
  console.log(result);
});

服务端添加服务:seneca.add()
客户端调用服务: seneca.act()
中间的消息,通过模式匹配。

(2)模式匹配几大特点

  • 优先多属性匹配原则
  • 模式唯一
  • 代码复用

其中,前面两点比较好理解,匹配的属性越多,优先级越高,调用对应的服务;模式唯一,意思是服务端Seneca.add时的匹配消息不能重复,可以按照模块来;代码复用,基于模式的代码复用this.act

(3)如何使用插件(组件化)

Seneca插件只是一组操作模式的集合,简单来说,Seneca插件就只是一个具有单个参数选项的函数,你将这个插件定义函数传递给 seneca.use 方法,下面是个简单的的Seneca插件:

function my_plugin(options) {
   
  console.log(options)
  this.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值