我们将 Label
和 Tag
定义成微服务中各种治理能力的基石
Label 是描述某个实例的一些属性,在很多平台中也会被称为annotation
,tag
。
下面是某个微服务的实例 Label
例子:
Instance:
version:1.0.0
zone:sh-1
region:sh
node:10.1.1.2
group:group-001
namespace:test
protocol:http
framework:femas
Label
本身是一种不可变的属性,部署时会确定,直到下次重新部署时可能会更改其中的某些值。Label
不唯一,Femas 会设计一些通用的Label来满足各种治理和管理的需求,用户也可以配合自身的使用场景,来自定义 Label
Label 的使用 kubernetes
相似,可以将 Label
关联到各种资源,目前为了简单,暂时将 Label 和实例进行关联,来用于各种治理能力。
为了更广泛的使用场景,这里并不采用 kubernetes
的使用方式,因为 Femas
从设计之初,就希望能够横跨虚机和容器平台。
Femas 的 Label 是在服务注册时,作为实例的 metadata 上报给注册中心
所有的注册动作,Femas
框架本身都会实现,用户只需要通过 ENV
或者 -D,或者Yaml
等方式,设置合理的 Label
即可。
Label 的主要场景还是用于挑选可用实例上,比如: