image.png

9月23日,又拍云技术沙龙 Open Talk 第36期“看微服务如何漫步云中化繁为简”在北京顺利举办。


Open Talk 是由又拍云发起的系列主题分享沙龙,从2015年开启以来,Open Talk 至今已成功举办 36 期,辐射近 50,000 技术人群。


本次活动特邀豆瓣首席架构师彭宇、数人云产品总监邱戈川、又拍云系统开发高级工程师莫红波、华为技术专家姜宁四人作为嘉宾,为观众带来了在微服务自动伸缩落地、高并发微服务平台实践、CI / CD 在又拍云实践、微服务场景下的数据一致性解决方案的分享。本次活动吸引了近160 余位开发者积极参与并引发大家的热烈讨论。

微服务自动伸缩,如何通过无状态服务降低运维成本?

image.png

豆瓣首席架构师彭宇


当一个公司拥有众多的网站和 App 时,要如何高效的对所有的 App 进行产品服务,提高性能与可用性。


豆瓣首席架构师彭宇以在豆瓣运营的众多产品和 App 为例,向观众讲解了 DAE scale 模型的实现方式,以及如何通过它提高服务器的利用率以及运维自动化,减少人工重复性操作。


首先是 DAE scale 模型的运用,它是一个 git repo 映射到  DAE 平台上的资源分配、调度、计费的逻辑集合,是全局唯一且互相独立的,通过 thrift/pidl/http RPC 相互调用的。对于 web/thrift/pidl online service 而言,它是支持 multi-instances。并且由于每个 App 资源分配不均等,不指定具体数字,只做范围限制。


其次,豆瓣 DAE scale 模型是一个比较简单的多进程模型,每个请求是同一个进程来处理的,整个系统可以理解为 worker 的总数和应用服务处理能力直接相关。并且在它上面有一个 Node 物理节点概念,某些节点部署于单一 App 而某些节点可能会部署160+个 App。


第三在 Node 之上还有一个叫做 Pool 的节点组合概念,Pool 与节点是1对多关系,实现 Node 的分组管理与隔离,同时 Pool与应用是多对多关系。


第四 Scale 的应用策略的核心诉求点是调整单个 app-instance 的 workers 总数,并按照某种规则分发到具体节点上。在实现细节上 vip apps 与普通 Apps 分离,用 ThreadPool 做并发执行,同时若 App处于 stage0 上线,需要额外进行处理。然后 App scale 是 5min 一周期执行的,但如果 scale cron mq 异常,导致 cron 任务积压,会通过与末次执行时间做检测,避免短期多次执行,引发scale 颠簸。

基于消息的微服务平台设计与实践

image.png

数人云产品总监邱戈川


企业如何将系统架构平滑演进到微服务架构,如何应对互联网业务的冲击?本次分享会数人云产品总监邱戈川为观众带来了基于消息的微服务平台设计与实践的分享。


从业务/数据的复杂程度高,团队规模急剧扩大,以及需要足够弹性应对大流量大并发等问题出发,向观众讲解了当前互联网企业面临的业务模式、业务开发、用户行为的变化。在这些变化的情况下,运维需要做到全天候值守,在线升级,快速响应。


接下来,邱戈川还阐述了传统企业的微服务如何起步,以及不同业务场景下的适配架构等等。微服务支持高并发平台需要做到简易开发、简单维护、分级管理,同时做到高可用、分片并发处理以及高吞吐和数据无丢失。做到统一配置、统一监控以及统一管理。


image.png

又拍云系统开发高级工程师莫红波


近两年,微服务概念近两年来非常火,正在慢慢改变 DevOps 的思路。微服务架构把一个庞大的系统拆解开来,每一个组件变得更加独立自治,松耦合。但是,同样也伴随着部署单元的粒度越来越小,交付效率要求越来越高。此时一套高效的、灵活的、高可用的 CI/CD 系统就很关键。所以说 CI/CD 是微服务架构下必不可少的一部分。这方面的开源项目跟工具有很多,比如 Jenkins、Github 默认支持的 Travis、以及 GitLab CI。 


本次分享莫红波讲师先从GitLab 官方推荐的 WorkFlow 的入手,解释了 CI/CD 需要完成的事情。首先由研发完成需求提交代码到 GitLab,GitLab 触发一次 Build,构建好服务,然后开始跑单元测试集成测试,等测试结果通过了,再由负责该项目的同学进行 CodeReview,灰度发布,正式部署到线上。


接下来,莫讲师向观众介绍了如何使用 GitLab CI 。在使用 GitLab CI 首先需要注册 Runner ,再在项目中增加 gitlab-ci.yml 的 CI 配置文件。

如何在解决数据一致性问题?

image.png

华为技术专家姜宁


在微服务时代,提倡微服务都是自制的,所以每个服务数据库都是独立的,在没有共享的情况下很难访问,那么在进行业务处理时要如何保证同时成功或同时失败呢?


来自华为的技术专家从数据一致性的起因切入,深入浅出的讲解了数据一致解决方案。在单体应用中由于所有模块 (A/B/C) 使用同一个数据库,数据一致性通过数据库 transaction 保证。但是在微服务场景下,每个微服务的数据库为私有,而且数据库选型也可能不同,导致数据一致性无法通过数据库保证。


在这种情况下,需要将解决方案分成两部分来解决此问题,首先是两阶段提交,以及通过事件驱动或 TCC 确认来做到。之后姜讲师介绍了 Saga,并且将复杂的业务拆分成很多小的业务,然后将正常的业务通过一个个执行下去。


如果您错过了本次在首都干货满满的分享会,不要着急,十月份又拍云 Open Talk 将在上海和北京举行“进击的微服务架构”分享活动,千万不要再错过了哦!

image.png