视觉中国:基于容器云的同城双活微服务架构上云实践

简介: 本文正在参加阿里云「最佳上云实践」征文大赛(https://yq.aliyun.com/activity/150),欢迎届时给我们投票 视觉中国集团(Visual China Group)创立于2000年6月,是中国领先的视觉影像产品和服务提供商。

本文正在参加“最佳上云实践”评选,来给我们投票吧:https://yq.aliyun.com/activity/158(编号7)

视觉中国集团(Visual China Group)创立于2000年6月,是中国领先的视觉影像产品和服务提供商。视觉中国集团是以“视觉创造价值,视觉服务中国”为愿景的A股唯一互联网文化创意上市公司(股票代号000681,股票简称:视觉中国)。视觉中国集团以“视觉内容与服务”、“视觉社区”和“视觉数字娱乐”三大业务板块为核心,拥有中国最大的视觉内容互联网版权交易平台,同时为国内的主题公园、城市综合体提供领先的数字娱乐整体解决方案。旗下包括华盖创意(Getty Images China)、汉华易美(China Foto Press)、东星娱乐(TungStar)、视觉ME社区(shijueme)、艾特凡斯(Advance)等业界著名品牌。集团拥有近万名签约摄影师和艺术家,并同海内外数百家图片社、影视机构、版权机构广泛合作,为媒体、企业主、广告公司等各类客户提供专业的图片、影视、音乐、特约拍摄、创意众包、视觉化营销等一站式服务。  

选择云平台 

视觉中国集团目前有分布在北京市各区的5个机房,我们的应用分布在这五个机房,数据间调用复杂且低效,运维维护成本高,每年的预算更是给企业带来一定的负担。为了摆脱这种模式我们决定云化,考察了腾讯云,华为云,ucloud等厂商,最后选择了更能切实解决我们问题且更值得信赖的阿里云平台。

我们采用了基于阿里容器云的同城双活微服务架构(consul+template+registrator),这样既能保证服务的高可用,也在CI,CD方面有所作为。使用到的产品有ECS,RDS,OSS,REDIS,消息通知服务,DATAV,QUICKBI,切图服务,RAM,容器云,云盾,SLB等十几种。

迁移上云 

我们首先进行线下实体机房的微服务的搭建及测试,确保服务可用后进行云化的考量。整个应用迁移过程分为几个步骤:

  • 阿里云资源申请。包括ecs,rds及oss等
  • 容器云测试。简单搭建几个docker测试可用性
  • 部署微服务。基于consul+template+registrator进行部署
  • 代码部署。把jar包等通过jkenins进行部署
  • 功能测试。
  • 性能测试。
  • 灰度发布。A/B test
  • 部分应用迁移。
  • 观察期
  • 整体业务上线
  • 观察期
  • 迁移完毕

整体交付完成之后,我们的CI、CD基本上做了实践,研发发布代码无需经过运维干涉,自动发布,自动部署一键完成。 

云端架构解析

ebf2c55b0c3af2fd70e2098328d9721c7bc7264c


架构要点解读:

  1. 容器集群是Region级别的服务,集群内可以包含多个可用区的ECS。
  2. 容器服务支持将同一个服务的容器调度在不同的可用区(zone)里,这是通过编排模板中的availability:az=xx标签来实现,具体参考:https://help.aliyun.com/document_detail/26018.html?spm=5176.doc26086.6.149.VT2kDs
  3. SLB本身具有跨机房高可用特性,使用主、备在不同可用区的SLB类型即可。

整体架构就是基于容器云的同城双活架构,其实我们还有异地灾备。

交付采取镜像的交付方式,gitlab上传代码后通过jenkins进行打包操作,镜像交付到开发环境,功能验证没问题后,gitlab合并代码到test环境镜像交付后进行test环境的功能及性能测试。

最后将镜像推送至生产环境,生产环境采取双consul多数据中心模式,可用区A连接位于A区的consul master,同时将注册信息同步至位于可用区B的consul master,这样保证多区的微服务集群高可用。

两个区共用基础资源,RDS通过DTS同步至测试环境,测试环境和dev环境共用一套RDS。我们的架构在满足持续交付,持续部署的同时也满足了高可用的需求,每个微服务都是集群,这样基于容器层,ECS层,consul层,微服务层,任何节点出现问题对用户都是不可见的,实现了高可用。 

上云前后分析对比

  1. 成本上可以做到有效的控制,随时做到服务的升降级。
  2. 阿里云帮助我们实现了故障主机的实时迁移,保障了业务的可用性,运维也比较省心。
  3. 在安全方面基于云盾和先知等产品的安全防护可以做到多层次的保障,极大提高了我们的服务安全性。
  4. 监控方面也很细致和全面,支持自定云完全满足我们的需求。成本方面可以随时关注费用中心,自行进行分析。
  5. 效率方面,因为是基于容器云的微服务架构,这方面也有非常大的改善。

以上几点任何一点在传统机房的模式下想做到全面和高效都是比较困难的,这也是我们为何进行云化的原因。 

上云遇到的问题及解决方法

遇到的问题还是比较多的,我列举几个典型的问题。

  1. 中美oss同步大文件有数据重传问题及日常传输方案。稳定性建议采取高速通道,日常传输采用multipart分块实现
  2. 云端支持批量上传数据的压缩及打包下载解压缩功能。通过udf实现
  3. oss子账户授权后只能看到自己目录内容。通过ossfs实现
  4. 跨境oss数据接收后无法确实该删除的文件。通过跨境消息通知机制实现
  5. 跟进不同的图片主题进行切图参数的相关匹配。通过智能识图完成
  6. 数据大屏展示。通过datav和quickbi实现
  7. ddos攻击防护。通过高防ip及waf防火墙实现
  8. 容器云日志采集和查看。通过sls实现

 

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2055 10
|
4月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
7月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
618 0
|
10月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
544 12
|
12月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
622 1
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
825 17
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
614 1
|
12月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。