微服务【分布式架构&认识微服务&SpringCloud】第1章

本文涉及的产品
云原生网关 MSE Higress,422元/月
MSE Nacos 企业版免费试用,1600元额度,限量50份
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 目录1,认识微服务1.1,单体架构1.2,分布式架构1.3,微服务1.4,SpringCloud1.5,总结单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。(意思就是说,所有的功能在一个项目中进行实现,不用管复杂的架构设计,只需要创建一个项目,有功能就往这个项目里面加代码就ok了)

1,认识微服务

1.1,单体架构

image.gif编辑

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。(意思就是说,所有的功能在一个项目中进行实现,不用管复杂的架构设计,只需要创建一个项目,有功能就往这个项目里面加代码就ok了)

优点:

1,架构简单:不需要搞复杂的架构设计理念

2,部署成本低:把写好的项目打成包,在tomcat服务器上面部署一下,用户就可以访问了,如果用户访问多了,那就在加两个服务器,形成负载均衡的集群。

缺点:

1,耦合度高:在大型项目的开发中,像拼多多,淘宝这些,一个大型项目里面有很多的功能模块,代码量十几万行甚至于几十万行代码,如果使用单体架构。

第一:打包部署就可以需要很久,效率太低。
第二:项目中的功能模块的代码你中有我,我中有你,假设其中一个模块中出现问题,其他模块也会受到影响,代码的边缘化也越来越模糊。所以在大型项目中基本上都是采用分布式架构

1.2,分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务

image.gif编辑

分布式架构的优缺点:

优点:

    • 降低服务耦合:每个功能模块,都成为了单独的项目,大家各写各的项目,没有过多的牵扯耦合度就会大大的降低,两外像打包速度,代码量都会减少。
    • 有利于服务升级和拓展:像以后功能模块项目/服务进行升级维护也影响不了别的功能模块项目的正常进行。

    缺点:

      • 服务调用关系错综复杂:一个大型的项目被拆分许多的服务,各个服务的功能模块该如何调用?许多的服务部署起来也是比较麻烦。

      分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

        • 服务拆分的粒度如何界定?(就是说一个大型项目被拆分为许多的服务,该如何拆分哪几个服务作为单独的模块,那些业务不需要拆分,这个拆分的粒度需要把握
        • 服务集群地址如何维护?(就像下面一个支付功能的服务,就部署了两台机器,如果是个大型项目需要部署上百台的,这些服务集群的地址该如何的维护和调用,总不能把地址写死吧!如果部署上线地址变了怎么办,维护起来很麻烦
        • image.gif编辑
        • 服务之间如何实现远程调用(各个服务之间该如何进行远程调用呢?)?
        • 服务健康状态如何感知?(加入用户功能这个服务调用商品功能这个服务,刚好这个商品服务出问题了挂了,这边一调用也导致用户功能服务也出问题了,这样就造成了级联失败)

        为了解决这些问题,人们需要制定一套行之有效的标准来约束分布式架构。出现了各种各样的技术(如下图)去解决这些问题:但是近几年运用最广泛的最火的莫过于微服务

        image.gif编辑

        1.3,微服务

        image.gif编辑

        微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征(微服务它还是一种分布式架构只不过人们在设计分布式过程中踩坑,不断的总结经验,得到了良好的分布式架构实践方案):

          • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责(什么是单一职责我举个例子加入一个商城项目里面有用户模块,用户里面又有会员模块,积分模块什么的,把每个模块都拆分为一个服务,这就是拆分的力度更小,一个服务就对应一个一个业务功能,一对一的效果)
          • 面向服务:服务提供统一标准的接口,与语言和技术无关(这个服务该如何调用,肯定不能像单体架构中直接调用,这就需要这个服务提供这个功能的接口,这样别的服务就可以远程调用你这个服务中的接口从而实现想要实现的功能)
          • 自治:1,团队独立(就是交给你们五个人或者八个人做这个服务,你们分工有前端,运维,后端,测试,什么的,非常高效的把该服务开发出来,以后技术升级或者服务升级直接找到你们这个团体着手去做,很高效方便)
            2,技术独立(因为服务与服务之间互不影响,你们这个团队的服务可以自己选择自己想用的技术或者适合本次业务的技术,术业有专攻嘛
            3,数据独立(每个服务有单独的数据库),独立部署(用户可以根据自己的需求去访问自己想要的服务)和交付
          • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题(这个就是服务调用过程中做了隔离,调用你这个服务发现你挂了,但是我不能挂做出一定的容错性,避免出现级联问题

          微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

          因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

          但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。

          其中在Java领域最引人注目的就是SpringCloud提供的方案了。

          1.4,SpringCloud

          SpringCloud是目前国内使用最广泛的微服务框架。官网地址:Spring Cloud

          SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验

          其中常见的组件包括:

          image.gif编辑

          另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

          image.gif编辑

          1.5,总结

            • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
            • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
            • 微服务:一种良好的分布式架构方案
              ①优点:拆分粒度更小、服务更独立、耦合度更低
              ②缺点:架构非常复杂,运维、监控、部署难度提高
            • SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

            最后:

                  如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!

                 愿我们在未来的日子里。熠熠生辉!!!

            目录
            打赏
            0
            0
            0
            0
            3
            分享
            相关文章
            智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
            智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
            119 5
            Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
            通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
            572 57
            分布式系统架构8:分布式缓存
            本文介绍了分布式缓存的理论知识及Redis集群的应用,探讨了AP与CP的区别,Redis作为AP系统具备高性能和高可用性但不保证强一致性。文章还讲解了透明多级缓存(TMC)的概念及其优缺点,并详细分析了memcached和Redis的分布式实现方案。此外,针对缓存穿透、击穿、雪崩和污染等常见问题提供了应对策略,强调了Cache Aside模式在解决数据一致性方面的作用。最后指出,面试中关于缓存的问题多围绕Redis展开,建议深入学习相关知识点。
            484 8
            基于 Spring Cloud 的微服务架构分析
            Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
            153 0
            分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
            分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
            137 0
            分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
            融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
            本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
            280 3
            融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
            领先AI企业经验谈:探究AI分布式推理网络架构实践
            当前,AI行业正处于快速发展的关键时期。继DeepSeek大放异彩之后,又一款备受瞩目的AI智能体产品Manus横空出世。Manus具备独立思考、规划和执行复杂任务的能力,其多智能体架构能够自主调用工具。在GAIA基准测试中,Manus的性能超越了OpenAI同层次的大模型,展现出卓越的技术实力。
            分布式系统架构6:链路追踪
            本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
            321 41
            微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
            本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
            317 17
            分布式系统架构7:本地缓存
            这是小卷关于分布式系统架构学习的第10篇文章,主要介绍本地缓存的基础理论。文章分析了引入缓存的利弊,解释了缓存对CPU和I/O压力的缓解作用,并讨论了缓存的吞吐量、命中率、淘汰策略等属性。同时,对比了几种常见的本地缓存工具(如ConcurrentHashMap、Ehcache、Guava Cache和Caffeine),详细介绍了它们的访问控制、淘汰策略及扩展功能。
            152 6
            AI助理

            你好,我是AI助理

            可以解答问题、推荐解决方案等

            登录插画

            登录以查看您的控制台资源

            管理云资源
            状态一览
            快捷访问