一些基本概念
为了使RPC服务正常运作,Nameko引入了以下这些概念来组建RPC服务。
Entrypoints(入口点)
Entrypoints是一个RPC服务中方法的托管器,也可以称为网关。Entrypoints通常会监控一些RPC服务以外的内容,例如消息队列。当收到运行RPC服务所暴露的方法的事件时,也称为Entrypoints激活,Entrypoints将会创建一个Worker并在其中执行指定方法。Entrypoints通常体现为一个修饰器。
Dependencies(依赖)
一个RPC服务通常只会完成其所关注的一类业务,如果项目涉及到多个业务类别,就会需要多个RPC服务联合工作,这样在RPC服务之间就会产生依赖关系。Nameko中对于其他RPC服务的依赖一般是通过代理模式使用的。
除此之外,一个RPC服务的依赖还包括业务逻辑之外的基础内容,例如数据库连接、额外事件处理等。这些依赖都可以通过Nameko的依赖注入功能在RPC服务实例化时注入到Worker中。依赖注入是通过DependencyProvider属性实现的,而在Nameko中,能够被注入的依赖也是由Dependency Provider Extension提供的。
Worker(工作线程)
Worker会在Entrypoints启动一个RPC调用响应时由Entrypoints创建,Worker一般只是一个RPC服务类的实例。一个RPC服务同时可以有多个Worker在运行,但每一个Worker只处理一次请求并且Worker是无状态的。Worker是有自己的生命周期的,周期顺序如下。
- Entrypoints激活。
- 实例化RPC服务类创建Worker。
- 将所有的依赖项注入到Worker中。
- 执行指定方法。
- 销毁Worker。
Extensions(扩展)
Nameko将所有的Entrypoints和Dependency Provider都定义为了Extension。这些Extensions通常都不是RPC服务中业务逻辑的组成部分,而是各个RPC服务可以根据自己的需要自行选择的。Nameko提供了一系列的内置Extensions,并且通过开源社区提供了更多常见的Extensions。