• 第一章初识微服务


    认识微服务

    随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

    • 了解微服务架构的优缺点

    单体架构

    单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

    image-20230817155321413

    单体架构的优缺点如下:

    优点:

    • 架构简单
    • 部署成本低

    缺点:

    • 耦合度高(维护困难、升级困难)

    分布式架构

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

    image-20230817155806244

    分布式架构的优缺点:

    优点:

    • 降低服务耦合
    • 有利于服务升级和拓展

    缺点:

    • 服务调用关系错综复杂

    需要考虑的问题

    image-20230817160011635
    • 服务拆分的粒度如何界定?
    • 服务集群地址如何维护?
    • 服务之间如何调用?
    • 服务健康状态如何感知?

    集群、微服务、分布式

    ①. 微服务:拒绝大型单体应用,基于业务对微服务进行拆分,各个服务独立部署运行

    • (微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器)

    ②. 集群、分布式、节点

    • 集群:几台服务集中在一起,实现同一业务
      • 集群可以是我是一个应用。这一个应用扛不住了,把这个应用部署在不同的机器上,对外提供的是一个服务
    • 分布式:将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)
    • 节点:集群中的一个服务器
      • 注意:集群(多个人在一起作同样的事情) 分布式(多个人在一起作不同的事)
      • 分布式中的每一个节点都可以做集群,而集群不一定是分布式的
      • 集群是个物理形态,分布式是工作方式

    举例:

    • 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干
    • 后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群
    • 为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 … 厨师和配菜师的关系是分布式
    • 一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。
    • 一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群

    微服务

    微服务的架构特征:

    • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
    • 自治:团队独立、技术独立、数据独立,独立部署和交付
    • 面向服务:服务提供统一标准的接口,与语言和技术无关
    • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

    微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。、

    微服务的具体架构

    image-20230817161338056

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

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

    微服务技术对比

    image-20230817161814420

    企业中的技术需求

    image-20230817162312072

    学习的使用的版本

    image-20230817162608112
    • SpringBoot版本是2.3.4.RELEASE
    • SpringCloud版本是Hoxton.SR8
    • spring-cloud-alibaba-dependencies是2.2.2.RELEASE
    <properties>
            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
            <java.version>1.8java.version>
            <spring-cloud.version>Hoxton.SR8spring-cloud.version>
            <mysql.version>5.1.47mysql.version>
            <mybatis.version>2.1.1mybatis.version>
    properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    总结

    • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

    • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

    • 微服务:一种良好的分布式架构方案

      • ①优点:拆分粒度更小、服务更独立、耦合度更低

      • ②缺点:架构非常复杂,运维、监控、部署难度提高

    SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

    服务拆分注意事项

    • 不同微服务,不要重复开发相同业务
    • 微服务数据独立,不要访问其它微服务的数据库
    • 微服务可以将自己的业务暴露为接口,供其它微服务调用
    image-20210713210800950
  • 相关阅读:
    springboot180基于spring boot的医院挂号就诊系统
    我用ChatGPT写2023高考语文作文(一):全国甲卷
    UTS 在安卓系统上的开发应用
    还用 Macbook 装Windows ?30分钟玩转macOS系统
    iOS 组件化的创建 -创建 cocoapods 库
    目标检测之多尺度融合
    containerd 源码分析:kubelet 和 containerd 交互
    第19章_体系结构
    指静脉处理综合代码(orz)
    好用的在线客服系统PHP源码(开源代码+终身使用+安装教程) 制作第一步
  • 原文地址:https://blog.csdn.net/qq_50985215/article/details/132678312