0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么样的架构可以叫做微服务?

中兴文档 来源:中兴文档 2024-02-19 16:57 次阅读

微服务作为一种软件架构,正得到越来越多的关注。微服务架构典型的应用行业有电商、游戏、直播、社交、物联网等等。具体的案例应用有淘宝、支付宝、微信、微博等应用,新兴案例应用有拼多多、美团、饿了么等应用。

但微服务到底是什么意思?什么样的架构可以叫做微服务?如何在不同场景下正确使用微服务?请听文档君为您一一解答。

微服务之前最常用的架构是单体架构,俗称“一个jar(war)包打天下”。即在一个jar包工程中采用MVC(模型(Model)-视图(View)-控制器(controller))架构,把系统中所有的功能、模块耦合在一个应用中的架构方式。单体架构的应用程序通常由三个主要组件构成:

aadd6cd8-cefa-11ee-a297-92fbcf53809c.png

用户界面层(User Interface Layer):负责与用户进行交互的前端组件,常见的包括网页界面或移动应用的界面。

业务逻辑层(Business Logic Layer):与用户界面和数据库操作等进行交互,根据业务需求进行数据处理、验证、计算等操作,主要负责处理业务规则和逻辑。

数据访问层(Data Access Layer):用于持久化数据的后端数据库,通常使用关系型数据库(如MySQL、Oracle等)。

单体架构的优缺点如下。

aae128e6-cefa-11ee-a297-92fbcf53809c.png

随着业务扩大,需求持续增加,单体架构很难满足业务快速变化的需要。一方面,代码的可维护性,扩展性,灵活性在降低,另一方面,系统的测试、构建、维护成本在增加,于是随着应用程序越来越庞大,最终需要进行改造和重构。为了将复杂问题简单化,解决单体架构带来的问题,微服务架构应运而生,是具有更高灵活性和可伸缩性的架构模式。

微服务架构(Microservices Architecture)是将单一的应用程序拆分成一个一个小型的、松耦合的服务模块。每个模块运行在自己的进程中,服务模块之间通过轻量级的通信机制(通常是HTTP RESTful API)相互通信,这些服务模块们,一起组成了一个完整的应用系统。每个服务模块都围绕具体业务进行构建开发,并且能够被独立地部署到生产环境。微服务中的各个服务模块无需使用统一的技术栈(如编程语言、数据库等),技术栈可以根据不同的业务服务和开发团队进行灵活选择,以保证最低限度的集中式管理。

微服务架构除了有各个业务微服务,还有多种微服务组件,如服务网关、注册中心等,提供微服务治理,下图是微服务架构图。

aaebc3a0-cefa-11ee-a297-92fbcf53809c.png

微服务架构的核心组件的功能介绍如下:

服务网关:微服务统一入口,提供路由,鉴权、过滤、限流等功能。

注册中心:所有微服务都注册到注册中心,负责服务注册和服务发现。

配置中心:用于管理微服务应用程序的配置信息的中心化服务。它可以帮助开发人员集中管理应用程序的配置信息,包括数据库连接、API密钥、环境变量等等。

服务通信:负责微服务之间的通信,提供各个微服务之间的数据交互。

服务监控:对各个微服务实时监控(每秒的请求数、成功数等),提供服务熔断和服务降级解决雪崩效应(一个服务宕机后,另外的服务还在相继的调用它,导致其它的服务也宕机)。

微服务架构的优势如下。

aaf2ab98-cefa-11ee-a297-92fbcf53809c.png

aaf6d696-cefa-11ee-a297-92fbcf53809c.png

产品初期,团队规模较小,业务复杂度较低时,一般选择单体架构。微服务架构相比于单体架构要求更高的资源配置和团队技术水平,只有对业务规模、高并发、迭代维护等有一定要求的时候,我们可以考虑结合实际需求和团队技术水平,权衡利弊,去合理规划和设计使用微服务架构。

微服务架构适用于以下场景:

基于云的应用:微服务架构因实现弹性可扩展和自动化部署是云原生应用的理想选择。

复杂的企业应用:传统的单体式应用程序随着业务规模的扩大变得越来越复杂。使用微服务可以将应用程序拆分成更小的部分,使开发更加容易且每个服务更便于管理。

高负载应用:面对高负载场景,微服务的水平扩展能力可以通过添加更多的实例进行轻松处理。

多语言和多技术栈应用:每个微服务可以使用不同的编程语言和技术堆栈,因此可以更好地满足不同的需求。

敏捷开发需求:微服务可以实现团队的敏捷开发,因为开发人员可以在服务级别上进行更小的更改,而不必担心影响整个系统。

总的来说,微服务架构适用于任何需要灵活、高度可扩展且易于维护的应用程序。

ab0c4f94-cefa-11ee-a297-92fbcf53809c.png

在微服务架构应用开发的时候,微服务拆分必须遵循一些原则。通过之前微服务架构的介绍,我们可以知道选择微服务架构是为了将复杂问题简单化。“不忘初心,方得始终”,只有这样在后续拆分过程中,才不会忘记最初的目的。

微服务拆分原则包括:

单一职责原则:每个服务应该只有一个明确的职责,不应该承担过多的职责。

服务自治原则:每个服务应该有自己的数据库和业务逻辑,不应该依赖于其他服务的数据和业务逻辑。例如电商系统中用户管理微服务的用户数据存放在用户信息数据库,订单管理微服务中的订单信息存放在订单信息数据库中,同理会员微服务、物流微服务都应对应有各自的数据库进行数据管理。

按领域边界拆分:根据业务领域的不同将应用拆分为不同的服务,每个服务可以通过 API 或消息队列等方式与其他服务通信。业务领域可以根据功能职责划分,例如用户管理、基本商品信息、物流物流等模块进行拆分,也可以根据非功能进行业务领域边界拆分,如稳定业务和高频迭代业务、常规并发量业务和超高并发量的业务等。

接口隔离原则:为提高应用整体安全性,各个微服务之间的接口应该只暴露必要的操作,而不是全部暴露,即使用多个专门的接口,而不使用单一的总接口。例如用户管理微服务提供了一组跟用户相关的API供其它微服务调用,比如:注册、登录、获取用户信息等,但删除用户的接口仅限后台管理微服务调用,若不加限制地被其他业务系统调用,就有可能导致误删用户。

可重用性原则:将通用的代码封装为独立的库,多个服务可以共享这些库。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2870

    文章

    41639

    浏览量

    358395
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63371
  • MVC
    MVC
    +关注

    关注

    0

    文章

    73

    浏览量

    13783
  • 微服务
    +关注

    关注

    0

    文章

    117

    浏览量

    7240

原文标题:聊聊微服务那些事

文章出处:【微信号:ztedoc,微信公众号:中兴文档】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    微服务架构和CQRS架构基本概念介绍

    微服务架构现在很热,到处可以看到各大互联网公司的微服务实践的分享总结。但是,我今天的分享和微服务没有关系,希望
    发表于 05-22 09:03

    微服务架构与实践摘要

    本文主要类容是对微服务架构与实践摘要解析。微服务架构中的 “微” 体现了其核心要素,即服务的微型化,就是每个
    的头像 发表于 02-07 16:57 5914次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>与实践摘要

    微服务架构多微才合适

    大家也都认可,随着数据量、流量、业务复杂度的提升,服务架构架构演进中的必由之路,今天要讨论的话题是:微服务架构多“微”才合适?
    的头像 发表于 02-07 17:14 3135次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>多微才合适

    微服务优势_微服务架构的好处与不足

    微服务是用一组小服务的方式来构建一个应用,服务独立运行在不同的进程中,服务之间通过轻量的通讯机制(如RESTful接口)来交互,并且服务
    发表于 02-23 11:24 4277次阅读

    什么是微服务和容器?微服务和容器的作用是什么

    微服务是将应用程序拆分为多个服务的一种架构类型,这些服务具备构成整个应用程序的细粒度功能。每个微服务将具备针对您的应用程序的不同逻辑功能。与
    的头像 发表于 01-13 10:54 3.2w次阅读
    什么是<b class='flag-5'>微服务</b>和容器?<b class='flag-5'>微服务</b>和容器的作用是什么

    什么是微服务架构_微服务架构的优缺点及应用

    什么是微服务架构 简单地说,微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型
    的头像 发表于 06-02 10:03 1.7w次阅读
    什么是<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>_<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的优缺点及应用

    SOA架构微服务架构的主要区别

    SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。SOA架构
    的头像 发表于 05-04 14:11 5393次阅读
    SOA<b class='flag-5'>架构</b>和<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的主要区别

    微服务架构有哪些_微服务架构设计模式

    小伙伴们知道常用的微服务架构框架有哪些吗?上回我们介绍了一些常用的微服务架构设计模式,这次我们就来了解一下一些常用的微服务
    的头像 发表于 05-17 17:06 2.8w次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>有哪些_<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>设计模式

    微服务架构的特点_微服务架构适用场景

     微服务架构是一项在云中部署应用和服务的新技术。
    的头像 发表于 05-17 17:28 4667次阅读

    微服务软件架构应用研究综述

    自2014年,微服务架构概念经Martin Flower提出以来,受到广泛关注,为更好了解微服务架构风格,本文首先分析、梳理了软件架构的发展
    发表于 05-26 09:26 2次下载

    什么是微服务架构

    在Medium,我们的技术堆栈始于2012年的单片Node.js应用程序。我们已经构建了几个卫星服务,但我们还没有制定一个系统地采用微服务架构的策略。随着系统变得越来越复杂并且团队不断发展,我们在2018年初转向了
    的头像 发表于 02-24 11:15 1125次阅读
    什么是<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>?

    从分层架构微服务架构介绍(五)

    本文要介绍的是 服务架构 (Service-Based Architecture, SBA )。 SBA 可以看成是单体架构微服务
    的头像 发表于 05-10 17:02 594次阅读
    从分层<b class='flag-5'>架构</b>到<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>介绍(五)

    springcloud微服务架构

    Spring Cloud是一个开源的微服务架构框架,它提供了一系列工具和组件,用于构建和管理分布式系统中的微服务。它基于Spring框架,旨在通过简化开发过程和降低系统复杂性来帮助开发人员构建弹性
    的头像 发表于 11-23 09:24 389次阅读

    docker微服务架构实战

    的容器化技术,为微服务架构的实施提供了强大的支持。本文将介绍Docker微服务架构的实战经验,包括Docker的概述、微服务
    的头像 发表于 11-23 09:26 315次阅读

    设计微服务架构的原则

    微服务是一种软件架构策略,有利于改善整体性能和可扩展性。你可能会想,我的团队需不需要采用微服务,设计微服务架构有哪些原则?本文会给你一些灵感
    的头像 发表于 11-26 08:05 240次阅读
    设计<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的原则