科普文:一文搞懂微服务

262 篇文章 0 订阅
139 篇文章 0 订阅

科普文:一文搞懂软件架构-CSDN博客

概叙

        在前面“一文搞懂软件架构”中介绍了架构设计三原则“解耦、分层、封装”,也介绍了从业务、功能、系统、技术、数据、部署等方面的架构设计是给不同角色的人员看的,老板、CIO、CEO等可能更关心业务架构,核心业务流程是否偏离这些舵手指导的方向,毕竟方向错了,再怎么努力都白费,中国有句老话叫做“做事不由东,累死也无功”。

        产品经理,则关注的是功能架构,他抽象出来的功能是否全覆了老板们的需求。

        架构师则更关心他的技术架构和部署架构,毕竟这是他技术选型后的归纳总结,以及自己丰富的经验积累,他会拿着技术架构告诉老板的需求问题他用什么技术解决,以及三年内的业务量需要多少台服务器来支撑。

        由于篇幅限制,没有具体展开讲“微服务”,这里就单独讲讲,包括微服务发展历程、原理、优缺点、适用场景、微服务拆分、无状态化改造、以及微服务技术选型。

4种常见架构简介

        常见的软件架构有单体架构、分层架构、微服务架构和事件驱动架构。每种架构风格都有其适用的场景和优缺点,根据具体的应用需求和开发环境选择合适的架构风格是非常重要的。

1. 单体架构:


    - 优点:简单、易于开发和维护、性能高。
    - 不足:扩展性差,难以应对大规模的变化和复杂性。
    - 适用场景:小型应用、团队规模小、需求变化不频繁的项目。
    - 解决的问题:简化开发和部署流程,提高性能。

2. 分层架构:


    - 优点:模块化、可扩展、易于维护、高内聚低耦合。
    - 不足:分层多,增加了一定的复杂性。
    - 适用场景:大规模应用、需求变化频繁、团队合作开发。
    - 解决的问题:提高代码的可重用性、易于维护和升级。

3. 微服务架构:


    - 优点:模块化、独立部署、可扩展、易于团队开发、灵活性高。
    - 不足:增加了系统间通信的复杂性、部署和维护成本高、一致性问题。
    - 适用场景:大规模复杂应用、多团队协作、需要快速迭代的项目。
    - 解决的问题:将大型应用拆分为小的、可独立开发和部署的服务,提高系统的可伸缩性和灵活性。

4. 事件驱动架构:


    - 优点:松耦合、可扩展、高可靠性、易于维护。
    - 不足:事件流程控制难以调试和理解、引入了一定的复杂性。
    - 适用场景:异步处理、事件驱动的应用、消息传递和处理的场景。
    - 解决的问题:解耦系统组件、改善系统的可扩展性和可靠性。

        总结来说,不同的软件架构适用于不同的场景和需求。单体架构适用于小型应用,分层架构适用于大规模应用,微服务架构适用于复杂、多团队开发的项目,事件驱动架构适用于异步处理和消息传递的场景。选择合适的架构可以提高开发效率、系统可靠性和可扩展性。

        无论是那种架构,我们要明确的是软件架构的目标是将软件系统划分为不同的组件或模块,并定义它们之间的关系和交互方式。通过合理的架构设计,可以使得软件系统具有良好的可扩展性、可维护性和可重用性,也能够满足用户需求并支持系统的演化和扩展。

微服务架构介绍

        微服务架构是一种将应用程序分解为一系列松耦合、自治的服务的软件架构风格。每个服务都应该围绕着一个特定的业务功能进行设计,可以独立部署、扩展和维护。微服务之间通过轻量级的通信机制(如HTTP协议、消息队列等)进行通信。

        微服务是一种架构风格,用于构建在小型、自治的服务之间进行通信的应用程序。微服务架构通过将应用程序拆分为较小的、可独立部署的服务来提供灵活性和可伸缩性。以下是关于微服务的介绍、原理、发展历程、优点、不足、适用场景以及解决了哪些问题的详细说明:

微服务发展历程

         微服务架构的概念最早出现在2011年的一篇关于“软件架构模式”的文章中。从那时起,微服务架构逐渐受到了越来越多的关注和认可。随着云计算和容器化技术的发展,微服务架构得到了更广泛的应用和推广。

微服务原理

        微服务架构的核心原理是将应用程序拆分为小而自治的服务。每个服务都有自己的数据存储、业务逻辑和用户界面。这些服务之间可以通过API进行通信。通过将应用程序拆分为较小的服务,可以更容易地理解、开发和维护应用程序,以及实现灵活的部署和扩展。

解决了什么问题

        微服务架构解决了传统单体应用程序架构中的一些问题,包括难以扩展、难以维护、难以理解和难以部署的问题。通过将应用程序拆分为小而自治的服务,微服务架构提供了灵活性和可伸缩性,使团队能够更快地交付高质量的软件。

微服务优缺点和适用场景

优点:

  1. 独立部署:每个微服务都可以独立部署,这意味着可以对系统的不同部分进行独立的更新和扩展。
  2. 灵活性:微服务架构允许根据需要进行水平扩展,从而满足不同的业务需求。
  3. 可维护性:由于微服务是小而自治的,因此可以更容易地理解、测试、开发和维护。
  4. 技术多样性:每个微服务可以使用不同的技术栈,这可以使团队可以灵活选择最适合其需求的技术。

不足:

  1. 分布式管理:微服务架构需要管理大量的分布式服务,这增加了系统的复杂性。
  2. 数据一致性:由于微服务之间可能有多个数据存储,所以确保数据一致性可能会变得复杂。

适用场景:

         微服务架构通常适用于复杂、大型的应用程序,尤其是需要灵活部署和扩展的场景。它也适用于团队分工明确、采用敏捷开发方法和迭代开发的项目。

微服务组织结构


        微服务架构是分布式架构的深化,分布式架构偏向于部署和环境,比如上边提到的应用、数据库、缓存等,在多台机器上进行部署,就属于分布式。微服务架构通过业务拆分实现服务组件化,通过组件组合快速开发系统,业务单一的服务组件又可以独立部署,使得整个系统变得清晰灵活。

        大量的分布式服务又使得架构实现面临问题,如服务注册发现,服务统一接入和权限控制,服务的负载均衡,服务配置的集中管理,服务熔断,服务监控等。

        所以微服务架构是由这些基础的服务组件和业务微服务组件共同组成:

  • 服务注册发现组件:进行服务治理
  • 服务网关组件:提供统一入口和权限控制
  • 负载均衡组件:提供客户端或服务器端的负载均衡
  • 集中配置组件:提供服务集中管理
  • 熔断器组件:提供服务熔断
  • 服务追踪组件:提供服务监控

        采用微服务架构后,项目可以快速迭代与持续交付。但是也带了一些弊端,开发人员除了需要关注业务逻辑实现外还需要考虑业务的一系列问题,比如服务注册,服务发现,服务通讯,负载均衡,服务熔断,服务超时等,这些是非常重要的。大多数时候,我们需要依赖第三方库或者组件来提供这些服务,例如Hystrix,Eureka、Zookeeper等组件,在其服务组织中起到了广泛的应用。

微服务和单体应用对比

        微服务和单体应用是两种不同的软件架构方式,有以下对比:

        规模和复杂度:微服务架构将应用程序划分为多个小型、独立的服务,每个服务只关注一个特定的业务功能,因此更适用于规模较大、复杂的应用。而单体应用是一个整体,所有的功能模块都在同一个应用中实现,适用于规模较小、简单的应用。

        部署和扩展:微服务架构允许每个服务独立部署和扩展,可以根据实际需求对每个服务进行独立的水平扩展。而单体应用只能以整体进行部署和扩展,无法按需对特定功能进行扩展。

        可维护性和可测试性:由于微服务将应用拆分为多个独立的服务,每个服务都有自己的代码和数据库,因此更容易维护和测试。而单体应用由于所有功能都在同一个代码库中,增加了代码耦合度,对维护和测试带来挑战。

        团队组织和沟通:微服务架构鼓励团队按照业务功能组织,每个团队负责一个或多个服务,团队间相对独立,沟通成本较低。而单体应用通常由一个团队负责,沟通和协作需要更多的协调和交流。

        技术栈和工具支持:微服务架构通常需要更多的技术栈和工具支持,如服务注册与发现、负载均衡、监控等。而单体应用的技术栈和工具需求相对较少。

        开发速度和迭代:由于微服务的拆分和独立部署,团队可以更快地开发、测试和部署新功能,增加业务迭代速度。而单体应用在开发和部署新功能时需要考虑整体的稳定性和兼容性,迭代速度相对较慢。

        总体来说,微服务架构更适用于规模大、复杂的应用,具有较好的可维护性和可扩展性,但增加了开发和管理的复杂度。单体应用则适用于规模小、简单的应用,开发和部署相对简单,但对维护和扩展的挑战较大。选择何种架构方式,应根据具体应用的需求、团队规模和技术水平等因素进行权衡。

一、微服务拆分理论基础

1、微服务拆分原则

单一职责原则

        单一职责原则是面向对象设计的基本原则之一,它要求一个类只负责一项职责,在微服务架构中,这一原则同样适用。每个微服务都应该具有清晰的业务边界和单一的职责,只负责完成一项特定的业务功能,这样可以确保微服务的内聚性高,耦合度低,便于独立开发、测试和部署。

服务自治原则

        服务自治是指每个微服务都应该具有独立的数据库、独立的开发团队和独立的部署环境,这样可以确保每个微服务都能够独立地进行版本迭代和功能升级,而不会对其他服务产生影响,同时,服务自治也有利于提高团队的协作效率和系统的可靠性。

持续集成和持续交付原则

        持续集成和持续交付是敏捷开发的重要实践之一,强调将代码的开发、测试和部署过程自动化,以加快软件的交付速度。在微服务架构中,每个微服务都应该采用持续集成和持续交付的方式进行开发和部署,以确保代码的质量和系统的稳定性。

2、微服务拆分策略

        从拆分本身来讲,有水平和垂直两种拆分策略:

水平拆分

        水平拆分是按照业务功能或者业务流程的不同阶段进行拆分,比如在电商平台中,按照水平拆分角度可以拆分为商品微服务、订单微服务、支付微服务等,每个微服务都处理电商流程中的一部分业务功能。这种拆分方式有利于各个微服务专注于自己的业务功能,提高内聚性,降低耦合度。

垂直拆分

        垂直拆分是按照系统的不同层次或者不同方面进行拆分,比如在一个垂直业务系统中,按照垂直拆分角度可以拆分为用户微服务、业务逻辑微服务、数据访问微服务,这是按照系统层级关系进行垂直拆分的。还有一种垂直拆分是按照不同的业务领域或者业务场景进行拆分,比如电商平台中的用户服务下会进一步拆分为买家微服务和卖家微服务两个独立的服务。

        水平和垂直拆分的策略是拆分的最基本的策略,但在实际微服务拆分实践过程中,并不是如此简单的水平拆或者垂直拆,要根据系统的具体情况和业务场景,灵活结合水平和垂直的策略,这就会继续向往一层形成更细化的拆分策略,这将在下一部分拆分实践中详细介绍。

3、微服务边界划定策略

        划定服务边界是微服务拆分过程中的关键步骤,它决定了每个微服务的职责范围和交互方式,从我实际经验来看,我给到大家一些在划定边界时应该要考虑的因素:

业务逻辑完整性

        确保每个微服务包含完整的业务逻辑,避免跨服务调用导致的事务一致性问题,尽量将需要保持数据一致性的操作封装在同一个微服务内。

高内聚与低耦合

        每个微服务应该具有高内聚性,就是服务内部的功能紧密相关;同时要保持低耦合性,目的就是减少服务间的依赖和交互复杂度。

数据独立性

        在拆分微服务的时候,尽量让每个微服务拥有自己的数据存储,避免跨服务的直接数据访问,通过 API 进行数据交互,保持数据的独立性和隔离性。

可扩展性与可维护性

        在拆分之初就需要考虑拆分后的每个微服务的可扩展性需求,确保服务在面对增长时能够容易地进行横向扩展,同时要保证服务的可维护性,便于未来的功能迭代和问题排查。

安全性与合规性

        根据业务需求和安全标准来划定服务边界,确保敏感数据和业务逻辑得到妥善的保护和隔离,比如数据隐私保护、访问控制等,是可以独立成为单独的微服务的。

团队组织与协作

        服务边界的划定务必考虑团队的组织结构和协作方式,康威定律嘛,尽量让每个团队负责一个或多个微服务的全生命周期管理,以提高团队的协作效率和响应速度。

二、微服务拆分的“落地”策略

        上面有讲到微服务拆分的水平策略和垂直策略是属于指导策略,但是在具体实践中还远远不够,根据我过往的经历,我把常用的拆分策略讲解如下:

1、基于业务功能的拆分

        基于业务功能进行微服务的拆分是最为常见的一种策略,在这个拆分策略指导下,要求我们先分析单体应用的业务功能,将紧密相关且内聚性高的功能划分为一个服务,也是符合高内聚与低耦合的原则,每个拆分出来的微服务对应一个完整的业务功能。这种拆分方法适用于大型公司有多个业务领域的场景,采用这种拆分方式有利于保持微服务的独立性和可维护性,同时也便于团队之间的协作和沟通。比如上面在水平拆分策略部分讲到的电商平台服务拆分例子。

2、基于数据流的拆分

        基于数据流进行微服务拆分是一种在实践中更加细粒度的方法,在拆分之前要求将单体系统中的数据流有深度的分析和清晰的梳理,找到数据流的起点、终点和全生命周期中的各个关键点,然后根据这些点将系统进行拆分成多个独立的微服务。这种拆分方式一般不建议,因为需要对系统的数据流有深入的了解和分析能力,拆的好的话,是可以有利于优化系统的数据流和性能瓶颈的。比如在一个 CPS 系统中,我们根据数据流可以拆分为点击跟踪微服务、佣金计算微服务、佣金预结算微服务、数据对账微服务、佣金结算微服务等。

3、基于技术特性的拆分

        基于技术特性进行微服务拆分是一种相对比较灵活的方法,它要求根据系统中的技术特性和需求进行微服务的划分和设计。比如,你的系统中有实时计算功能和非实时计算功能,你可以拆分为两个独立的微服务;再者,你的系统中存在高性能需要和低性能需求的两种场景,可以分别拆分成不同的微服务。这种拆分方式虽然有利于发挥不同技术的优势和特点,但是对架构师的要比较高的技术要求,要求他们对技术有深入的了解和掌握能力。

4、基于事件驱动的拆分

        在大量异步事件的系统中,可以考虑根据系统中的事件流来拆分微服务,对系统中的事件生产者和消费者进行全面分析,将相关的事件处理逻辑封装到一个独立的微服务中。

5、基于性能优化策略的拆分

        根据系统的性能需求进行拆分,比如我曾经做过的,把我当时系统中高负载的部分拆分为独立的微服务,便于对这部分进行单独的优化和扩展,这种策略有助于提高系统的整体性能和可伸缩性。

6、基于技术异构性的拆分

        这个一般是多重技术栈并存的企业进行微服务拆分的首选策略,这种策略有助于发挥各种技术的优势,同时降低系统的复杂性。

7、基于领域驱动设计(DDD)的拆分

        基于 DDD 的方法根据业务领域的不同来拆分微服务,这种策略要求企业内有掌握 DDD 方法的人,首先要识别出系统的核心领域和子领域,然后为每个子领域去创建对应的一个或者多个微服务。这种策略有助于保持业务逻辑的清晰和一致性,但是要求比较高。

三、微服务拆分的实践步骤

        在进行微服务拆分时,可以总结提炼为以下四个步骤:

步骤一:合理划分业务边界

        首先,对你所承担的系统进行全面分析,明确系统的业务边界和业务需求,有能力的我还是建议采用 DDD 的分析思想去做这个分析,通过对业务的深入分析和需求调研,找出系统中的核心业务功能和关键业务流程。

        然后,根据这些功能和流程的明确结论,基于上面讲的原则、拆分策略、划定边界以及具体落地的拆分策略,进行微服务的划分和设计。

        在这个过程中,一定要注意避免过度拆分和拆分不足的问题,要保持服务的合理力度和数量,不然后患无穷。

        如果你是面临一个超大单体系统进行微服务拆分的话,我个人建议一个一个往外拆,不要一股脑玩,不然非常容易出事。如果你是一个从 0 到 1 的场景,那我建议你一定做好拆分前的准备工作,尽量拆分合理。

步骤二:保持服务的独立性和可维护性

        基于步骤一,有了相对明确的微服务拆分方案后,要根据这个方案充分考虑每一个可能成为独立微服务的服务的独立性和可维护性,每一个微服务要具有清晰的接口和明确的职责边界,能够独立地完成特定的业务功能。

        这个过程中,要注意避免服务之间的循环依赖和过度耦合问题,一定要尽量保持服务的松耦合和高内聚特性。

步骤三:采用合适合理的通信机制

        完成以上两个步骤后,就要开始针对不同微服务的特性,选择合适的服务之间的通信机制进行服务之间的交互和数据传输,此时的目标是要保证服务间的通信效率和可靠性。

        一般常见的通信机制有同步和异步两种,这个我之前的文章有过详细的介绍。这里不再赘述。

        切记要根据具体的微服务承担的业务需求和技术特点来选择合适的通信机制,才能更好地提高系统的性能和稳定性。

步骤四:把服务的可观测性和可管理性设计在前面

        如果你的微服务数量较多,且互相独立部署运行在不同的容器化环境中,一定要在服务投产前,做好服务的可观测性和可管理相关的设计。这样服务投产后,可以通过这两个设计结果及时发现问题并进行处理,而且这两项设计结果对保证系统稳定运行以及提高开发运维效率也有着非常重要的作用。

        可以通过日志收集分析、监控告警等基础设施能力的构建,当然也可以基于云原生相关能力来达到这个目标,实现对微服务运行状态的实时监控和故障快速定位处理。

        再加点猛料的话,你还可以采用服务网格等技术,来进一步增强微服务之间的通信安全性以及流量管理能力等,这些都是构成相对完善可靠易用易维护的微服务架构体系中不可缺少的组成部分。

步骤五、微服务的无状态设计

        在微服务架构中,实现无状态服务是关键之一,以确保服务的可扩展性、可维护性和可靠性。无状态服务意味着服务的每次处理请求都是独立的,不依赖于之前的任何状态信息服务间的交互应当通过无状态的通信协议实现,这样做的目的是为了让服务更容易扩展和管理。

        为了深入理解,我们着重展开服务间的交互应当通过无状态的通信协议实现。这通常意味着服务消费者和提供者之间的每次交互都必须包含所有必要的上下文信息,而不是依赖于之前的会话状态。这种方式简化了服务的设计,因为服务不需要管理和同步会话状态,从而降低了复杂性,同时提高了服务的可靠性和伸缩性。常见实现方式包括使用RESTful API、采用无状态的认证机制如JWT(Json Web Token)等。

1、设计无状态服务的关键原则

1.1提供无状态API

        在设计微服务时,确保API具有无状态性至关重要。每个API调用都应该包含执行操作所需的所有信息而不是依赖于之前的通信。这种方法的一个常见实践是RESTful API设计,其鼓励使用HTTP方法(如GET、POST、PUT、DELETE)作为无状态操作进行资源管理

1.2使用无状态认证机制

        在微服务架构中,处理用户身份验证和授权时,推荐使用无状态认证机制,例如JWT。这种机制允许服务在不需要存储用户会话信息的情况下验证用户身份,每个请求都包含一个自带完整用户认证信息的令牌,简化了服务间的安全通信。

2、会话管理和数据存储

2.1会话信息的外部存储

        尽管微服务需要保持无状态,但对于需要跟踪用户会话或工作流状态的场景,可以通过外部存储解决,如Redis或数据库。关键是服务处理请求时动态读写这些外部系统,而不是在服务内部维护状态。

2.2基于客户端的存储

        另一种策略是将会话数据存储在客户端,例如使用Cookie或浏览器的本地存储。这种方式将状态管理的责任转移到了客户端,从而保持了服务端的无状态特性。这对于减轻服务器负载和支持大规模分布式系统尤为有益。

3、服务设计和实现

3.1服务隔离

        在实现无状态服务时,服务隔离是一个关键原则。每个服务应负责一个明确的业务功能,并且与其他服务保持松耦合。这不仅有助于维护无状态特性,也使得服务更易于扩展和维护。

3.2依赖注入

        为了进一步解耦服务内部的组件和配置,依赖注入是一种常用的技术。通过这种方式,服务的配置和依赖在运行时进行加载和管理,减少了组件间的直接依赖,支撑了灵活的服务扩展和重用。

4、实践中的面临的挑战和解决策略

4.1状态一致性

        在分布式系统中,确保各服务间状态一致性是个挑战。采用事件驱动架构和消息队列可以有效地解决这个问题,通过异步消息传递来协调不同服务间的状态变化。

4.2性能优化

        无状态服务可能面临的一个挑战是性能开销,因为每次请求都需要携带全量信息。通过缓存常用数据、优化网络通信,以及使用高效的序列化技术,可以显著提高系统的性能。

5、结论

        在微服务架构中实现无状态服务是确保系统可伸缩性、可靠性和易管理性的关键。通过上述策略和实践,可以有效地设计和实现无状态的微服务,同时解决实践过程中可能面临的挑战。持续的优化和改进,以及对新技术和方法的探索,将进一步加强微服务架构的无状态特性,为构建高效、可靠的系统打下坚实基础。

6、相关问答FAQs:

        Q: 无状态服务在微服务架构中有什么作用?

        A: 无状态服务在微服务架构中起到了很重要的作用。由于这些服务不保存任何上下文信息和状态,它们可以更容易地进行水平扩展和负载均衡。无状态服务还更易于维护和更新,因为它们不依赖于外部状态的变化。此外,无状态服务使得系统更加可靠,因为一个服务的故障不会影响其他服务的状态。

        Q: 如何保证无状态服务的可扩展性和弹性?

        A: 要保证无状态服务的可扩展性和弹性,可以通过以下几种方式来实现。首先,使用负载均衡器将请求均匀地分发给不同的服务实例,以实现水平扩展。其次,每个服务实例可以在云环境中创建多个副本,以确保在某个副本故障时能够继续提供服务。另外,可以使用消息队列来异步处理请求,从而减少实时请求对服务的压力。最后,使用自动化部署和监控工具,可以在需要时快速启动新的服务实例或替换故障的实例,以提高系统的可靠性和弹性。

        Q: 无状态服务如何保证请求的完整性和一致性?

        A: 虽然无状态服务不保存状态,但仍然需要保证请求的完整性和一致性。一种常见的方法是使用事务处理和幂等性设计。通过使用事务处理,可以将多个操作作为一个原子性的操作进行处理,以确保数据的一致性。此外,通过采用幂等性设计,可以使得相同的请求可以重复执行多次而不会产生任何副作用。另外,可以使用分布式锁或乐观锁来保证多个请求对共享资源的并发访问的一致性。这些措施将确保无状态服务在处理请求时保持数据的完整性和一致性。

四、微服务技术选型

        说到微服务技术栈,我们想到的是springcloud,但是在国内用的多的还是spring cloud alibaba。

1.Spring Cloud Alibaba

        鉴于 Spring Cloud 各种组件的停止维护,选型 Spring Cloud Alibaba 是目前最正确的姿势:

  • Spring Cloud Alibaba 基于 Spring Cloud 构建,提供了对 Alibaba 组件的封装而已,比如:Nacos、Sentinel等,其最顶层的抽象还是 Spring Cloud,所以选Spring Cloud Alibaba 就是Spring Cloud。

  • Spring Cloud Alibaba 作为 Spring Cloud 的官方顶级项目,也是国内最强微服务框架及事实上的标准,没有之一。

Spring Cloud Alibaba 也是国内最主流微服务框架,涵盖了阿里巴巴这些年开源的重要中间件,它们都经过历年双 11 的洗礼,含金量十足,现在已然成了国内微服务市场的重磅利器。

        Spring Cloud Alibaba 已经被赫赫列在了 Spring Cloud 官方项目,可以看出 Spring Cloud Alibaba 的重要性。

现在阿里开源的 Spring Cloud Alibaba 日益壮大,Spring Cloud Alibaba 也是现在 Spring Cloud 框架选型的必选技术栈之一,Spring Cloud Alibaba 俨然也成了国内微服务框架事实上的标准。

2.Spring Cloud Alibaba技术栈

        Spring Cloud Alibaba 最新技术栈如下:

组件Spring CloudSpring Cloud NetflixSpring Cloud Alibaba
注册中心Service Registry
Service Discovery
Eureka 1.x
Eureka 2.x(停止维护)
Nacos
配置中心Spring Cloud Config
Git/ JDBC/ Vault...
Archaius(停止维护)Nacos
服务容错Spring Cloud Circuit BreakerHystrix(停止维护)Sentinel
服务调用Spring Cloud OpenFeign
RestTemplate
Feign
负载均衡Spring Cloud LoadBalancerRibbon(停止维护)
服务网关Spring Cloud GatewayZuul(停止维护)
消息队列Spring Cloud Stream
RabbitMQ/ Kafka
RocketMQ
链路追踪Spring Cloud Sleuth
分布式事务Seata

提供微服务分布式版本和单体式版本:
        1、基于新版Spring Cloud Leyton、Spring Boot 3.3.1和Spring Cloud Alibaba(Dubbo、Nacos、Seata、Sentinel)组件实现企业级微服务架构。
        2、新版工作流实现业务流程,支持新的BPMN 2.0标准,对Web设计更友好,适应未来发展。
        3、代码生成器(模板管理、正向生成、反向生成)动态智能生成前端后端各层次代码和SQL,提高开发效率。
        4、支持MySQL、Oracle、SQL Server、PostgreSQL、DB2和国产分布式数据库。
        5、Mybatis + Mybatis-Plus作为持久层框架,读写性能好,更适合SQL的优化。
        6、MongoDB作为高性能数据存储,实现统计服务。
        7、Redis作为分布式缓存,实现高性能数据读取。
        8、Spring Scheduling Tasks实现分布式任务调度。
        9、RabbitMQ、RocketMQ、Kafka作为消息队列,实现数据集成、系统解耦、异步处理、事件驱动和流量削峰。
        10、基于Twitter Snowflake算法优化而成分布式ID,更适合分库分表。
        11、Spring Security + OAuth2实现认证授权和安全保护。
        12、Spring Cloud Gateway实现微服务网关,Ribbon实现负载均衡,Feign实现服务调用,Bus实现消息总线,Stream实现事件驱动,Sleuth实现链路跟踪,Turbine实现集群聚合监控。
        13、阿里巴巴Easyexcel 3.3.2作为Excel工具。
        14、阿里巴巴Fastjson 2.0.41作为JSON解析器和生成器。
        15、阿里巴巴数据库连接池Druid 1.2.20和Druid Monitor监控。
        16、阿里巴巴Seata 1.7.1作为高性能分布式事务,对业务代码零侵入。
        17、阿里巴巴Sentinel 1.8.6实现流量控制,阿里巴巴Sentinel Dashboard查看实时监控和机器列表,配置簇点链路、流控规则、降级规则、热点规则、系统规则、授权规则和集群流控。
        18、阿里巴巴Nacos实现配置中心、服务注册&发现,阿里巴巴Nacos Dashboard实现配置管理、服务管理、集群管理、权限控制、命名空间。
        19、新版ELK实现日志集中分析平台,Elasticsearch作为分布式大数据搜索分析引擎,Logstash作为分布式实时数据采集日志组件,Kibana作为分布式数据可视化日志组件。
        20、Swagger实现接口文档和协同开发。
        21、Prometheus时序数据监控和Grafana可视化平台。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-无-为-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值