从微服务应用于技术栈,了解华为云微服务应用

摘要:一个成熟的微服务解决方案产品需要经历足够大的业务量侵袭,才能变得更加成熟和可靠。

云原生时代,随着容器技术、微服务架构思想、产品研发运营模式不断地推陈出新和迅速发展,应用的设计和开发落地门槛已经降低到了历史低点。根据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实例。

综上所述,一个应用的落地其实涉及到很多技术和场景,使用微服务架构开发应用可以最大程度的简化应用所有者对底层设施和中间件的管理运维,通过自定义使用云服务厂商提供地全场景、端到端的应用平台能力,将资源聚焦在业务创新和落地上(红框部分)。

华为云微服务基于云原生技术的案例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjzxx.html