首页 > 传媒 > 关键词 > 微服务迁移最新资讯 > 正文

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

2020-04-10 11:28 · 稿源:站长之家用户投稿

写在前面

要出发周边游(以下简称要出发)是国内知名的主打「周边游」的在线旅行网站,以国内各大城市为中心,覆盖其周边旅游市场,提供包含酒店、门票、餐饮等在内的 1 – 3 天短途旅行套餐。为了降低公司内部各个业务模块的耦合度,提高开发、交付及运维效率,我们在 2017 年就基于 Spring Cloud 完成了公司内部业务微服务化的改造,并在 2019 年实现了 Spring Cloud 至 UCloud UK8S 平台的迁移。

本文从要出发的业务架构、Prometheus JVM 监控、基于 HPA 的峰值弹性伸缩、基于 Elastic 的APM链路跟踪及 Istio 服务治理等方面介绍了我们基于UCloud UK8S的 Spring Cloud 改造实践。

Why K8S and Why UK8S

Spring Cloud 作为当下主流的微服务框架,在功能层面为服务治理定义了智能路由、熔断机制、服务注册与发现等一系列的标准,并提供了对应的库和组件来实现这些标准特性,对微服务周边环境提供了最大力度的支持。

改造前,Spring Cloud 的业务架构如下:服务发现部分采用了 Spring Cloud 的 Eureka 组件,熔断器组件采用了 Hystrix,服务网关使用了Zuul 和 Spring Cloud Gateway(历史原因),分布式配置主要采用了 Spring Cloud Config(部分小组使用了Apollo),并通过 Feign 实现了客户服务端的负载均衡。

但 Spring Cloud 也有一些不可避免的缺点,如基于不同框架的不同组件带来的高应用门槛及学习成本、代码级别对诸多组件进行控制的需求与微服务多语言协作的目标背道而驰。

在我们内部,由于历史原因,不同小组所使用的 API 网关架构不统一,且存在多套 Spring Cloud,给统一管理造成了不便;Spring Cloud 无法实现灰度发布,也给公司业务发布带来了一定不便。更重要的是,作为一家周边游网站,我们经常会举行一些促销活动,面临在业务峰值期资源弹性扩缩容的需求,仅仅依靠 Spring Cloud 也无法实现资源调度来满足业务自动扩缩容的需求。

在决定向 UCloud UK8S 转型时,我们也考虑过使用 Kubespray 自建 K8S 集群,并通过 Cloud Provider 实现 K8S 集群与云资源的对接,例如使用 Load Balance、Storage Class、Cluster Autoscaler(CA) 等,但在这种情况下,新增 Node 节点需要单独去部署安装 Cloud Provider,给运维工作带来了一定的复杂性。

UCloud UK8S 实现了与内部 UHost 云主机、ULB 负载均衡、UDisk 云盘等产品的无缝连接,我们能够在 UK8S 集群内部轻松创建、调用以上产品。在峰值弹性的场景下,也能够通过 UK8S 内部的 CA 插件,实现 Node 级别的资源自动扩缩容,极大提升了运维效率。通过其 CNI 插件,UCloud UK8S 与 UCloud 自身 VPC 网络相连接,无需采用其他开源网络解决方案,降低了网络复杂度;而 UK8S 原生无封装的特质,也给了更大的改造空间,并且能够在出现故障时自己快速排查定位解决。

整体业务架构

从 Spring Cloud 到 UCloud UK8S 的过程,也是内部服务模块再次梳理、统一的过程,在此过程中,我们对整体业务架构做了如下改动:

1. 去掉原有的 Eureka,改用 Spring Cloud Kubernetes 项目下的 Discovery。Spring Cloud 官方推出的项目 Spring Cloud Kubernetes 提供了通用的接口来调用Kubernetes服务,让 Spring Cloud 和 Spring Boot 程序能够在 Kubernetes 环境中更好运行。在 Kubernetes 环境中,ETCD 已经拥有了服务发现所必要的信息,没有必要再使用 Eureka,通过 Discovery 就能够获取 Kubernetes ETCD 中注册的服务列表进行服务发现。

2. 去掉 Feign 负载均衡,改用 Spring Cloud Kubernetes Ribbon。Ribbon 负载均衡模式有 Service / Pod 两种,在 Service 模式下,可以使用 Kubernetes 原生负载均衡,并通过 Istio 实现服务治理。

3. 网关边缘化。网关作为原来的入口,全部去除需要对原有代码进行大规模的改造,我们把原有的网关作为微服务部署在 Kubernetes 内,并利用 Istio 来管理流量入口。同时,我们还去掉了熔断器和智能路由,整体基于 Istio 实现服务治理。

4. 分布式配置 Config 统一为 Apollo。Apollo 能够集中管理应用在不同环境、不同集群的配置,修改后实时推送到应用端,并且具备规范的权限、流程治理等特性。

5. 增加 Prometheus 监控,特别是对 JVM 一些参数和一些定义指标的监控,并基于监控指标实现了 HPA 弹性伸缩。

Kubernetes 化后业务架构将控制平面和数据平面分开。Kubernetes Master天然作为控制平面,实现整套业务的控制,不部署任何实际业务。数据平面中包含了基于 Java、PHP、Swoole、.NET Core 等不同语言或架构的项目。由于不同语言对机器性能有着不同要求,我们通过 Kubernetes 中节点 Label,将各个项目部署在不同配置的 Node 节点上,做到应用间互不干扰。

基于 Prometheus 的 JVM 监控

在 Spring Cloud 迁移到 Kubernetes 后,我们仍需要获取 JVM 的一系列底层参数,对服务的运行状态进行实时监控。Prometheus 是目前较为成熟的监控插件,而 Prometheus 也提供了 Spring Cloud 插件,可以获取到 JVM 的底层参数,进行实时监控。

我们设置了响应时间、请求数、JVM Memory、JVM Misc、Garbage Collection 等一系列详尽的参数,为问题解决、业务优化提供可靠的依据。

基于 HPA 的峰值弹性伸缩

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

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

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

基于 Elastic 的APM链路跟踪

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

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

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

Istio 服务治理

基于应用程序安全性、可观察性、持续部署、弹性伸缩和性能、对开源工具的集成、开源控制平面的支持、方案成熟度等考虑,我们最终选择了 Istio 作为服务治理的方案,主要涉及以下几个部分:

1. Istio-gateway 网关:Ingress Gateway 在逻辑上相当于网格边缘的一个负载均衡器,用于接收和处理网格边缘出站和入站的网络连接,其中包含开放端口和TLS的配置等内容,实现集群内部南北流量的治理。

2. Mesh 网关:Istio内部的虚拟Gateway,代表网格内部的所有Sidecar,实现所有网格内部服务之间的互相通信,即东西流量的治理。

3. 流量管理:在去除掉 Spring Cloud 原有的熔断、智能路由等组件后,我们通过对 Kubernetes 集群内部一系列的配置和管理,实现了 http 流量管理的功能。包括使用 Pod签对具体的服务进程进行分组(例如 V1/V2 版本应用)并实现流量调度,通过 Istio 内的 Destination Rule 单独定义服务负载均衡策略,根据来源服务、URL 进行重定向实现目标路由分流等,通过 MenQuota、RedisQuota 进行限流等。

4. 遥测:通过 Prometheus 获取遥测数据,实现灰度项目成功率、东西南北流量区分、服务峰值流量、服务动态拓扑的监控。

总结

目前我们已将旗下「云客赞」社交电商 App 全部迁移至 UK8S,开发语言包括Java、PHP-FPM、NodeJS 等等。结合CI/CD,能快速实现服务迭代以及新项目上线,大大提升了开发以及运维的工作效率;通过完善的日志、监控、链路跟踪及告警系统,能够快速的定位故障,并且根据遥测数据提前预判峰值,通过HPA实现服务自动伸缩,科学的分配资源,大大降低了计算资源成本;通过Istio服务治理,很好的实现了流量的管理,并且基于此轻松的实现了灰度发布。

接下来,我们将更加丰富CI/CD流水线,加入单元测试、代码扫描、性能测试等提升测试效率;引入chatops丰富运维手段;借助Istio实现多云管理进一步保障业务的稳定性。

作者:王琼,「要出发周边游」运维架构师兼运维经理,负责公司云原生落地和企业容器化改造。 2016 年开始接触K8S,在K8S以及Service Mesh领域持续深耕,致力于搭建生产级可用的容器服务平台。

网友热搜:

免责声明:“站长之家”的传媒资讯页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与我们联系删除或处理。稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性,更不对您的投资构成建议。我们不鼓励任何形式的投资行为、购买使用行为。

  • 相关推荐
  • 大家在看
  • 直播带货的C位迁移

    品牌公司要踩准直播电商的风口,但是,不要有那种博弈的心态。你不能总是算投机的账、算短期的账,投X万的营销费用,要做到Y万的销售收入,这次赚了,下次加码

  • 很多iPhone用户转到华为手机不知如何迁移数据 余承东支招

    在iOS和Android之间进行跨平台换机常令一些用户感到痛苦,原因在于数据迁移不便。华为消费者业务CEO余承东似乎也关注到了该问题,即“最近很多iPhone用户转到华为手机,不知道如何迁移个

  • 字节跳动回应TikTok总部迁移:正探讨在美国之外设立TikTok总部的可能性

    8月3日消息,有媒体报道称字节跳动考虑将TikTok总部由北京迁移到伦敦。该报道指出,字节跳动创始人张一鸣有意在伦敦成立新办公室,英国对于字节跳动此举表示支持和欢迎。对此字节跳动方面回

  • 天王表服务:坚守岗位,贴心服务

    自新型冠状病毒感染的肺炎疫情发生以来,天王表公司统一部署,各柜台高度重视客户服务工作。柜员们坚守岗位,共同应战疫情,应对危机,在门店全力保障每一位客户权益,做到了天王表服务一直到位,客户体验从不掉线。病毒隔离,服务不隔离。柜台服务首先最重要的就是提高对本行业的思想认识水平,要把本企业的工作摆在全国一盘棋的大格局中,只有切实提高了思想认识水平,天王表服务才能准确定位,服务质量才能经得起时间和业主的检

  • 微软回应GitHub服务中断:各地服务器有被盗现象 已全力追回

    今天早些时候,代码托管服务平台GitHub再次出现服务器故障,网页无法打开,数个小时后恢复。

  • 微信“支付”页新增“出行服务” 团油将为车主提供加油服务

    7月27日消息,近日,微信“支付”页中的“腾讯服务”在北京、广州地区上线新入口——“出行服务”,一站式聚合了包含加油服务、公交出行等多出行场景服务。其中,能链(能链云/团油/快电)旗下职业司机加油平台团油,作为车主加油服务提供方,嵌入“腾讯出行服务”,为广大车主提供加油服务。据介绍,“腾讯出行服务”小程序是腾讯智慧出行推出的一站式综合性出行服务平台,涵盖车主服务、公共出行服务、打车等全出行?

  • 碧桂园服务:杨惠妍将退任碧桂园生活服务董事长为不实传闻

    碧桂园服务在港交所公告,注意到有媒体报导称公司执行董事李长江将退任公司全资附属碧桂园生活服务的总经理兼董事一职,及董事会主席兼公司非执行董事杨惠妍将退任碧桂园生活服务的董事长一职的不实传闻。杨惠妍为碧桂园生活服务之董事长

  • 小鹏汽车售后增值服务“悦鹏服务”正式上线,已开放订购

    今天,小鹏汽车正式上线悦鹏服务,该服务系小鹏汽车售后增值服务体系的包年式产品,涵盖保养、维修、充电、事故处理、用车娱乐等用车需求。

  • 微信停止服务印度用户

    7 月 26 日消息,多位微信印度用户透露,在使用时,他们不断被强制登出,且无法重新登录,使用VPN时也依然会被登出。

  • 好分期将全方面服务融入生活

    随着互联网经济的完善,人们收入水平的提升,网购的一站式便捷服务,人们现在也开始追求将优质的购物体验和其他方便生活的功能结合起来,去实现生活的更多可能。而好分期就在这样的期待中出现了。我作为好分期的忠实用户,也确确实实感受到了它的便捷与优质。首先来介绍一下好分期吧!它是北京微财科技有限公司旗下运用的一款分期平台,不仅有现金借贷分期服务,还有属于自己的商城,可以线上分期购物。总之就是能够为用户提供便捷

  • 荣耀消费者专属服务热线即将上线 荣耀服务再上台阶

    2020年8月1日起,荣耀消费者专属服务热线950802将正式上线,提供7*24小时服务。消费者可拨打950802咨询荣耀产品相关问题。本次热线切换的背后是荣耀服务的再度升级。原先,荣耀品牌和华为品牌共享一个终端消费者服务热线(950800)对用户进行服务。但本次切换后,950802将成为专门为荣耀消费者提供服务的热线,这是华为在消费者业务领域进一步落实双品牌战略,更好的服务消费者新的里程碑。目前,荣耀已经实现了线上线下全面覆盖式服

  • 榕树贷款:持续优化平台服务功能 提升金融服务质效

    随着金融经济的发展,金融服务平台的重要性日益得到重视。作为服务、支持中小微企业发展的金融创新举措,各地不断推出省级金融服务平台,助力实现资金供需双方的智能匹配,提升融资效率,解决中小微企业融资难、融资贵难题,助力企业复工复产。 以安徽为例,安徽省持续优化省中小微综合金融服务平台功能,强化政务信息资源整合,截至目前,平台共完成包括电力、税务、工商等 20 家数据源单位接入, 30 家金融及类金融机构入驻,发

  • 天猫官方服务下月升级 预计50余家旗舰店将完成数字服务系统迭代

    【TechWeb】7月30日消息,阿里巴巴客户体验事业部(简称:阿里CCO)资深专家董锐应邀出席某论坛时透露,8月天猫官方服务将迎来新一轮升级,预计有50余家天猫旗舰店率先完成数字服务系统迭代。董锐直言,2020上半年充满了挑战、变化和不确定性,然而无论外部坏境如何变化,商业世界里一定有一个不变的基石——用户原声。他表示,“我们所有的产品策略、分层运营、解决方案,最终都是为了给消费者最好体验,给商家最好服务,所以我?

  • 独家!微信九宫格「出行服务」内测打车服务,有什么新门道?

    昨天深夜,晓程序观察的小伙伴们正准备洗洗睡了,突然接到一条粉丝微信:“微信九宫格出现出行服务了哎!”随着一阵猛烈的截图,彻底把我们震醒了。

  • Zoom宣布停止向中国提供直接服务 或因老板是华裔

    近日,知名视频会议公司Zoom对外宣布,它们将停止向中国大陆客户出售新产品或提供直接服务,往后只通过第三方合作伙伴为中国的客户提供视频会议服务。不过,它们还表示,上述限制,将不涵盖香港、澳门地区或透过海外公司注册的用户。

  • 后疫情时代,企业服务路往何处

    风起于青萍之末,浪成于微澜之间。海比研究深耕企业服务领域,关注市场变化,聚焦技术变革,响应生态重构,探寻趋势机会。CDEC2020 中国数字智能生态大会暨第十三届中国软件渠道大会召开在即,会上将独家发布《 2020 年企业服务生态发展状况研究报告》,有意企业服务领域者请持续关注。企业服务危中探机当前,全球遭遇新冠肺炎袭击,世界经济陷入衰退。中美关系摩擦不断,美方对中国高新科技企业的打压和禁限毫不掩饰,随着美国单?

  • 微信“支付”页上新“出行服务”

    微信“支付”页中的“腾讯服务”再次更新,近期,聚合车主服务、公交出行等出行场景的“出行服务”陆续面向北京、广州和深圳的用户开放。在开放之前,“出行服务”已经在深圳进行灰度测试。未来,这个服务入口逐步向全国用户开放。根据官方介绍,“出行服务”小程序是腾讯智慧出行推出的一站式综合性出行服务平台,涵盖车主服务、公共出行服务、打车等全出行场景服务,不同的用户群体提供不同的服

  • 微软旗下游戏Minecraft拟从亚马逊云服务转移到自家Azure云服务

    7月21日消息,据国外媒体报道,微软计划将旗下游戏《我的世界》(Minecraft)从亚马逊云服务(AWS)转移到自家Azure云服务。《我的世界》是由瑞典游戏开发商Mojang Studios开发的一款沙盒建造游戏,于2009年5月17日发行。2014年11月,微软斥资25亿美元收购了Mojang Studios,也将《我的世界》收入囊中。自2014年起,Mojang Studios就开始使用AWS提供Minecraft Realms(供小团体聚集和玩开放世界游戏的虚拟场所)。但现

  • 世茂服务获红杉中国、腾讯共同战略投资 推动物业服务数字化发展

    2020年5月,世茂服务获得红杉资本中国基金与腾讯的战略投资,投资总金额达2.44亿美金,助力推动世茂服务数字化升级。世茂服务是世茂集团旗下全资子公司,拥有国家一级物业管理资质。重点布局长三角、环渤海、华南与中西部四大核心城市群,覆盖全国25个省90余座城市。有着15年发展历史的世茂服务不断创新物业管理与用户服务模式,逐步转型成为物业管理与生活服务提供商。与优秀科技企业深度合作实现企业数字智慧化升级,同时整合世?

  • 特斯拉质保服务突然缩水?官方回应真相了

    7月6日消息,针对“特斯拉质保服务突然缩水 触摸屏和媒体控制单元减半为2年”这一说法。特斯拉官方回应称,此次调整仅限于自费升级 MCU 配件的质保时间,新车配件质保期不变。据此前

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议
  • 热门标签