11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

利用 UK8S 落地微服务,加速元年科技业务迭代

  • 2019-11-10
  • 本文字数:2425 字

    阅读完需:约 8 分钟

利用UK8S落地微服务,加速元年科技业务迭代

“使用 UK8S,开发者可以像使用普通云服务器一样迅速搭建 K8S 环境。在享受 K8S 带来的便利的同时,能够让开发人员集中注意力在业务实现的细节,而不必在基础架构搭建上浪费太多的精力。UCloud 为此提供的专业、快速的服务和响应机制帮助我们成功的将整个环境从自建 K8S 平滑迁移到 UK8S。UCloud 的 UK8S 如同其它的基础服务一样稳定,使我们相信‘让专业的人做专业的事’,选择 UCloud 作为我们的云服务提供商是我们在技术选型上做出的正确选择之一。”

—元年科技 CTO 杨熠


元年科技业务使用 UK8S 的效果

业务上引入 UK8S 落地微服务,目的并非是节约云主机资源,而是节省人工成本,使得开发人员可更专注于业务实现;可降低系统耦合度、研发难度,从而更高效合理的调度主机集群资源;提高团队整体交付效率,实现时间成本的节约,最终转化为业务迭代的加速。


关于元年科技

自 2000 年成立起,一直专注于以管理会计为核心的管理咨询和管理信息化领域,致力于成为“中国管理会计领航者”,帮助中国企业实现财务转型和管理精细化。


元年科技的专业服务和软件平台涵盖企业运营以及管理的四个层面:以管理会计为核心,支持企业分析模拟、决策支持和管理控制;以财务共享为核心,推动财务转型、提升企业运营效率;基于商业智能平台和大数据,实现客户分析、销售分析、运营分析;以企业信息化规划和互联网转型为核心,提供集团管控体系、组织和流程优化等咨询服务。


云快报的业务场景和架构

云快报是元年科技旗下一款商旅及支出管理 SaaS 产品。采用云计算和移动互联网技术开发,凝聚了众多行业、企业费用管理的最佳实践,满足广大企业提升业务能力、规范业务行为、管控业务费用的核心需求,同时集成了同程、艺龙、滴滴、京东等互联网消费平台,将差旅申请、消费和报销流程打通,此外还整合发票查验、智能记账、多种财务接口,让企业的费用管控更高效,更清晰透明。


该产品中的商城业务采用巨石与微服务结合的架构模式,包含商城端以及商城服务端两部分内容。商城端目前仍使用传统巨石结构,也正在改造中,主要负责买卖双方的管理,涵盖商户管理、购物商城、管理后台等服务。由于云快报中接入的商户并未实际在商城中开店,遂引入对接端的概念,完成对远端商户的真实下单操作。


商城用户在购物商城中下单并完成支付后,对接端将订单通过 API 服务提交至商城服务端进行真实下单,商城服务端采用微服务架构,每类服务之间既相互独立又维持协作的关系。此外,针对搜索服务,云快报选择将微服务架构与 Solr 结合的方式,实现供应电商系统中商品的定时同步,以及推送至 Solr 中提供搜索服务。



图:云快报商城业务架构图


引入 K8S,解决业务痛点

微服务架构下,元年科技开发人员发现使用 K8S 比原先云主机部署模式在如下场景中可更为有效的解决问题。


痛点一:新服务的上线以及原有服务的更新过程繁杂

一方面,若要在既有云主机上发布全新的服务,需考虑不同类型语言要求不一致的问题,从基础环境到启动脚本,内容十分零散,整个发布过程相当复杂;另一方面,若要更新已存在的服务,脚本语言可使用热更新,但编译类语言又面临同样的困境。


常规做法是由 nginx 在服务前面做一个负载的代理,人工操作切换负载来保证非中断服务方式的更新,但当服务数量较多时,人工操作负担大。


K8S 下可利用容器技术的自包含自描述解决多种编程语言更新的问题,并实现零散发布内容的整合;此外,使用 K8S 的应用编排能力进行发布,可解决微服务架构下复杂的多应用依赖发布的问题,同时还可降低误操作概率。


痛点二:动态服务迁移操作难度大


图:动态服务迁移示意图


由于云主机资源的限制,为了给特定服务提供资源升级的空间,常常需要动态的将其余正在执行的服务迁移至新的云主机。如上图所示,服务 11 要由 0.5 核 CPU 升级为 1 核 CPU,此时需要把服务 07 和 12 迁移至别的节点中,再对服务 11 进行升级操作。


未使用 K8S 的情况下,为了防止业务中断,通常会将服务 07 和服务 12 在节点 05 中进行部署,更改服务发现后再将节点 02 中资源清除。而 K8S 中只需更改服务 07 和 12 的 nodeSelector,即可将服务 07 和 12 实现迁移,在保障服务不中断的前提下快速满足服务 11 的扩容需求。


痛点三:线上服务健康检查复杂度高

为了保证线上服务的存活,需安装多类别的检测监控软件,安装软件工作量大,并且只能作为报警提醒,无法协助后续处理。


利用 K8S 的健康检查机制,可以通过请求服务的健康检查接口来检测服务的工作状态,并根据响应码判识状态是否正常,若处于非正常状态,K8S 会自动执行 Pod 的销毁重建,保障服务正常工作。


痛点四:服务之间的调用和发现配置工作多


图:服务调用与发现示意图


实际应用中,会需要服务之间的内部调用。但不同环境下,调用相同的服务由于内部 IP 无法固定,需要额外增加多个配置文件,且每个环境下对应一套,服务数量较多时,配置工作繁重。


而 K8S 的服务发现基于 Service 加 DNS 解析实现,完成服务发现的同时具备负载。如上图所示,服务 16 访问服务 18 的时候会先由 K8S 内部的 DNS 来获取服务 18 的 Service 代理 IP,再访问服务 18-proxy。


痛点五:单个服务完全消耗云主机资源

原有的部署模式下,单台云主机上同时运行多个服务,并且没有对每个服务的 CPU、内存以及磁盘 IO 进行限制,导致出现单个服务负载过高,将整台主机资源耗尽,从而主机卡住的情况,此时再扩展新的资源部署服务,整个恢复过程较为漫长。


K8S 中可对服务的 CPU、内存使用量进行限制,有效减少运行在同一台主机上服务资源争抢问题。


由自建 K8S 迁移至 UK8S

元年科技业务中共有两套 K8S 集群,一套是运行在线下内网环境中的自建 K8S 集群,直接使用 Rancher 搭建和管理,另一套运行在 UCloud 公有云环境中,先前也是自建的 K8S 集群。考虑到 UK8S 相较于自建 K8S 集群有如下几点优势,最终选择从自建 K8S 集群迁移至 UK8S。



表:UK8S 与自建 K8S 对比


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/JqN6vw5yh6uykKhz1-agTQ


2019-11-10 23:57386

评论

发布
暂无评论
发现更多内容

Dagger2入门系列一:基础使用,从基础到源码统统帮你搞定

android 程序员 移动开发

Python代码阅读(第53篇):字符串重复拼接

Felix

Python Code 字符串 阅读代码 Python初学者

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土

android 程序员 移动开发

cmake使用教程(一)-起步,移动应用开发就业

android 程序员 移动开发

CountDownLatch 源码分析示例,《Android面试题及解析》分享给大家

android 程序员 移动开发

架构训练营模块七作业-王者荣耀商城异地多活架构设计

李焕之

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土(1)

android 程序员 移动开发

CAS机制详解,android开发基础知识点

android 程序员 移动开发

王者荣耀商城异地多活架构设计

缘分呐

架构设计

云小课|大数据时代的隐私利器-GaussDB(DWS)数据脱敏

华为云开发者联盟

EI智能体 DWS数据脱敏 数据仓库服务GaussDB(DWS)

cmake使用教程(三)-安装,程序员去大公司面试

android 程序员 移动开发

esp8266~lwip突破MTU最大1500限制,apt编译时期自动生成代码&动态类加载

android 程序员 移动开发

SAP云平台运行环境Cloud Foundry和Neo的区别

Jerry Wang

云平台 SAP 11月日更

kubernetes系列随笔02:docker技术原理

谦寻

Docker Kubernetes 容器

Coroutine 基本原理,吃透这份阿里P8纯手打Android面经

android 程序员 移动开发

BAT常见Android面试20题详解,小白看完都会了

android 程序员 移动开发

Code Review&编程习惯(1),安卓网络通信开发

android 程序员 移动开发

Context都没弄明白,还怎么做Android开发?,靠着这份面试题跟答案

android 程序员 移动开发

BottomSheetDialog 使用详解,设置圆角、固定高度,移动开发工程师

android 程序员 移动开发

Dalvik 和 ART 有什么区别?深扒 Android 虚拟机发展史,真相却出乎意料

android 程序员 移动开发

DialogFragment探索与实现,android高级工程师面试题

android 程序员 移动开发

测试用例又双叒叕失败了,NLP帮你来分析

华为云开发者联盟

软件 测试 nlp 测试用例

DialogFragment探索与实现(1),2021年是做安卓开发人员的绝佳时机

android 程序员 移动开发

Flutter 1,基于h5框架的移动app开发

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面,移动客户端开发岗面试题

android 程序员 移动开发

Canvas加动画,实现火柴人跳绳效果,2021Android开发面试解答

android 程序员 移动开发

Python爬虫私活,代码公开!采集了20000+漫展历史数据,一言不合就开源

梦想橡皮擦

11月日更

FFmpeg之OpenGL绘制与Native Window绘制(五),安卓面试题及答案2020百度

android 程序员 移动开发

cmake使用教程(三)-安装(1),kotlin入门项目

android 程序员 移动开发

cmake使用教程(九)-关于安卓的交叉编译,腾讯&字节&爱奇艺&网易&华为实习面试汇总

android 程序员 移动开发

Code Review&编程习惯,安卓工程师面试题

android 程序员 移动开发

利用UK8S落地微服务,加速元年科技业务迭代_云计算_元年科技&UK8S_InfoQ精选文章