从微服务应用于技术栈,了解华为云微服务应用
摘要:一个成熟的微服务解决方案产品需要经历足够大的业务量侵袭,才能变得更加成熟和可靠。
云原生时代,随着容器技术、微服务架构思想、产品研发运营模式不断地推陈出新和迅速发展,应用的设计和开发落地门槛已经降低到了历史低点。根据 IDC 的调查研究表明,从 2018 年到 2023 年将有超过 500,000,000 个应用被创建,这个数字是过去 40 年所有创建应用的总和。
另外,在 IDC 于 2020 年 2 月发布的《IDC FutureScape: 全球云计算 2020 年预测——中国启示》中显示,云原生应用所影响的领域正逐渐从互联网走向非互联网,从传统应用升级走向云原生。当下,云原生技术的成熟正极大地影响着个人、企业乃至整个社会的生产生活方式。
在这场应用的变革中,越来越多的应用所有方会将应用基础设施交由更加专业的公有云/混合云服务商进行管理,通过 API 的方式对基础设施进行管理,由服务商提供更加敏捷和无缝的部署管理功能。如此,应用所有方可以将更多的投资及人力投入聚焦到应用本身的业务逻辑设计、开发、运维和体验优化,大大减少了产品上市的时间并得到了更高的可伸缩性,使应用开发的 ROI(投资回报率)最大化。
使用微服务架构构建云原生应用
云原生应用的定义有多种版本,最早为 2015 年 pivital 提出了云原生应用的定义,随后 CNCF 在 2015 年也对云原生应用进行了定义,2018 年进行了重定义,具体定义可以参考 kubernetes-handbook。可以发现自从云原生的概念出现,微服务架构就是云原生应用中浓墨重彩的一部分。
1.1. 使用微服务的场景
构建云原生应用,首先一定是企业或者个人想要最大程度将自己的时间和精力从复杂的底层依赖开发维护中解放出来,集中在业务场景的设计和实现上,并且能够独立解耦的自动化完成应用各个模块的开发落地。这意味着独立开发的某一模块或负责某一单独业务的开发者,会最大程度的利用云厂商提供的 DevOps 工具链完成整个应用开发运维的共同目标,这样大家可以轻松地将应用作为一个松耦合的服务集合快速发布和更新,降低成本的同时也更容易避免单点故障。
1.2. 微服务应用在技术栈中的位置
假设应用所有者已经做好了微服务的业务设计,我们来看看在落地阶段,微服务应用在产品研发和运行中的位置:
红色部分为微服务应用的核心模块,是由应用所有者开发和维护地运行时微服务应用。随着业务的增长,受系统能力影响,为了提高微服务的高可用、可靠性以及韧性,需要对微服务进行治理。常见的治理手段有:负载均衡、熔断、限流、降级、容错和隔离等,篇幅有限这里不加赘述。
黄色部分从左到右代表从 Dev 到 Ops 的技术。首先,选择使用侵入式框架开发服务或者非侵入式网格接入遗留应用或多语言服务。微服务框架可以选择 SpringCloud、Dubbo、ServiceComb 等,服务网格可选择 Istio 等。框架或服务网格可以帮助开发者处理微服务运行时面临的横切面问题(crosscutting concern),比如:日志框架(log4j/logback)、健康检查、metrics、分布式追踪等。其次,编码完成后,可使用云服务厂商提供的 DevOps 工具链能力实现代码的归档、编译构建、发布部署等能力,将微服务部署在运行环境中。最后,还可以利用云服务厂商提供的运维能力对微服务进行运维监控。一般来说,云服务厂商提供的应用平台能力也是独立而解耦的,应用所有者可根据自己的需求和预算来自定义选择自己需要的服务。
紫色部分是运行时技术栈,蓝色箭头代表流量的流向。当微服务部署运行起来后,流量会从各种客户端首先连接到入口(比如服务网关/ELB),同时,流量在这里会根据请求特征分发到各个对应的业务处理微服务,随后对请求进行一系列的处理,返回结果。微服务的运行还依赖了很多中间件,比如:分布式事务、缓存、消息等;还有一些微服务的功能特性,比如:服务网格、服务注册发现等,这些中间件或特性也都由框架或者云服务厂商提供。微服务和中间件等其实都是上层服务部署在基础设施上,比如:虚机、容器或 CCI 实例。
综上所述,一个应用的落地其实涉及到很多技术和场景,使用微服务架构开发应用可以最大程度的简化应用所有者对底层设施和中间件的管理运维,通过自定义使用云服务厂商提供地全场景、端到端的应用平台能力,将资源聚焦在业务创新和落地上(红框部分)。
华为云微服务基于云原生技术的案例
一个成熟的微服务解决方案产品需要经历足够大的业务量侵袭,才能变得更加成熟和可靠。华为终端业务中的应用市场、Vmall、浏览器、华为音乐、负一屏等 20 多款应用,5 亿多的用户量,日均千亿次调用,背后正是由一万多微服务实例集群在支撑。
早期华为终端业务部门自研 GAF 单体应用架构并不能满足业务的高并发、敏捷迭代的需求,运维的成本和难度成几何级上升。基于 CSE 微服务框架,智能助手将其后端拆分为多个微服务,实施集群部署,开发效率提高一倍,系统吞吐量提高 50%,系统开销降低 30%,运维效率也大幅提升,智能助手应用 SLA 提升到 99.96%。更轻量级的架构拆分至多个 3-5 人的微服务团队,采用 DevOps 开发模式,真正实现 Cloud-Native 敏捷开发。
华为消费者云基于 Apache ServiceComb 的高性能,低延迟的异步技术来实现 1,500 多个节点级的微服务,支持 7.6 亿移动手机用户在线。使用 ServiceComb,QPS 提升 2 倍+,时延降低 45%。目前,华为终端业务中的应用市场已在全球 100 多个国家上线,支持 70 多种语言,累积下载超过 1200 亿次。
一直以来,华为云作为 Apache ServiceComb 项目的开发主力,并基于 Apache ServiceComb 在华为云微服务应用平台 ServiceStage 提供对应的商业化服务,在云原生领域,华为云持续深耕,降低技术门槛,将云原生技术红利不断释放给企业;在商业领域,华为云不断加强产品服务能力,为更多企业上云、数字化转型提供共同发展的沃土。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/a384855ad711b0251f87842e2】。文章转载请联系作者。
评论