[第二部:容器和微服务架构](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建设和数字化落地。聊产品,研发,营销,销售,供应链,计划,工厂,财务,税务等数字化领域。


相关文章
|
13天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
11天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
13天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
13天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
13天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
14天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
13天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
11天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
12天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
29 1
服务架构的演进:从单体到微服务的探索之旅
|
10天前
|
消息中间件 监控 安全
后端架构演进:从单体到微服务####
在数字化转型的浪潮中,企业应用的后端架构经历了从传统单体架构到现代微服务架构的深刻变革。本文探讨了这一演进过程的背景、驱动力、关键技术及面临的挑战,揭示了如何通过微服务化实现系统的高可用性、扩展性和敏捷开发,同时指出了转型过程中需克服的服务拆分、数据管理、通信机制等难题,为读者提供了一个全面理解后端架构演变路径的视角。 ####
27 8
下一篇
无影云桌面