目录
链路追踪
日志
路由
链路追踪
分布式系统错综复杂,请求往往会分发给内部多个服务调用。为了方便问题的定位,我们需要跟踪内部的服务调用链。系统的复杂性越高,一个可行的链路追踪系统带来的好处就越明显。我们选择了已进入 CNCF 的 OpenTracing 分布式追踪标准,OpenTracing 提供与平台和厂商无关的 API,便于开发人员实现链路跟踪系统。
Mishards 定义了相关的链路追踪接口,并通过插件模式提供了扩展的可能性。目前默认提供了基于 Jaeger 的插件。
查阅 Jaeger Doc 了解怎样集成 Jaeger。
参数 | 是否必填 | 类型 | 默认值 | 说明 |
TRACER_PLUGIN_PATH | 否 | String | 用户自定义链路追踪插件的搜索路径,默认使用系统搜索路径。 | |
TRACER_CLASS_NAME | 否 | String | 在插件搜索路径下,根据类名搜索类,并将其实例化。目前只支持 Jaeger,默认不使用。 | |
TRACING_SERVICE_NAME | 否 | String | mishards | TRACING_CLASS_NAME 为 Jaeger 时,链路追踪的服务。 |
TRACING_SAMPLER_TYPE | 否 | String | const | TRACING_CLASS_NAME 为 Jaeger 时,链路追踪的 采样类型 。 |
TRACING_SAMPLER_PARAM | 否 | Integer | 1 | TRACING_CLASS_NAME 为 Jaeger 时,链路追踪的 采样频率 。 |
TRACING_LOG_PAYLOAD | 否 | Boolean | False | TRACING_CLASS_NAME 为 Jaeger 时,链路追踪是否采集 Payload。 |
日志
集群服务日志文件分布在不同的服务节点上,因此你在排查问题需要登录到相关服务器获取日志。建议使用 ELK 日志分析组件来协同分析多个日志文件、排查问题。
参数 | 是否必填 | 类型 | 默认值 | 说明 |
LOG_LEVEL | 否 | String | DEBUG | 日志记录级别:DEBUG < INFO < WARNING < ERROR。 |
LOG_PATH | 否 | String | /tmp/mishards | 日志文件的存储路径 |
LOG_NAME | 否 | String | logfile | 日志文件的名称 |
路由
Mishards 从服务发现中心获取 Milvus 读写节点的地址信息,通过元数据服务获取底层数据元信息。Mishards 的路由策略就是对于这些素材的一种消费。如图有 10 个数据段(s1, s2, s3, …, s10)。现在选择基于数据段名字的一致性哈希路由策略(FileNameHashRingBased),Mishards 会将涉及 s1、s4、s6、s9 数据段的请求路由到 Milvus 1 节点,将涉及 s2、s3、s5 数据段的请求路由到 Milvus 2 节点,将涉及 s7、s8、s10 数据段的请求路由到 Milvus 3 节点。
Mishards 定义了路由策略相关的接口,并通过插件提供扩展。你可以仿照默认的一致性哈希路由插件,根据自己的业务特点定制个性化路由。
参数 | 是否必填 | 类型 | 默认值 | 说明 |
ROUTER_CLASS_NAME | 否 | String | FileBasedHashRingRouter | 在插件搜索路径下,根据类名搜索路由的类,并将其实例化。目前系统只提供了基于数据段名字的一致性哈希路由策略 FileBasedHashRingRouter。 |
ROUTER_PLUGIN_PATH | 否 | String | 用户自定义路由插件的搜索路径,默认使用系统搜索路径。 |