• 产品
  • 方案
  • 客户
  • 服务
  • 活动
  • 关于
App 文档 备案
  • 退出
  • 快速注册
  • 登录控制台
快杰云主机 全球网络加速 UCloudStack 产品定价 产品动态
  • 基础云计算
    云主机基础网络
  • 数据库与大数据
    Hadoop数据仓库
  • 人工智能
    大模型产品
  • 安全、开发与运维
    DDoS防护堡垒机
  • 混合云与私有云
    私有云混合云
  • 云通信与企业应用
    短信服务域名服务
计算
  • 云主机 UHost
  • 裸金属云主机 UPHost
  • GPU云主机 UHost
  • GPU裸金属云主机 UPHost
  • 私有专区 UDSet
  • 轻量应用云主机 ULightHost
  • 容器云 UK8S
云上网络
  • 私有网络 UVPC
  • 负载均衡 ULB
  • 云解析 UDNS
混合组网
  • 云联网 UGN
  • 智联 UWAN
  • VPN网关 IPSecVPN
  • 高速通道 UDPN
接入网
  • 外网弹性IP EIP
  • 共享流量包 UTP
云分发
  • 云分发 UCDN
存储
  • 云硬盘 UDisk
  • 文件存储 UFS
  • 文件存储 UPFS
  • 对象存储 US3
  • 磁盘快照服务 USnap
  • 数据方舟 UDataArk
网络加速
  • 全球动态加速 PathX
  • 应用仓库加速 UAAA
视频服务
  • 云直播 ULive
边缘计算
  • 边缘计算虚拟机 UEC-VM
数据库
  • 云数据库 UDB MySQL
  • 云数据库 UDB MongoDB
  • 云数据库 UDB PostgreSQL
  • 云数据库 UDB SQL Server
  • 云内存 UMem Memcache
  • 云内存 UMem Redis
  • 分布式NewSQL数据库 TiDB
大数据与中间件
  • 托管Hadoop集群 UHadoop
  • ES服务 ElasticSearch
  • Kafka消息队列 UKafka
数据仓库
  • 数据仓库 UDW Greenplum
  • 数据仓库 UDW Clickhouse
通用人工智能
  • AI图像处理平台 PICPIK.AI
  • 模型服务平台 UModelVerse
      安全防护
      • WEB应用防火墙 UWAF
      • DDoS攻击防护 UDDoS
      • 主机入侵检测 UHIDS
      安全合规
      • 堡垒机 UAuditHost
      • 等保咨询 UDBCP
      • 数据安全解决方案 UDSS
      • 安全屋 SafeHouse
      监控与运维
      • 云监控 CloudWatch
      • 资源监控 UMon
      • 网络拨测 UNDT
      多云与迁移
      • 数据传输服务 UDTS
      混合云
      • 混合云 UHybrid
      • 金翼专区 UXZONE
      • 多云管理平台 UCMP
      • 天镜·智能告警 SkyM Alert
      私有云
      • 私有云 UCloudStack
      • 智能大数据平台专业版 USDP
      • 超融合一体机 Utrion
      • 统一存储 UCloudStor
      • 信创云 UXC
      云通信
      • 语音消息服务 UVMS
      • 短信服务 USMS
      • 视频短信 ISMS
      • 短链工具 USLK
      • 企业名片 UCNAM
      企业应用
      • 域名服务 UDNR
      • SSL证书管理 USSL
      • 行业解决方案
        医疗 教育行业
      • 通用解决方案
        云备份 高可用
      零售
      大数据及BI | 线上线下一体化营销 | 云原生  
      政府
      政务云 | 政府数据开放 | 高性能计算 | 智慧农业 | 智慧养老
      出海
      游戏出海业务 | 电商出海业务 | 区块链技术
      金融
      信创云 | 数据流通 | 云原生 | 视频云 | 安全
      教育
      云网融合 | 智慧校园 | 教学实训平台 | 高性能计算
      工业
      工业数据采集应用 | 数字孪生 | 视频云 | 智慧运维
      智慧物业与园区
      智慧社区 | 智慧养老 | 智慧楼宇 | 智慧物业 | 物联网
      智能汽车视频云
      抗弱网,低延迟 | 全面数据安全保障 | 多种互动模式
      云游戏
      大作随玩 | 电视盒子 | 直播客户 | 游戏内容
      智慧农业
      数字化生产管理 | 物联网LoRa通讯技术 | 土壤质量标准化技术
      远程桌面云
      医联体 | 生物制药
      智慧楼宇
      考勤管理 | 人脸门禁 | 智能迎宾 | 访客管理
      智慧能源
      物联网平台 | 物联网边缘网关 | 用能分析 | 能效诊断
      医疗
      医院信息化云基石 | 医院混合云容灾备份 | 区域医疗健康云
      人工智能
      图像识别服务 | OCR文字识别 | 视频处理
      海量计算
      图片处理 | 基因测序 | 视频转码 | 科学计算
      安全
      网站防护 | 游戏防护 | 主机防护 | 内部运维风险管控
      高可用
      具备高可用架构和冗余能力的业务 | 具有较高可靠性、业务连续性的业务
      大数据
      开箱即用 | 智能运维 | 一站式服务 | 资源独享
      云备份
      云灾备场景 | 云归档场景
      物联网
      智能设备 | 共享租赁 | 智能制造 | 智慧物业
      云智能存储网关
      医疗PACS影像上云 | 视频安防文件上云
      视频云
      长短视频点播 | 娱乐/电商直播 | 互动课堂
      智慧运维
      祼机纳管 | PingMesh | 告警治理 | 多云纳管
      边缘云
      容器虚机共存 | 多级地域管理 | 边缘自治 | 开放接口
      混合云
      互联网金融行业 | 银行业金融机构 | 证券行业
      • 加入合作伙伴体系
        UCloud秉持开放、合作、共赢的态度,赋能伙伴为用户提供更加优质的服务。
      教育
      在线教育 | 培训机构 | 教务机构 | 中小学
      金融
      银行 | 证券 | 互联网金融
      游戏
      手游 | 端游 | 游戏全球服
      出海
      电商 | 游戏
      政务企业
      政务 | 传统企业 | 媒体
      新零售
      电商 | 门店 | 商超 | 品牌商
      视频直播
      娱乐直播 | 赛事直播 | 课堂直播 | 短视频
      医疗健康
      传统医院 | 基层医疗机构 | 在线医疗
      AI+IoT
      AI | 物联网 | 车联网 | 智能制造
      技术生态
      • 优云精选
      渠道伙伴
      • 代理商管理
      • 促销活动专区
        春季出海大促
      • Think in Cloud
        2020 2019 2018
      • 更多专题
        “快杰”云主机
      促销活动专区
      • 春季出海大促

      • 快杰主机特惠

      • 香港特惠专区

      • 游戏联机服务器

      • 跨境出海特惠

      • 全球专线服务

      • GPU特惠

      • CDN特惠

      • 短信特惠促销

      • 私有云

      • 托管/混合云

      • 裸金属服务器

      • 轻量专题活动

      • 推荐有礼

      Think in Cloud
      • TIC 2020

      • TIC 2019

      • TIC 2018 12月

      • TIC 2018 5月

      • TIC 2015

      更多专题
      • 快杰 SERIES

      • ARM云主机

      • 快杰内存型

      • 快杰共享型

      • 乌兰察布促销

      • AMD云主机

      • “快杰”云主机

      • 快杰O SR

      关于UCloud
      • 公司介绍
      • 联系我们
      • 加入我们
      • 开源工作
      新闻资讯
      • 最新动态
      • 安全资讯
      • 产品动态
      投资者关系
      • 实时行情(沪市)
      • 公司公告(沪市)
      • 联系方式(董事会办公室)
      保障体系
      • 安全中心
      • 数据保障(GDPR)
      服务体系
      • 开发者资源
      • 技术支持
      • 运维服务
      • 服务支持计划
      • 专家服务
      • 等保合规服务
      • 备案服务
      社区与培训
      • 社区Beta版
      • 登录
      • 控制台
      产品目录
      计算
      • 云主机 UHost
      • 裸金属云主机 UPHost
      • GPU云主机 UHost
      • GPU裸金属云主机 UPHost
      • 私有专区 UDSet
      • 轻量应用云主机 ULightHost
      • 容器云 UK8S
          存储
          • 云硬盘 UDisk
          • 文件存储 UFS
          • 文件存储 UPFS
          • 对象存储 US3
          • 磁盘快照服务 USnap
          • 数据方舟 UDataArk
          网络加速
          • 全球动态加速 PathX
          • 应用仓库加速 UAAA
          云分发
          • 云分发 UCDN
          视频服务
          • 云直播 ULive
          • 实时音视频 URTC
          边缘计算
          • 边缘计算虚拟机 UEC-VM
          数据库
          • 云数据库 UDB MySQL
          • 云数据库 UDB MongoDB
          • 云数据库 UDB PostgreSQL
          • 云数据库 UDB SQL Server
          • 云内存 UMem Memcache
          • 云内存 UMem Redis
          • 分布式NewSQL数据库 TiDB
          大数据与中间件
          • 托管Hadoop集群 UHadoop
          • ES服务 ElasticSearch
          • Kafka消息队列 UKafka
          数据仓库
          • 数据仓库 UDW Greenplum
          • 数据仓库 UDW Clickhouse
          安全防护
          • WEB应用防火墙 UWAF
          • DDoS攻击防护 UDDoS
          • 主机入侵检测 UHIDS
          安全合规
          • 堡垒机 UAuditHost
          • 等保咨询 UDBCP
          • 数据安全解决方案 UDSS
          • 安全屋 SafeHouse
          监控与运维
          • 云监控 CloudWatch
          • 资源监控 UMon
          • 网络拨测 UNDT
          多云与迁移
          • 数据传输服务 UDTS
          混合云
          • 混合云 UHybrid
          • 金翼专区 UXZONE
          • 多云管理平台 UCMP
          • 天镜·智能告警 SkyM Alert
          私有云
          • 私有云 UCloudStack
          • 智能大数据平台专业版 USDP
          • 超融合一体机 Utrion
          • 统一存储 UCloudStor
          • 信创云 UXC
          云通信
          • 语音消息服务 UVMS
          • 短信服务 USMS
          • 视频短信 ISMS
          • 短链工具 USLK
          • 企业名片 UCNAM
          企业应用
          • 域名服务 UDNR
          • SSL证书管理 USSL
          通用人工智能
          • AI图像处理平台 PICPIK.AI
          • 模型服务平台 UModelVerse
          解决方案
          行业类
          • 行业类-零售
          • 行业类-政府
          • 行业类-金融
          • 行业类-出海
          • 行业类-医疗
          • 行业类-教育
          • 行业类-工业
          • 行业类-智慧楼宇
          • 行业类-疫情综合管理系统
          • 行业类-远程桌面
          • 行业类-云游戏
          • 行业类-智慧农业
          • 行业类-智慧物业与园区
          • 行业类-智慧能源
          • 行业类-智能汽车视频云
          • 行业类-新零售
          通用类
          • 通用类-人工智能
          • 通用类-安全
          • 通用类-海量计算
          • 通用类-高可用
          • 通用类-云备份
          • 通用类-物联网
          • 通用类-云智能存储网关
          • 通用类-大数据
          • 通用类-视频云
          • 通用类-智慧运维
          • 通用类-边缘云
          • 通用类-混合云
          文档中心
          客户案例
          教育
          金融
          游戏
          移动社交
          政务企业
          新零售
          视频直播
          医疗健康
          AI+IoT
          更多案例
          关于我们
          公司介绍
          新闻资讯
          最新资讯
          U刻 博客
          开源工作
          服务
          开发者资源
          安全中心
          数据保障(GDPR)
          技术支持
          运维服务
          等保合规服务
          备案服务
          公告
          媒体动态 从Spring Cloud到UCloud UK8S的微服务迁移实践

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

          文 / InfoQ

          2020-04-10

          写在前面

          要出发周边游(以下简称要出发)是国内知名的主打「周边游」的在线旅行网站,以国内各大城市为中心,覆盖其周边旅游市场,提供包含酒店、门票、餐饮等在内的 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领域持续深耕,致力于搭建生产级可用的容器服务平台。

          注册享活动套餐

          售前咨询

          4000188113转1

          售后咨询

          4000188113转2

          网站备案咨询

          4000188113转3

          公安备案咨询

          4000188113转6

          返回顶部
          Copyright © 2012- UCloud
          优刻得科技股份有限公司
          Tel:4000188113

          UCloud与云服务

          • 公司介绍
          • 加入我们
          • 素材下载
          • 域名供应商:新网

          快速入口

          • 文档中心
          • 安全中心
          • 安全应急响应中心
          • UCloud举报平台
          • 12321举报中心
          • 互联网信息举报
          • UCloud App

          常见问题

          • API相关
          • 登录相关
          • 服务相关
          • 备案相关
          • 计费相关

          用户俱乐部

          • 用户社区
          • 推荐有礼
          沪公网安备 31011002000058号 | 沪ICP备12020087号-3
          微信二维码
          长按保存图片,在微信中扫描该二维码

          微博

          Tel:4000188113

          Copyright © 2012- UCloud
          优刻得科技股份有限公司