微服务与 DevOps实践:技术架构与组织架构(1)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务与 DevOps实践:技术架构与组织架构(1)

王东,曾任融数数据北京研发中心 CTO,负责微服务、DevOps 以及大数据平台的研发和管理工作。曾供职于 IBM、普元、Amazon、OneAPM 等国内外知名公司。拥有 15 年以上的 JavaEE 编程和架构设计经验,精通 DevOps 和微服务,曾领导设计和开发普元 ESB 产品。熟悉支付相关的业务流程以及各个银行和支付机构的业务处理模式,熟悉应用与支付领域的大规模分布式系统设计和开发方法,熟悉电子商务行业的业务模型。专注于客户行为分析、营销、产品和服务、客户关系、线上销售、物流配送、渠道整合、供应链集成、售后服务、预测和推荐等各个电子商务主要环节的分析和设计,以及 IT 系统的规划和实施。精通 DDD、Scrum 等软方开发和设计方法论。


 

 

9.1     概述

 

 

首先,我们来看看微服务的定义:微服务是一个界限明确、高度封装、松耦合、可以独立部署和独立扩展的服务应用组件,如图 9.1 所示。微服务架构基于 SOA 和领域驱动设计(DDD)构建,其主要目的包含以下三个方面:开发的敏捷性、部署的便利性及明确的可扩展性。


image.png


其次,微服务和传统的 SOA 有什么异同:

 

从设计原则上来讲,微服务架构遵循 SOA 的设计原则。

 

小的、可重用的服务并不一定是微服务,微服务架构强调敏捷、独立开发、独立部署、独立扩展,重用在某种程度上会影响敏捷性。


 

微服务架构为了实现其敏捷特性,在 SOA 架构约束的基础之上又添加了新的约束,微服务之间不能互相依赖,因此要求微服务能够独立部署、独立扩展,微服务之间的依赖越少越好。

 

微服务中的一个服务只实现一个独立的特性。

 

对于微服务而言,尽量不要为外部应用发布代码级 API,可以通过服务调用或者事件解决依赖问题。

 

微服务中的服务之间最好通过异步事件交互。

 

微服务中的每个服务都拥有自己独立的数据。


 

另外,微服务架构的优点有很多:

 

  • 敏捷性:微服务不仅可以提高开发的敏捷性,还可以加速持续部署(CD),从而使开发团队能够尽快部署新的功能。

  • 减少风险:由于每个微服务都是比较小巧并且独立部署的,因此可以减少每次部署的风险。


  • 适合分布式开发:微服务之间依赖程度低,因此可以更加灵活地独立开发。


  • 技术灵活性:微服务之间的耦合程度低,因此技术团队可以根据不同的特点选择最合适的技术栈,例如利用不同的编程语言解决不同的领域问题。

  • 可扩展性:一个应用有许多微服务组成,每个微服务可以根据需要独立扩展,而无须对整个应用做整体扩展。


 

鉴于以上优点,我们来看一下微服务的本质。微服务在本质上是一种服务实现模式,微服务可以实现一个应用中独立的业务功能,而不是整个应用或者模块,因此,微服务其实是将单体应用的复杂性从程序内部转移到了服务组件之间,这就对微服务抽象的粒度有一个比较高的权衡要求。对于微服务的粒度,大家讨论的最多,这也是实践过程中经常遇到的令人纠结的问题。实际上,如果抽象粒度太细,就需要大量的服务编排来满足业务场景,而大量使用服务编排就可能会导致微服务退回到 SOA 模式(服务编排是类似 BPM 或者 ESB 的系统);而如果服务粒度太粗,则不利于开发的敏捷性和部署的便利性。

 


微服务的主要目的是实现敏捷,微服务架构的主要构建方式是采用领域驱动设计,而领域驱动设计主要包括如下五个概念:

 


  • Bounded Context

  • Context Map

  • Event Sourcing

  • CQRS
  • BASE


 

微服务的粒度并没有一个明确的界限,也就是说“尺寸”是相对的。通常,微服务的粒度和对敏捷性的要求密切相关,往往粒度越细其敏捷度也越高,但是并不是所有的应用对敏捷的要求都那么高,也就是说在微服务的设计和实现过程中,对于粒度的大小可以做适当的调整。对于想要采用微服务架构的团队,首先要考虑如下几个前提条件:

 

现有软件架构是否已经服务化或者按照系统功能做了模块化切分。

 

团队的敏捷成熟度如何,是否有足够的 DevOps 经验。

 

开发团队是否有足够的架构设计能力来适应采用微服务所带来的设计方法、模式以及技术架构上的巨大差异。

 

DBA 团队是否有能力和意愿制定新的数据管理模式——将数据管理的方式由原来的集中管理转变为去中心化管理。

 

运维团队是否有足够的能力为微服务提供全新的环境管理工具、部署工具和监控工具。

 

综上所述,我们建议微服务的演进线路如图 9.2 所示。


image.png


从单体应用或者传统分层架构的应用向服务化过渡,通过封装和组合等方式提供对外发布接口的能力,从而提升应用的可访问性。

 

通过重构将 Domain-Level(领域层面)的功能模块转变为可以独立部署的服务,从而提升整个应用的敏捷性。我们将这种可独立部署的服务称为 MiniService,其粒度比微服务粗,因而抽象难度比较低,但是也能在一定程度上获得微服务所带来的敏捷性提升的好处,但是对 DevOps 的基础设施等要求没有微服务高,因此建议没有微服务经验的团队可以从 MiniService 开始尝试。

 

通过 Feature-Level(特性层面)的抽象,根据单一职责原则将 MiniService 拆分成微服务,从而获得更高的扩展性和敏捷性。

相关文章
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
191 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
3天前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
43 16
|
4天前
|
存储 消息中间件 小程序
转转平台IM系统架构设计与实践(一):整体架构设计
本文描述了转转IM为整个平台提供的支撑能力,给出了系统的整体架构设计,分析了系统架构的特性。
28 10
|
25天前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
11天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
38 10
|
11天前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
13天前
|
运维 监控 安全
天财商龙:云上卓越架构治理实践
天财商龙成立于1998年,专注于为餐饮企业提供信息化解决方案,涵盖点餐、收银、供应链和会员系统等。自2013年起逐步实现业务上云,与阿里云合作至今已十年。通过采用阿里云的WA体系,公司在账号管理、安全保障、监控体系和成本管控等方面进行了全面优化,提升了业务稳定性与安全性,并实现了显著的成本节约。未来,公司将持续探索智能化和全球化发展,进一步提升餐饮行业的数字化水平。
|
13天前
|
运维 安全 架构师
架构师工具箱:Well-Architected云治理提效实践
本次分享基于阿里云Well-Architected Framework的最佳实践案例,涵盖企业从上云到优化的全过程。安畅作为国内领先的云管理服务提供商(Cloud MSP),拥有800多名员工,其中70%为技术工程师,为企业提供架构安全、数据智能等技术服务。内容包括Landing Zone与Well-Architected的关系、企业云治理现状及需求分析,重点探讨了安全合规、成本优化、资源稳定性和效率提升等方面的最佳实践,并通过具体客户案例展示了如何通过自动化工具和定制化解决方案帮助企业提升云上业务价值。
|
1月前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
46 1