从Spring Cloud到UCloud UK8S的微服务迁移实践( 三 )

----从Spring Cloud到UCloud UK8S的微服务迁移实践//----


从Spring Cloud到UCloud UK8S的微服务迁移实践

----从Spring Cloud到UCloud UK8S的微服务迁移实践//----

 

 基于 HPA 的峰值弹性伸缩

  要出发作为一家周边游服务订购平台 , 在业务过程中经常会涉及到景区、酒店门票抢购等需要峰值弹性的场景 。 Kubernetes 的 HPA 功能为弹性伸缩场景提供了很好的实现方式 。

  在 Kubernetes中 , HPA 通常通过 Pod 的 CPU、内存利用率等实现 , 但在 Java 中 , 内存控制通过 JVM 实现 , 当内存占用过高时 , JVM 会进行内存回收 , 但 JVM 并不会返回给主机或容器 , 单纯基于 Pod / CPU 指标进行集群的扩缩容并不合理 。 我们通过 Prometheus 获取 Java 中 http_server_requests_seconds_count(请求数)参数 , 通过适配器将其转化成 Kubernetes API Server 能识别的参数 , 并基于这一指标实时动态调整 Pod 的数量 。


从Spring Cloud到UCloud UK8S的微服务迁移实践

----从Spring Cloud到UCloud UK8S的微服务迁移实践//----

  UCloud UK8S 产品也提供了自身的集群伸缩插件 , 通过设置伸缩组 , 并匹配相应的伸缩条件 , 能够及时创建相应的云主机作为 Node 节点 , 方便我们在业务高峰时期更快速高效地拉起资源 。

 

 基于 Elastic 的APM链路跟踪

  微服务框架下 , 一次请求往往需要涉及到多个服务 , 因此服务性能监控和排查就变得复杂;不同服务可能由不同的团队开发 , 甚至使用不同的编程语言来实现;服务有可能部署在几千台服务器 , 横跨多个不同的数据中心 。

  因此 , 就需要一些可以帮助理解系统行为、用于分析性能问题的工具 , 以便发生故障的时候 , 能够快速定位和解决问题 。

  目前市面有很多开源的APM组件 , Zipkin、Pinpoint、Skywalking等等 。 我们最终选择了基于Elastic开源的apm-server 。 正是由于市面上有太多的监控开源项目 , 但是各项目之间无法很好的互通 。 而Elastic通过filebeat收集业务日志 , 通过metricbeat监控应用服务性能 , 通过apm-server实现服务间的tracing , 并把数据统一存放在es , 很好的将logging、metrics、tracing整合到一起 , 打破了各项目之间的壁垒 , 能够更快速的协助运维及开发定位故障 , 保障系统的稳定性 。


从Spring Cloud到UCloud UK8S的微服务迁移实践

----从Spring Cloud到UCloud UK8S的微服务迁移实践//----

  Istio 服务治理


推荐阅读