其他分享
首页 > 其他分享> > 用户案例 | 腾讯医疗资讯平台云原生容器化之路

用户案例 | 腾讯医疗资讯平台云原生容器化之路

作者:互联网

作者

yuhuliu,腾讯研发工程师,关注存储、大数据、云原生领域。

摘要

医疗资讯业务在高速发展过程中,形成了覆盖不同场景、不同用户、不同渠道的几十个业务,以及上千个服务。为了高效满足用户多样化的需求,医疗技术团队通过 TKE 上云,使用 Coding DevOps 平台,以及云上可观测技术,来提升研发效率、降低运营运维成本。本文介绍我们在上云过程中一些实践和经验,以及一些思考和选择。

业务背景

业务上云

​ 1:服务众多,代码如何管理

​ 2:上云后怎么快速进行问题定位、排查

​ 3:监控告警平台如何选择

​ 4:基础镜像怎么选择

关于服务代码管理

使用 git 做代码版本控制,按业务建立项目组,每个服务使用单独的代码仓库,仓库名使用同一命名规范。

关于问题排查

调研云上有成熟的 elk 服务,业务只需要把日志放到同一目录,通过 filebeat 采集后,通过 ETL 逻辑可以把日志方便导入 Elasticsearch。这样的做法还有个优点就是可以同时支持前后端服务日志的采集,技术较为成熟,复用了组件能力,通过在请求中埋点加入 traceid,方便在全链路定位问题。

关于监控告警平台

CSIG 提供了基于日志监控的 CMS 平台,将业务日志导入到 CMS 后,可以基于上报的日志配置监控和告警,监控维度、指标业务可以自己定义。我们采用了主调、被调、接口名等维度,调用量、耗时、失败率等指标,满足业务监控告警诉求。基于日志的监控可以复用同一条数据采集链路,系统架构统一简洁。

关于基础镜像

为了方便业务初期快速上云,以及统一服务启动、数据采集上报,有必要对业务的基础镜像进行处理,预先建立对应目录,提供脚本和工具,方便业务快速接入。这里我们提供了不同语言、版本的基础镜像,封装了 supervisord 和 filebeat,通过 supervisord 来拉起 filebeat 和业务服务。

Devops

这里主要使用了 coding 平台,为了区分不同环境,建立了开发、测试、预发布、测试四套不同流水线模板,还引入了合流机制来加入人工 code review 阶段。

在合流阶段:通过 MR HOOK,自动轮询 code review 结果,确保代码在 review 通过后才能进行下一步(不同团队可能要求不一样)。

在 CI 阶段:通过代码质量分析,来提升代码规范性,通过单元测试,来保证服务质量。

在 CD 阶段:通过引入人工审批和自动化拨测,提高服务稳定性。

资源利用率提升

为了提高资源整体利用率,我们进行了一系列优化,大致遵循如下规范:

这里由于 HPA 会导致业务容器动态扩缩,在停止过程中如果原有流量还在访问,或者启动还未完成就导入流量,会导致业务的失败,因此需要需要预先开启 TKE 上 preStop 以及就绪检测等配置。

1:优雅停止,进程停止前等北极星、cl5 路由缓存过期;
入口:tke->工作负载->具体业务->更新工作负载
如果使用的服务发现是 CL5,推荐 preStop70s,北极星配置 10s 足够了

2:就绪、存活检测,进程启动完成后再调配流量;
入口:tke->工作负载->具体业务->更新工作负载,根据不同业务配置不同探测方式和时间间隔。

通过上面一系列调整优化,我们的资源利用率大幅提升,通过 TKE 上弹性升缩,在保证业务正常访问同时,局部高峰访问资源不足的问题基本解决,避免了资源浪费,也提升了服务稳定性;但多环境问题还是会导致存在一定损耗。

可观测性技术

监控:云监控中台

日志:CLS

Tracing:APM

通过接入这些平台的能力,我们的问题发现、定位、排查效率有了极大的提高,业务的运营维护成本较大降低,通过监控、和 tracing,也发现了不少系统潜在的问题,提高了服务质量。

结尾

最后,要感谢上云过程中全体开发同学的辛勤付出,以及各位研发 leader 的大力支持。

关于我们

更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号~

福利:

①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》~

②公众号后台回复【系列】,可获得《15个系列100+篇超实用云原生原创干货合集》,包含Kubernetes 降本增效、K8s 性能优化实践、最佳实践等系列。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

标签:原生,服务,化之路,业务,上云,监控,腾讯,日志
来源: https://www.cnblogs.com/tencent-cloud-native/p/15500443.html