我们将 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来满足各种治理和管理的需求,用户也可以配合自身的使用场景,来自定义 LabelLabel 的使用 kubernetes 相似,可以将 Label关联到各种资源,目前为了简单,暂时将 Label 和实例进行关联,来用于各种治理能力。
为了更广泛的使用场景,这里并不采用 kubernetes 的使用方式,因为 Femas 从设计之初,就希望能够横跨虚机和容器平台。
Femas 的 Label 是在服务注册时,作为实例的 metadata 上报给注册中心
所有的注册动作,Femas 框架本身都会实现,用户只需要通过 ENV 或者 -D,或者Yaml等方式,设置合理的 Label 即可。
Label 的主要场景还是用于挑选可用实例上,比如: