海信聚好看矫恒浩:构建异地双活混合云,利用公共云应对流量突增

简介: 通过构建异地双活混合云,聚好看为用户提供就近访问能力,提升电视用户使用体验~

引言

2021年10月22日,在云栖大会的《一云多形态部署最佳实践》分论坛,海信旗下的聚好看科技云原生团队负责人矫恒浩,发表了主题为“聚好看云上双活架构,驱动OTT用户价值提升”的演讲,为大家分享了聚好看科技在异地双活、混合云落地过程中的经验

以下为矫恒浩演讲精华内容。

image1-聚好看矫恒浩.jpeg

图:聚好看科技云原生团队负责人矫恒浩


聚好看科技成立于2016年,是海信旗下的家庭互联网科技公司,主营业务为互联网电视等智能终端云平台及智能应用的技术研发与运营,我们有六大数据中心。聚好看科技也是OTT行业里面的首家科技独角兽企业,持续为家庭用户提供场景化的智慧生活服务。我们企业的愿景是致力于成为一流的家庭互联网科技公司。


01 私有云同城双活架构

面临的三大挑战


2016年以前,聚好看业务主要是部署在本地IDC,机房在北京,为用户提供互联网电视的云服务;2016年,公司构建了同城双活的基础设施,初步具备了同城容灾的能力;2017年,公司开始自研基于容器和K8s技术的云原生的平台,我们内部项目名称是JuCloud;2018年,我们用了一年时间把最核心的1000多个微服务迁移到了云原生平台之上,阶段性地实现了云原生的转型。


云原生落地之后,海信聚好看的运维效率提升了10倍以上,大大解放了运维小伙伴的生产力,版本迭代节奏基本上由之前的1-2个月提升到了1-2周。


但我们发现,原先私有云同城双活架构的方式,不能够应对业务的发展和业务规模的提升,我们面临着如下三大挑战


image2-三大挑战.jpeg


1. 无法应对城市级灾难私有云同城双活的架构没有办法应对城市级的灾难,当发生大面积的停电,或者运营商大面积断网,同城双活是没有办法很好应对的。


2. 用户覆盖非常有限:同城双活的两个数据中心都坐落在北京,覆盖面积是非常的有限。大家都知道,我们国家幅员辽阔,海信电视的用户又遍布全国各个省份,一些距离北京比较遥远的省份的访问时延略高,尤其是一些小运营商用户,访问的成功率略低一些,一定程度上影响这些用户的体验


3. 很难应对流量的突增:针对互联网电视的用户,尤其是国内电视用户每年的春节都有收看央视春晚的习惯,这个时候会给我们电视云端系统带来非常大的流量的冲击。每年基本上除夕流量高峰期大概是平时高峰期的5倍,也包括国庆阅兵,基本是平时流量的3倍。显然我们不可能在私有云机房准备等量的服务器来承载突增的流量。只能说,通过我们的研发团队用一些软件技术的手段来应对,但研发团队为此付出了非常大的人力成本。


02 构建异地双活混合云

利用公共云弹性应对激增流量


2018年,海信聚好看开始构思通过异地双活混合云的方式来解决上述的这些挑战。基于此,提出了如下的技术目标:


1. 两个机房能够部署在两个有一定距离的数据中心,而且是以混合云的方式部署,第二个机房是公有云机房,通过这样异地双活的部署方式,就可以应对城市级的故障


2. 两个机房能够对用户供就近访问的能力,提升一部分用户的使用体验


3. 借助公有云强大的快速弹性伸缩的能力,来应对流量的冲击


image3-混合云架构.png


最终,我们构建了异地双活混合云架构,在本地IDC私有云中,分为了五层:

  1. 路由层,电视的流量进入到我们全局的负载均衡,就近路由到两个机房,当然网关侧进行流量的纠正;
  2. 业务层,因为在2018年已经实现了云原生的转型,所以业务全部以容器的方式部署,原则是业务的容器实例API调用必须在本地机房完成调用的闭环,因为跨机房调用会有时延的增加;
  3. 缓存层和数据层,希望做到远程数据高速同步;
  4. 平台层,是聚好看自研的JuCloud云原生的平台,它具备多云管理、多云协同的能力,借此通过在PaaS层的能力屏蔽公有云和私有云异构数据中心的差异。


03 两大经验

两级弹性伸缩+就近访问


两级弹性伸缩,成本下降20%


聚好看用户绝大多数都是电视的用户,下图是一天的0-24点流量的变化,基本上从深夜开始到第二天的上午8、9点,流量其实非常低。但在每天中午,以及晚19:30-20:00左右的时间段会迎来流量高峰。


image4-业务流量周期性变化.png

图:聚好看业务流量周期性变化(1天)


我们提出来这样一个目标:4分钟扩容1000容器实例,这样一来对我们ECS的要求,就是需要在1分钟以内扩容100台高规格的虚拟机,加入到底层的K8s的集群。


经过实测,阿里云的ECS服务可以做到40秒之内扩容100台高规格的虚拟机,很好支撑了这样一个技术目标的达成。最后,经过我们实测验证,我们在3分钟左右就能够完成1000个容器实例的扩容就绪,包括健康检查的通过,能够对外提供我们的业务。借助阿里云ECS的弹性能力,实现了我们降成本

image5-最终成效.jpeg


刚刚讲到,我们是一个自研的PaaS层,我们PaaS和IaaS构成了两级的弹性伸缩,使得我们做到了ECS成本下降了20%,但是我们觉得这样还是仍然不够,我们正在构建基于机器学习的时序数据预测的能力,希望通过对线上1000多个微服务在过去一段时间流量变化的学习,能够预测流量在未来10分钟、半个小时、1个小时之内的变化,能够用小步快跑的方式来实现容量的伸和缩。


GSLB双机房就近路由提升体验


因为海信电视用户遍布全国,为了更好的服务全国各地用户,我们要求双活路由层必须具备就近访问的能力,因此我们研发了基于HTTP-DNS的GSLB全局负载均衡器,GSLB自身也是异地多云部署,GSLB的解析能力嵌入到了电视终端SDK中,当电视终端解析域名时,优先通过GSLB完成域名解析,这样一来,我们相当于在DNS层面具备了灵活的、可以基于业务进行自定义的机房调度的能力,我们把北方一些省份的用户切入到我们的北京私有云,南方一些省份的用户切入到阿里云,最细力度可以实现地级市的调度,实现就近访问


当然也可以基于业务进行切流,比如,我们想把某个地区的匿名用户,某个电视机型用户切入到特定机房,传统DNS是很难做到这一点的。而且GSLB上线后也顺便解决了我们DNS劫持的问题。


04 未来2-3年之内,核心业务

完全迁移到公共云

整个异地双活混合云架构落地之后,将会有三个收益。

  1. 做到单机房的故障能够快速的进行切换,以保障我们的用户的体验
  2. 基于地理位置路由,让用户就近访问
  3. 借助ECS强大的弹性伸缩的能力,来应对流量的变化

我们希望能够在未来基于智能预测的方式,可以做更激进的弹性伸缩的策略,同时构建异地多活的平台,借助阿里云多Region的能力,在全国部署更多的数据中心,给用户提供更弹性的服务。在未来2-3年之内,将聚好看的核心业务完全迁移到公有云上。


PS:福利时间到——2021云上架构与运维峰会将于11月6日在北京举办,点击我要报名,了解峰会详情,免费领取门票哦~


相关文章
|
4月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
上下文选择器(迭代选择器):基于祖先或同胞元素选择一个元素 ID和类选择器:基于id#和class的属性值进行选择元素。 属性选择器:基于属性的有无和特征进行选择。 ①上下文选择器: 上下文选择器的语法格式:标签1 标签2{属性:值;} //注意:组合选择器和上下文选择器的区别,组合选择器以逗号隔开, 上下文选择器以空格隔开 ②特殊的上下文选择器 子选择器> : 语法格式:标签1>标签2 解释说明:标签1和标签2
317 1
|
开发工具 git
|
4月前
|
人工智能 文字识别 监控
|
11月前
|
JavaScript Java 开发者
Spring事务失效,常见的情况有哪些?
本文总结了Spring事务失效的7种常见情况,包括未启用事务管理功能、方法非public类型、数据源未配置事务管理器、自身调用问题、异常类型错误、异常被吞以及业务和事务代码不在同一线程中。同时提供了两种快速定位事务相关Bug的方法:通过查看日志(设置为debug模式)或调试代码(在TransactionInterceptor的invoke方法中设置断点)。文章帮助开发者更好地理解和解决Spring事务中的问题。
524 7
|
监控 安全 测试技术
深入理解并实践微服务架构中的服务治理
深入理解并实践微服务架构中的服务治理
643 1
|
Linux 数据库
linux 全局搜索文件
在 Linux 系统中,全局搜索文件常用 `find`、`locate` 和 `grep` 命令。`find` 根据文件名、类型、大小、时间戳等条件搜索;`locate` 通过预构建的数据库快速查找文件;`grep` 在文件中搜索特定文本,常与 `find` 结合使用。选择合适的命令取决于具体需求。
2669 2
|
存储 Kubernetes 容器
k8s创建NFS动态存储
k8s创建NFS动态存储
|
机器学习/深度学习 传感器 安全
【VRP问题】基于遗传算法求解带容量的车辆路径规划问题(优化目标:运输成本)附Matlab代码
【VRP问题】基于遗传算法求解带容量的车辆路径规划问题(优化目标:运输成本)附Matlab代码
|
SQL 安全 前端开发
软件测试指南:从策略到实践
【8月更文第21天】软件测试是为了评估软件的质量并验证其是否符合预期的功能要求而进行的一系列活动。本文将详细介绍软件测试的不同阶段、测试类型、测试策略与计划的制定、以及如何有效地管理与跟踪发现的缺陷。
942 1
|
Ubuntu Shell 索引
在Ubuntu 12.10上安装和使用tmux的方法
在Ubuntu 12.10上安装和使用tmux的方法
503 0

热门文章

最新文章