[第二部:容器和微服务架构](4) 微服务架构采用准则

简介: [第二部:容器和微服务架构](4) 微服务架构采用准则

顾名思义,微服务体系结构是将服务器应用程序构建为一组小型服务的方法。这意味着微服务架构主要面向后端,尽管这种方法也用于前端。每个服务在其自己的进程中运行,并使用HTTP/HTTPS、WebSockets或AMQP等协议与其他进程通信。每个微服务在特定的上下文边界内实现特定的端到端域或业务能力,并且每个微服务都必须自主开发和独立部署。最后,每个微服务都应该拥有其相关的域数据模型和域逻辑(主权和分散的数据管理),并且可以基于不同的数据存储技术(SQL、NoSQL)和不同的编程语言。

微服务应该有多大?在开发微服务时,大小不应该是重点。相反,重要的一点应该是创建松散耦合的服务,这样您就可以为每个服务自主地进行开发、部署和扩展。当然,在识别和设计微服务时,只要不与其他微服务有太多直接依赖关系,就应该尽量使它们尽可能小。比微服务的大小更重要的是它必须具有的内部内聚性及其与其他服务的独立性。

为什么是微服务架构?简而言之,它提供了长期的灵活性。微服务允许您基于许多独立部署的服务创建应用程序,每个服务都有粒度和自主的生命周期,从而在复杂、大型和高度可伸缩的系统中实现更好的可维护性。

另一个好处是,微服务可以独立扩展。与必须作为一个单元扩展的单个单片应用程序不同,您可以扩展特定的微服务。这样,您可以只扩展需要更多处理能力或网络带宽来支持需求的功能区域,而不是扩展不需要扩展的应用程序的其他区域。这意味着成本节约,因为你需要更少的硬件。


图6 单片部署与微服务方法


图6 单片部署与微服务方法


如图6所示,在传统的单块方法中,应用程序通过在多个服务器/VM中克隆整个应用程序来扩展。在微服务方法中,功能在较小的服务中分离,因此每个服务可以独立扩展。microservices方法允许对每个microservices进行灵活的更改和快速的迭代,因为您可以更改复杂、大型和可伸缩应用程序的特定小区域。

构建基于细粒度微服务的应用程序可以实现持续集成和持续交付实践。它还加速了新功能在应用程序中的交付。应用程序的细粒度组合还允许您孤立地运行和测试微服务,并在维护它们之间的清晰契约的同时自主地对它们进行改进。只要不更改接口或契约,就可以更改任何微服务的内部实现或添加新功能,而不破坏其他微服务。

以下是使用基于微服务的系统成功投入生产的重要方面:

  • 对服务和基础设施进行监测和健康检查。
  • 服务的可扩展基础设施(即云和编排器)。
  • 多级安全设计与实现:认证、授权、机密管理、安全通信等。
  • 快速的应用程序交付,通常由不同的团队专注于不同的微服务。
  • DevOps和CI/CD实践与基础设施。

其中,本指南仅涵盖或介绍前三项。与应用程序生命周期相关的最后两点,将在另外的专栏介绍。

额外资源

  • 马克·鲁辛诺维奇。微服务:云技术推动的应用革命
  • 马丁·福勒。微服务
  • 马丁·福勒。微服务先决条件
  • 吉米·尼尔森。块云计算
  • 德拉托雷。微软平台和工具的集装箱码头应用程序生命周期(可下载电子书)

最佳实践

如果应用程序满足以下条件,则应使用微服务体系结构:

  • 业务和市场变化很快,所以产品或者应用的变化也很迅速。
  • 需要快速的应用程序交付,通常由不同的团队专注于不同的微服务。
  • 需要快速部署应用程序。应用程序的每个部分都需要独立部署。

超级架构师

架构师的宝库,每天一篇,开拓你的视野和深度。分享企业架构,业务架构,应用架构,数据架构,技术架构,安全架构等。讨论架构框架,规划,治理,标准,落地。交流新兴的架构风格和模型。如微服务,事件驱动,微前端,大数据,数仓,物联网,人工智能架构。


超级工程师

前端后端一锅端,数据物联区块链,AI AR 和VR,分析 安全 元宇宙。全栈开发Java,Python,Go,Groovy,Kotlin,C#,Node,TypeScript,JavaScript,Rust, Swift,R,Ruby。

首席数字化转型官

交流数字化转型,创新和整合。帮助CIO,CDO,CDTO成长。关注数字化方法,流程,框架,案例以及趋势。探讨业务架构规划,IT建设和数字化落地。聊产品,研发,营销,销售,供应链,计划,工厂,财务,税务等数字化领域。


相关文章
|
1天前
|
缓存 监控 负载均衡
探索微服务架构中的API网关模式
在现代软件开发领域,微服务架构因其灵活性和可扩展性而备受青睐。本文将深入探讨微服务架构中至关重要的组件——API网关。通过分析API网关的核心功能、设计原则以及实际应用案例,我们旨在揭示其在提高系统性能、增强安全性及简化客户端与服务间通信中的重要作用。结合最新研究和实际开发经验,本文将为读者提供关于如何有效实施API网关的深刻见解。
|
1天前
|
存储 负载均衡 云计算
微服务架构中的服务发现与注册机制
在分布式系统设计中,微服务架构因其灵活性和可伸缩性而受到青睐。本文深入探讨了微服务架构下的服务发现与注册机制,通过分析Eureka、Consul和Zookeeper等工具的原理与实践,揭示了这些机制如何优化服务间的通信和故障转移。文章结合最新研究和案例,提供了对微服务架构中关键组件的深刻见解,并讨论了其在不同场景下的应用效果。
|
1天前
|
Kubernetes Java 测试技术
探索微服务架构的演变与实践
【6月更文挑战第28天】在数字化时代,软件架构不断演进以应对复杂多变的业务需求。本文将深入探讨微服务架构从概念到实践的发展过程,分析其设计原则、技术选型及实施策略,并结合作者亲身经验,阐述在微服务转型过程中的挑战与解决之道。
|
1天前
|
Kubernetes Cloud Native Serverless
云原生时代的微服务架构演进之路
【6月更文挑战第28天】在数字化转型的大潮中,企业不断寻求更高效、灵活的软件开发与部署方式。云原生技术因此应运而生,它不仅改变了应用的开发模式,也重塑了微服务架构的未来。本文将探讨云原生环境下微服务架构的演进路径,包括容器化、服务网格、无服务器计算等关键技术的应用与挑战,并展望未来微服务架构的发展方向。
|
2天前
|
负载均衡 Java API
使用Spring Cloud构建Java微服务架构
使用Spring Cloud构建Java微服务架构
|
1天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
1天前
|
Kubernetes Cloud Native Docker
云原生技术演进之路:从微服务到容器化
在数字化浪潮的推动下,云原生技术不断演进,为现代软件开发带来革命性变化。本文将深入探讨云原生技术的核心要素—微服务和容器化,揭示它们如何促进软件的快速迭代、可扩展性和可靠性提升。通过分析相关数据和案例研究,我们旨在阐明云原生技术在加速企业数字化转型中的关键作用。
|
1天前
|
缓存 安全 API
深入理解微服务架构中的API网关模式
本文将探讨API网关在微服务架构中的核心作用和设计考量,通过分析相关研究与实践案例,揭示其在系统性能优化、安全增强及简化客户端交互方面的关键价值。我们将基于最新的行业报告和学术文献,结合具体的使用场景,对API网关的实现策略进行深度剖析,旨在为读者提供一套系统的理解和应用API网关的知识框架。
|
1天前
|
运维 监控 负载均衡
云原生架构下的微服务治理实践
【6月更文挑战第28天】在数字化转型的浪潮中,云原生技术以其高效、灵活的特性成为企业IT架构升级的首选。本文将深入探讨在云原生环境下,如何通过微服务治理提升系统的可维护性、可扩展性和韧性。我们将从服务发现与注册、配置管理、服务监控、路由与负载均衡、以及故障处理等方面出发,结合具体案例,为读者提供一套完整的微服务治理策略,旨在帮助开发和运维团队更好地管理和优化他们的云原生应用。
|
2天前
|
Kubernetes Java 微服务
使用Spring Boot构建微服务架构
使用Spring Boot构建微服务架构