针对应用无损上线场景,MSE 为您提供服务延迟注册、服务健康检查功能。
建议同时开启健康检查和延迟注册功能,确保服务优雅启动。
功能 | 功能介绍 | 适用场景 |
---|---|---|
健康检查 | 微服务上线过程中,健康检查帮助 Kubernetes 判断服务提供者是否完成注册(而不是注册中),注册完成后告知服务消费者,确保服务消费者具备可用的服务提供者。 | 容器化服务的服务发布 |
延迟注册 | 延迟注册可以让应用在充分初始化后,再注册到注册中心,对外提供服务。延迟注册可以应对需要提前完成缓存数据加载的场景,避免应用启动后直接注册服务,流量资源未就绪而导致的报错。 |
|
完成延迟探测时间 initialDelaySeconds(秒)设置。建议您设置该值时做如下参考。若未按下述内容做设置,可能会收到容器平台的就绪探测未通过的告警,但不会影响功能的正常使用。
说明
使用健康检查前,Kubernetes 中已配置 readinessProbe
参数。
虚拟机场景 无需配置 readiness
机制。健康检查插件会对 Spring 的 WebServerInitializedEvent
事件进行监听,当监听到 WebServerInitializedEvent
事件后,才对实例进行注册和订阅。
Kubernetes 提供了 Readiness 健康检查机制,允许 Pod 在启动前完成预备工作。在容器场景中,Kubernetes 的 Readiness 机制配合 MSE Agent 的健康检查 API,可以保证流量的优雅上线。
如下示例代码所示,仅需在 Kubernetes 的 Readiness 机制中添加 MSE Agent API 指令 && curl -sf http://127.0.0.1:17000/lossless/health/readiness
。
改造前
readinessProbe: exec: command: - /bin/sh - -c - "curl -sf http://127.0.0.1:8080/actuator/health" initialDelaySeconds: 5
改造后
readinessProbe: exec: command: - /bin/sh - -c - "curl -sf http://127.0.0.1:8080/actuator/health && curl -sf http://127.0.0.1:17000/lossless/health/readiness" initialDelaySeconds: 5
您也可以基于专家经验指定一个超时时长,在健康检查完成后,延迟相应时间后再注册上线。接入 Java 应用前在控制台开启 延迟注册 功能,并设置对应的时长即可,详情操作参见 接入 Java 应用。