【云驻共创】应用架构现代化之深入浅出微服务

举报
kaliarch 发表于 2023/06/30 22:43:48 2023/06/30
【摘要】 随着互联网的发展与应用的复杂化,传统的单体应用和三层结构应用架构越来越难以适应需求。微服务架构应运而生,以服务粒度更细、自治性更强为核心特征,逐渐成为当今主流的应用架构模式。微服务架构的核心特征是将单体应用拆分成一系列较小的服务,每个服务都是一个可独立开发、部署与扩展的应用程序。微服务架构带来的主要优点是服务日益独立、协作性强、灵活且可伸缩。未来,微服务架构必将成为云原生应用的基础架构。

概述

随着互联网的发展与应用的复杂化,传统的单体应用和三层结构应用架构越来越难以适应需求。微服务架构应运而生,以服务粒度更细、自治性更强为核心特征,逐渐成为当今主流的应用架构模式。

微服务架构的核心特征是将单体应用拆分成一系列较小的服务,每个服务都是一个可独立开发、部署与扩展的应用程序。服务之间通过轻量级通信手段(如HTTP RESTful API)实现松耦合的构建。微服务架构带来的主要优点是服务日益独立、协作性强、灵活且可伸缩。未来,微服务架构必将成为云原生应用的基础架构。


一 微服务发展历程

1.1 向Cloud Native演进,微服务是Cloud Native的事实标准


  • 单体应用

单体应用代表:J2SE/J2EE,起出现在互联网早期,其主要价值解决企业信息化快速实现的问题下沉,例如:容器、日志、安全、事物等,其特征表现在以下四方面,第一系统紧耦合;第二系统复杂、错综交互,动一发而牵全身;第三是重复制造各种轮子:OS、 DB.Middleware等;第四是完全封闭的架构。

  • SOA服务

SOA服务代表:Web Service、Dubbo等,其主价值主要表现在,要解决独立服务可复用、可集成、可查找方面,SOA下沉了服务自描述、服务发现、标准化服务调用等。特征表现在松耦合、在大型、超大型企业中仍然流行,通常通过ESB进行系统集成,大团队100-200人,TTM1年、半年,集中式、计划内停机扩容等发布方式。

  • 微服务

微服务代表:Spring Cloud、ServiceComb,其价值解决大规模团队研发问题,解决水平扩容问题,下沉为服务发现、水平伸缩能力、一致性保障能力,熔断限流能力等,特征表现在解耦,互联网公司、中小企业、初创公司、小团队2 Pizza Team、TTM按天、周进行发布,DevOps CI/CD自动化,弹性伸缩,升级、扩容不中断业务等。

1.2 单体架构

1.2.1 单体架构概述

MVC 架构:MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑、数据、显示分离的方法组织代码。在J2EE领域,最经典的 MVC 架构之一就是 Spring + Struts ORM (Hibernate/MyBatis)。


1.2.2 单体架构特点

  • 优点:
  1. 开发和测试简单;
  2. 部署简单;
  3. 运维简单。
  • 缺点
  1. 交付周期长;
  2. 维护成本增加;
  3. 可扩展性差;
  4. 技术选型成本高;
  5. 新成员培养周期长。

单体应用架构简单易用,适合小型应用,但是不适应大型应用的需求。应用日益复杂时,单体应用的许多缺点逐渐显现,这时通常需要演进到微服务架构。

理解单体应用与微服务架构各自的优缺点,可以帮助我们更好地选择架构模式,应对不同应用场景与需求。


1.3 SOA服务化架构及挑战


  1. 企业集成总线ESB是实体总线,性能线性扩展能力有限,厚重,成本高,进而硬件成本的下降,基于X86架构的廉价硬件+分布式软件的模式在互联网行业得到了大规模应用, 分布式架构日超成熟。
  2. 硬件负载均衡器的压力越来越大,不断扩容导致硬件成本增加,进而从运营商业务看,尽管高性能的小机仍然是标配,但是运营商业务向数字化转型和云化降成本逐渐成为一种趋势。
  3. 随着业务规模的不断增长,传统的数据库、配置中心等逐渐成为单点瓶颈。
  4. SOAP通信太沉重,不够轻量化,进而转化为轻量级通信机制REST兴起。

SOA具有重要的理论价值与实践意义,但是也面临诸多挑战,特别是在复杂系统中的应用。要成功落地SOA,需要关注服务拆分粒度、数据一致性、事务管理、服务治理与运维等方面。只有在平衡SOA理论与实践的基础上,制定合理的应用策略,SOA才能发挥其优势,实现灵活、高效的系统架构。


1.4 单体 VS 微服务

以打车APP为例:

单体架构与微服务架构是应用开发中的两种主流模式。对于打车应用来说,在规模和成本之间需要权衡选择恰当的架构模式。

如果采用单体架构,打车应用可以设计为一个庞大的单体应用,包含司机客户端、乘客客户端以及中介平台。这种架构简单易行,适合初始规模,但是随着日益增长的客户与司机数量,单体应用会面临严重的可扩展性问题,系统变得庞大复杂,开发效率和系统稳定性无法保证。

如果采用微服务架构,可以将打车应用拆分为多个服务,如用户服务、订单服务、车辆服务、支付服务等。各个服务间通过消息机制进行松散耦合。这种架构充分解耦,服务可独立开发、部署和扩展,满足应用动态扩展的需求。但是,微服务架构也会增加系统复杂性,如服务发现、负载均衡、消息队列、事务管理等机制的引入会提高技术难度和成本。

针对打车应用来说,需要在规模和成本上进行恰当的权衡:

初期阶段,单体架构更为简单实用,可以快速上线开发。随着规模增长,可以逐步演进到微服务架构,实现不同服务的解耦与独立拓展。这可以控制成本,同时满足业务增长的需求。

在具体实施的时候,还需要考虑技术落地难易度与迁移成本。可以从非核心业务开始切入,逐步拓展。在架构演进过程中,实现与既有系统的兼容也至关重要。

对于打车应用这类需要动态扩展的互联网系统,单体架构与微服务架构都具有其适用场景。理解二者的优缺点以及落地难度,可以帮助我们切实评估当前应用场景,选择适宜的架构模式与演进策略。这需要平衡技术驱动与业务需求,关注架构落地后的成本与价值。只有这样,才能真正实现高效、灵活与可持续发展的系统架构。


1.5 单体 VS SOA


SOA架构:

1. 通常由企业架构团队自顶向下设计,需要较长周期推进,难度较大。微服务更加关注团队自主创新,自底向上演进。

2. 服务粒度较大,通常对应企业的业务线或域。微服务粒度细,关注业务场景中的子域或功能。

3. 依赖企业服务总线等中介,通信复杂。微服务通常基于轻量级通信机制如HTTP RESTful API,简单灵活。  

4. 服务之间依赖度高,部署与调度复杂。微服务关注服务独立,松散耦合,易于部署与管理。

5. 面向企业应用集成,关注自身系统间的集成。微服务更侧重于新系统的构建,与外部应用或既有系统松散集成。

6. 变更影响面大,发布周期长。微服务各服务可独立开发与部署,响应变化速度更快。

微服务架构:

1. 适用于互联网应用,重视敏捷与用户体验。SOA更侧重传统企业环境。

2. 技术门槛低,易于上手与落地。SOA实施难度较大,需重视推进计划。 

3. 运维要求高,需关注服务发现、负载均衡等机制。SOA侧重管控规范与框架建设。

SOA与微服务代表了应用架构演进的两种思想,有着明显的差异与适用场景。理解二者在理念、适用范围与实现技术上的差异,可以帮助我们针对不同应用作出恰当的架构选择。这需要结合业务模型、组织特征与技术理解进行综合判断。


1.6 微服务架构提出

Martin Fowler 和James Lewis共同提出Microservice(微服务)架构的概念微服务是一种软件架构风格,强调小型的、去中心化的结构,核心特征:小、独、轻、松。就是说: 微服务要小,模块边界要更清晰, 支持独立部署独立演进,每个微服务都应该可以独立部署,独立演进,独立升级的。另外允许技术多样性,就是在微服务构成的一个整体的应用系统里面,每一块的业务要用你最适合的技术去实现,而不是都统一用一种语言去实现,这也是微服务非常重要的一个特点。

1.7 微服务价值

1.7.1 客户视角

  • 业务能力形成T资产
  1. 减少系统重复建设。
  2. 快速响应业务变化。
  • 优化组织结构
  1. 产品化运作。
  2. 促进沟通协作,微服务就是团队的责任田。
  3. 提升研发效率。

1.7.2 交付团队视角

  • 提升交付效率
  1. 缩短特性发布周期。
  2. 修改和定位代码更容易。
  3. 业务解耦。
  • 降低学习成本
  1. 业务知识内聚于微服务中。
  2. 阅读代码范围变小。
  3. 更多技术选择。

1.7.3 软件架构视角


  • 增强可扩展性
  1. 服务模块的边界清晰。
  2. 独立部署、独立演进。
  • 增强高可用性
  1. 弹性伸缩。
  2. 缩小错误范围。
  3. 技术异构。
  4. 有效隔离故障。

1.8 微服务范围


微服务出现是以不断提高交付效率、缩短交付周期为核心,基于云原生的方式,对架构优化的结果。

  • 当自动化测试、持续集成、持续部署、环境管理、数据管理等都完成局部优化后,架构的优化与解耦成为缩短交付周期所不可回避的问题;
  • 演进式架构(Neal Ford, 2015/Thoughtworks)的核心是提高架构应对变化的响应力,从而适应末来日益加剧的业务竞争和多元化的变化。

二 微服务核心能力

2.1 服务发布/订阅

1. 服务发现机制是微服务架构中关键的基础设施。它使服务实例的动态变化对客户端透明, client无需关心服务实例的网络位置,只需向服务注册中心发起请求即可。

2. 服务注册中心管理所有服务的实例及其网络地址。当服务实例变化(上线、下线)时,会实时更新到服务注册中心。服务注册中心就像服务的目录,使得客户端很容易找到可用的服务实例。

3. 常见的服务注册中心实现包括:Eureka、Consul、Zookeeper。它们提供服务的注册、发现、监控等功能。

4. 服务提供者向服务注册中心注册服务信息,如网络位置、服务版本等元数据。服务消费者通过服务注册中心获取可用服务提供者的网络位置,并调用服务。

5. 客户端使用服务注册中心提供的API来订阅感兴趣的服务。当服务实例信息变更时,客户端会收到服务注册中心的通知更新缓存。这确保客户端 всегда具有最新可用的服务实例信息。

6. 服务发现机制与服务注册中心为微服务架构提供了动态扩展能力。通过实时管理变化中的服务元数据,使整体系统更加灵活与健壮。这是实现自动扩展、容灾快速切换等机制的基础。

7. 除服务注册中心外,服务发现机制还包含服务提供者与消费者。三者配合完成服务注册与发现的整个流程。理解其协作机制与接口设计,是使用服务发现的基础。

服务发现机制是微服务架构成功实施的核心。它为构建动态可扩展的分布式系统提供了基础保障。理解其原理与常见实现,并在实践中积累相关经验,是掌握微服务架构必备的技能。这需要对整体架构有清晰的认知,并重视基础设施层的设计与落地。

2.2 分布式配置管理


配置中心是微服务架构中重要的基础设施之一。它提供了一种集中式的配置管理方式,使配置的添加、更新与同步变得简单高效。

配置中心的主要功能是提供配置的统一存储与管理。不同的微服务可以通过配置中心的接口获取所需的配置,而不需要在每个服务中硬编码这些配置。当配置发生变化时,配置中心可以实时推送最新配置给相关的微服务,使其动态更新配置。

配置中心为微服务架构提供了一种简单有效的配置管理方式。理解其作用机制与实践中的挑战,可以帮助我们设计灵活高效的配置管理方案。结合自身应用场景,选择适宜的服务,并关注其可靠性与性能。

2.3 微服务网关


微服务网关是客户端与微服务集群之间的中间层,提供统一的访问入口。所有外部请求都通过微服务网关,它会根据请求信息转发到相应的微服务。客户端只需与微服务网关交互,无需了解后端各微服务的网络地址等信息。

微服务网关起到以下作用:

  • 统一入口:外部系统只需要通过微服务网关访问,无需关注后端微服务的变化。这简化了客户端调用逻辑。
  • 流量控制:可以通过微服务网关对请求流量进行控制,避免单个微服务过载。这提高了系统稳定性。
  • 编排转发:根据请求信息将请求路由转发到适当的微服务,解决了客户端寻址的难题。这简化了集群管理难度。
  • 服务聚合:可以在微服务网关层对多个服务的调用进行聚合,对外提供一致的接口。这降低了客户端调用复杂度。
  • 安全控制:可以在微服务网关层实现鉴权、限流等机制对请求进行控制。这为微服务集群提供了重要保护。

微服务网关架构模式下,外部系统只需要与微服务网关对接即可,无需关注集群内部网络拓扑等信息,大大简化了开发难度,这使客户端与服务端解耦合,是微服务架构中不可或缺的组件. 掌握微服务网关,有助构建与外部系统松耦合的微服务集群。


2.4 服务契约


企业级系统规模普遍较大,微服务组件众多,所以对服务间接口进行统一管理是企业的关键需求。微服务引擎通过契约管理满足这一需求。微服务应用中,服务间远程调用,接口不一致通常发现时间较晚,会造成更大的修复成本。有了契约可以保证架构师设计契约,严格审查变更,并反向生成代码,保证兼容性。

2.5 灰度发布

灰度发布是一种渐进式发布技术,在生产环境中逐步推出新版本,以缓解新版本带来的风险。它的主要适用场景是:

1. 邀测或小范围公测,限制新版本的影响范围。可以在灰度过程中观察并修复bug,降低发布风险。

2. 用户体验要求较高的网站业务,不能快速完全切换至新版本,以避免影响用户使用。

3. 单个微服务的发布,不需要整体集群全部更新,可以逐步将流量切换至新版本实例。


灰度发布的主要优势是:

1. 支持各种部署场景。新老版本可以共存,容量不变,不增加额外成本。

2. 降低发布风险。可以观测新版本对系统的影响,并快速落实修复计划或回滚发布。

3. 兼顾用户体验。可以逐步切换流量,避免大面积影响用户使用。 

4. 易于管理。小范围内发布新版本,更易于管控与故障定位。  

但是,灰度发布也增加了系统的管理与运维成本,如双版本运行及配置管理及测试的额外工作量。这需要在效果和投入间作出权衡。

灰度发布是微服务架构中重要的技术手段,有助于构建稳定高效的持续交付机制。理解其原理与运用场景,可以帮助我们平稳过渡系统的重大变更,同时降低风险。这需要在设计阶段就考虑不同服务的演进策略,并运用代码测试、pipeline等机制不断地验证。这是值得我们投入时间与精力的方向。


2.6 应用管理

服务管理提供了丰富的开箱即用技术栈与全流程的应用管理功能,可以大大简化我们的软件工程实践。

它支持多种语言运行环境及容器部署,应用可以快速上线。其提供了应用创建到下线的全管理流程,涵盖部署、启动、升级、回滚等功能,简化应用运维。

还提供了按环境维度的资源与服务管理,可以轻松实现开发、测试、生产环境的隔离与管理。这减少了底层基础设施的运维复杂度。

容器云平台还支持与持续集成工具对接,可以实现应用的自动化构建与部署。这简化研发流程,提高工作效率。

容器云平台提供了应用部署与管理的全流程方案,具有部署快速、运维简单、环境隔离等优点。理解其架构与功能,掌握其操作规范,有助于我们构建自动化的交付环境与高效的研发流程。


2.7 服务治理

支持微服务接口级SLA指标(吞吐量、时延、成功率)实时(秒级)监控和治理,保障应用运行不断服自动负载均衡可以根据不同策略将请求分发至各个实例,可选策略有顺序、随机、本地优先等。自动容错可以在实例下线时自动剔除,并将流量切换到其他正常实例,确保核心业务可用。

服务降级与流量控制在系统超负荷时可以自动关闭非关键业务与丢弃部分请求,保证核心业务处理能力,为已接入请求提供正常服务。

这些机制可以减轻人工运维难度,在系统出现问题时自动应对,简化问题定位与解决流程。它们使应用的高可用性与稳定性得以保障,这对云原生应用环境而言尤为关键。

服务治理功能,可以帮助我们构建健壮高效的应用架构。这些机制可以在问题出现时主动进行调整与修复,并提供详尽的日志与监控指标,方便我们快速定位解决问题根源。


2.8 服务框架


服务间通讯协议(HTTP、RPC)、数据传输方式(同步、异步)、数据序列化与反序列化(JSON、PB)。

Spring Cloud提供了构建微服务架构的工具与抽象。其实现了服务发现、配置中心、消息总线、负载均衡、断路器等机制,简化微服务开发。

ServiceComb是一个开源微服务框架,提供了与Spring Cloud类似的功能,但是基于Netflix中的一些组件进行了二次开发,实现与语言无关,有利于多语言微服务落地。

Apache Dubbo是阿里开源的微服务框架,提供高性能的RPC通信工具与服务治理方案,适合大规模服务化构建的网络应用。其实现了注册中心、监控中心、配置中心及Metadata中心等机制。

总之,这些框架都提供了构建微服务所需的基础设施与机制。如注册发现、配置管理、熔断与限流、监控追踪等。选择适宜的框架可以极大简化微服务开发与运维。需要根据语言、运维体系与组织规范等因素,选择最符合需要的框架。

理解这些主流微服务框架的机制、功能与适用场景,可以帮助我们在微服务架构下快速开发与部署应用。

2.9 微服务上云:无需改造、支持主流微服务框架接入

1. ServiceComb Java Chassis框架:华为自研的开源Java微服务框架,Apache ServiceComb Java Chassis。

2. Go Chassis:华为自研的开源GO微服务框架,专注于帮你实现云原生应用。

3. Spring Cloud Huawei框架:华为基于Spring Boot和Spring Cloud的勺相关扩展机制开发的微服务框架,满足Spring Cloud应用接入CSE引擎(提供注册中心、 配置中心、服务治理支持)。

4. Proxyless (Java Agent):支持SpringCloud应用非侵入方式接入微服务引擎,并获得治理能力。

2.10 典型的Spring Cloud云原生架构

华为云提供了基于Spring Cloud的典型云原生架构方案。其主要特点是:

1. 自动化部署。支持Jar/War包和Docker镜像部署,可以实现应用的自动化编译、构建与部署。

2. 服务注册与发现。使用Eureka作为服务注册中心,实现服务的自动注册与发现。

3. 配置管理。使用Spring Cloud Config Server作为配置中心,实现配置的集中管理与动态更新。

4. 服务网关。使用Spring Cloud Gateway实现请求的智能路由和过滤,提供统一入口加强服务安全性。

5. 分布式跟踪。使用Spring Cloud Zipkin和Sleuth实现分布式系统中的请求链路跟踪。

6. 熔断与限流。使用Spring Cloud Hystrix实现熔断器与流量控制,提高系统稳定性。

7. 监控与告警。提供Spring Boot Actuator,可以对微服务进行健康监测和指标信息统计。

8. 日志管理。使用ELK(Elasticsearch, Logstash, Kibana) stack实现日志的收集、存储、搜索与分析。

2.11 存量应用接入华为云微服务CSE托管的优势

对于已基于Spring Cloud开发的应用,零改造托管到微服务引擎CSE,比直接使用全开源的Spring Cloud 框架的优势。易用性更强,提供一站式微服务控制台,高可用、高可靠,华为提供商业兜底,与华为云服务无缝配合。

三 实践经验与案例分享

3.1 华为云微服务最佳实践


华为云微服务引擎(Cloud Service Engine,CSE)是华为云基于ServiceComb构建的微服务开发与管理平台。它提供了开发、部署、运维一体化的微服务解决方案,主要特性包括:

1. 轻量级服务框架。基于Spring Boot和ServiceComb实现,提供开箱即用的Spring Cloud与Dubbo版本。

2. 注册中心及服务发现。提供Eureka和Consul两种服务注册中心,实现自动服务注册与发现。

3. 熔断与流量控制。使用Hystrix实现服务熔断、流量控制和异常隔离。保护服务不被依赖服务的故障拖垮。

4. 配置中心。提供配置服务,实现配置的集中管理、版本控制和动态更新。服务可以动态获取配置,无需重启。

5. 服务网关。使用Spring Cloud Gateway实现智能路由、鉴权、限流等功能,提供统一入口加强服务的安全性。

6. 监控中心。采用Actuator与Promethues实现微服务的健康检查、业务监控和指标统计。提供全面的监控与告警功能。

7. 分布式链路追踪。采用Zipkin实现微服务调用远程过程的端到端链路监控与追踪。

8. 持续交付。集成Jenkins等CI/CD工具,实现微服务的自动化编译构建、测试和部署。

9. 灰度发布。提供蓝绿部署方案,支持应用的零宕停时间发布和灰度发布。

CSE提供功能丰富的微服务开发平台,使用华为云微服务引擎可以大大简化微服务架构的落地难度,实现敏捷的软件开发与交付。

3.2 微服务应用平台 (Service Stage/CAE)

应用平台提供应用托管和生命周期管理能力,支持Java、 Go、 PHP. Nodejs. Docker、 Tomcat等运行环境,让各应用提供商聚焦上层应用开发,应用完成开发后,可以托管在应用管理平台上,无需关注下层平台与框架的细节,实现业务的敏捷上线和高效运维。


3.3 多框架、非侵入、全场景,应用治理更灵活



1. 多框架零修改接入。CSE支持Spring Cloud与Dubbo版本,服务可以零修改迁移至CSE,降低微服务迁移难度。

2. 场景化治理与统一监控。CSE提供精细化的服务治理方案,可以根据不同服务及调用场景进行定制化治理。并提供统一的监控中心,实现对各类微服务的监控与告警。

3. 全场景适用。CSE可以应用于web服务、云原生应用以及企业内部应用等多种场景,具有较强的适用性。

4. 分布式事务与调用链可视化。CSE提供分布式事务解决方案,并可对服务调用链路进行可视化监控与追踪。

5. 契约优先与可扩展。CSE采用契约优先的方式进行服务治理,契约可根据需求进行扩展。CSE自身也是高度可扩展的,支持第三方组件的接入。 

6. 高性能与可靠。CSE基于高性能的ServiceComb微服务框架开发,并深度参与相关的开源标准制定,可靠性较高。

7. 开放兼容。CSE开放支持其他语言实现的微服务,具有较好的兼容性。也支持接入第三方监控、配置中心等组件。

华为云微服务引擎具备构建与管理大规模微服务的能力。它提供了较全面的服务治理方案与监控手段,降低了微服务架构的落地难度,为用户提供稳定可靠的微服务开发与运维环境。理解其功能架构与应用场景,有助于我们更好地使用该平台,实现敏捷高效的软件研发。


3.4 微服务支撑华为应用市场服务7亿+用户,每天千亿次服务调用

1. 服务化元年(2016年)。这一阶段华为云开始探索服务化转型,进行微服务架构的可行性论证与试点。

2. 服务化初期(2017年)。在新业务中采用微服务架构,快速构建应用市场等业务。微服务规模较小,使用Spring Cloud构建。

3. 大规模服务化阶段(2018年)。大量业务采用微服务架构重构,微服务数量迅速增长,达到数万。引入ServiceComb微服务框架,应对大规模微服务。

4. 业务快速扩张阶段(2019年)。微服务架构已成主流,大量新业务基于微服务开发。微服务规模庞大,线上微服务过万,系统复杂度大幅提高。

5. 精细化治理阶段(2020年至今)。老存量业务也逐步采用微服务架构。由于服务数量巨大,微服务上线难与下线难成为主要难题,需统一的服务治理体系与监控系统来提高微服务质量。

在这5个阶段,华为云微服务架构实现了从小规模试点到大规模落地的转变。随着服务数量的激增,治理难度也逐步提高。这需要不断优化框架与机制,加强监控与运维,提高系统稳定性。


3.5 微服务相关开源技术地图


1. 微服务框架:提供微服务开发的框架与组件,如Spring Cloud、Dubbo、ServiceComb等。

2. 服务注册与发现:实现服务的自动注册与发现,如Eureka、Consul、Zookeeper等。

3. 服务网关:提供统一入口,实现鉴权、限流等功能,如Spring Cloud Gateway、Kong等。

4. 配置管理:集中管理各服务的配置,如Spring Cloud Config、Apollo等。

5. 服务调用:实现服务间的远程调用,如RESTful API、gRPC、Dubbo RPC等。

6. 熔断与限流:提供服务故障隔离与流量控制,如Hystrix、Sentinel等。

7. 服务监控:提供服务运行状态监测与业务监控,如Spring Boot Actuator、Prometheus等。

8. 链路追踪:跟踪服务调用的端到端链路,如Zipkin、SkyWalking等。

9. 数据管理:管理分布式环境下的数据,如MyCAT、Canal等。

10. 安全管理:提供微服务环境下的安全认证与授权,如OAuth2、RBAC等。

11. 持续交付:提供持续集成、构建与部署的工具链,如Jenkins、CodePipeline等。

12. 版本管理:管理服务依赖关系与兼容性,如ivvy、Maven等。

除此之外,微服务体系也需要日志管理、部署管理、容器管理等方面的支撑。综上,构建一套完整的微服务体系需要整合许多开源组件与云服务。

四 未来的技术趋势

4.1 应用现代化是企业数字化转型的必由之路


基础设施现代化:使用云计算等现代基础设施,实现资源的弹性伸缩与利用效率提升。这可以让企业聚焦于应用开发与业务创新。

开发运维现代化:采用敏捷开发与DevOps理念,改进研发模式,加快软件交付速度与频率。这可以大幅提升研发效率与创新能力。

应用架构现代化:构建微服务架构或云原生架构,实现应用的高内聚、低耦合与高弹性。使应用具备高可用性、可扩展性与故障隔离性。这是应对数字化需求的关键。

治理运营现代化:利用现代化应用架构的特性,实现业务流程的再造与优化。通过数据管理与AI等技术手段,实现运营警示与智能决策,发挥应用的最大价值。这需要基于现代化基础设施与架构进行业务重塑与再造。

应用现代化需要在基础设施、研发模式、架构理念和运营管理等方面全面转变。这是企业数字化转型的必由之路,需要在顶层设计与基础支撑上作根本性调整。只有这样,才能建立创新机制与竞争力,满足数字化带来的挑战与机遇。


4.2 应用架构演进的方向:Mul-Runtime as a Service


趋势分析:目前主流的应用架构都会采用微服务架构,相对于Mesh聚焦服务间通讯及其性能优化, Dapr强调运行时可移植性及生态建设,结合了SDK和Service Mesh的优点,适合面向云原生的轻量化微服务。



4.3 微服务技术趋势


1. 基于应用的全局调度与优化。可以跨微服务与层级进行统一调度,实现资源与性能最佳化。这可以实现预防性的自动扩缩容与节点退役,节省资源。

2. 支持多种Service Mesh。提供Proxyless Mesh与xDS Mesh等方案,实现轻量级的服务间通信与治理。使用eBPF作为Sidecar的替代,提高性能。

3. 中间件集成。使用Dapr实现与中间件的透明集成,促进多云应用。Dapr简化中间件的配置与管理。

4. 微服务网关。网关使用WASM插件机制可插入新功能,不需底层配置。支持应用级路由,实现全链路灰度与压测。采用Grafana可优化网络并促进架构演进。

5. 可观测性。基于OpenTelemetry标准和eBPF,实现透明监控、资源利用率低且性能影响小。与多云监控和运维更好集成。 

6. 统一注册中心。与Service Mesh(xDS)集成透明。 

7. 多Runtime。轻量安全的无服务器计算引擎。Dapr可透明访问中间件。与Service Mesh和注册中心互操作。通过WASM插件可插入横切关注点。

微服务架构也会带来一定挑战,如运维复杂度增加、分布式事务问题、服务间通信成本上升等。要成功构建微服务架构,关键是明确服务边界,保证服务独立性与职责明确。开发中需要保证高内聚与松耦合,运维要关注自动化部署与监控。

本次通过华为云应用架构现代化之深入浅出微服务分享,理解微服务架构是应对当今应用日益复杂需求的重要手段。理解其理论基础与核心特征,对于现代化的应用开发至关重要。微服务同时也带来挑战,需要我们在发展方向与时间节点上进行恰当的权衡与选择。微服务必将是未来应用开发的主流,值得关注与实践。




本文参与华为云社区【内容共创】活动第23期

任务10:DTSE Tech Talk 技术直播 NO.24 应用架构现代化之深入浅出微服务





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。