SpringCloud——微服务

2023-10-27

微服务技术栈

在之前的开发过程中,我们将所有的服务都部署在一台服务器中,当我们的服务开始越来越多,业务越来越复杂,当一台服务器不能承担我们的业务的时候,就需要将不同的业务分开部署在不同的服务器上,这每一个单独分离的服务,就是微服务,这些搭载了单个业务的服务器,就是【服务集群】。

这些服务集群是用来做具体的业务逻辑的,当我们在调用服务的时候,需要有一个【注册中心】去将每一个服务器的地址以及对应搭载的服务记录下来,这样我们在调用服务的时候就知道如何去找这些服务。同样的,不同的服务有不同的配置,这些配置如果单独写在对应服务的服务器上,那维护的难度就会上升,这时候就需要一个【配置中心】去集中管理所有服务的配置。

并且还有一个【服务网关】用户通过他去访问具体的服务,同时【服务网关】也具有请求路由以及负载均衡的作用。

在后端数据库中,如果服务直接与数据库做交互,那么访问的效率就会变慢,这时候,就需要【分布式缓存】来将数据库中的一些数据缓存到内存中,只有缓存未命中的内容才会与数据库做交互,并且加入了【分布式搜索】用于复杂的搜索逻辑,统计和分析。

并且加入了【消息队列】用于异步通信,缩短业务时间,提高服务的并发。

【分布式日志服务】以及【系统监控链路追踪】用户监控和排查服务集群中出现的错误和执行时异常。

这些庞大的系统要部署,通过人力去部署肯定是不现实的,所以加入了【Jenkins】来帮助我们去部署项目,并且通过【Docker】生成镜像,以及自动部署,这些过程叫做【持续集成】

由上面的服务架构,以及后面的持续集成,这些加起来一起,整个的过程被称为【微服务】。

微服务技术栈——技术分类

  1. 微服务治理
  2. 缓存技术
  3. 异步通信技术
  4. 分布式搜索技术
  5. 持续集成(DevOps)

认识微服务

服务架构演变

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

优点:

  1. 架构简单
  2. 部署成本低

缺点:

  1. 耦合度高

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

优点:

  1. 降低服务耦合
  2. 有利于服务升级拓展

服务治理

  1. 服务拆分粒度如何?
  2. 服务集群地址如何维护?
  3. 服务之间如何实现远程调用?
  4. 服务健康状态如何感知?

微服务介绍

微服务是一种经过良好架构设计的【分布式】架构方案,微服务架构特征:

  1. 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
  2. 面向服务:微服务对外暴露业务接口
  3. 自治:团队独立,技术独立,数据独立(每个服务有自己独立的数据库,有自己独立的数据,数据解耦),部署独立
  4. 隔离性强:服务调用做好隔离,容错、降级、避免出现级联问题(高内聚,低耦合,降低服务产生影响的范围)

微服务结构

微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo。

企业需求

SpringCloud

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

他长这样:

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

SpringCloud与SpringBoot的版本兼容关系如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud——微服务 的相关文章

随机推荐

  • RISC-V指令集是一种精简的、可编程的指令集,它主要用于实现各种复杂的数据处理与控制任务。它提供了一系列简单的、可编程的指令,可以用来实现复杂的操作,比如addi指令,它可以将一个常数(如0x1)加...

    RISC V指令集是一种精简可编程的指令集 可以用来实现复杂的数据处理和控制操作 它提供了一系列简单可编程的指令 例如addi指令 它可以将一个常数加到寄存器中 并将结果存储到另一个寄存器中 从而实现特定的操作
  • 小白学Linux之#pragma的用法

    预编译指令 pragma的用法 最近在看开源项目中的代码时 发现许多地方都用到了 pragma的程序 因此 就问了下谷歌老师 总结了下 pragma预编译指令的常用用法 现在和大家分享下 一 pragma最常用的方法 1 progma pa
  • 【Node】package.json文件

    package json 文件详解前言一 package json 文件作用二 package json 文件创建三 package json 文件示例四 package json 文件配置说明 五 项目依赖 六 开发依赖 七 Node j
  • 【Linux】工具(5)——gdb

    今天我们来到Linux工具的最后一篇博客 gdb的使用 目录 一 Linux下的release和debug 二 gdb常用指令选项 一 Linux下的release和debug 我们先来写一个Makfile 来方便我们编译代码 再来写一个t
  • C# 中的多线程和异步编程

    目录 前言 1 并发 并行 异步 同步 的概念 区别以及使用场景 1 并发和并行 2 同步和异步 3 何时使用多线程编程 何时使用异步编程 2 基础知识 1 简介及概念 1 1Join 和 Sleep 1 2线程是如何工作的 1 3线程 v
  • MySql事务和存储引擎

    目录 一 MySQL 事物 1 事务的概念 2 事务的ACID特点 2 1 1 原子性 2 1 2 一致性 2 1 3 隔离性 2 1 4 Mysql 及事物隔离级别 查询全局事务隔离级别 查询会话事务隔离级别 设置全局事务隔离级别 设置会
  • DRF---序列化组件

    目录 序列化器Serializer 序列化组件基本使用 使用序列化类 序列化多条数据 使用序列化类 序列化单条数据 反序列化 新增 修改 新增 视图类 序列化类 视图类 序列化类 序列化类的常见字段类和常见参数 常用字段类型 选项参数 通用
  • 【Linux线程同步】生产者消费者模型

    文章目录 1 peach 线程互斥中可能还会存在的问题 peach 2 peach 线程同步 peach 2 1 apple 同步概念与竞态条件 apple 2 2 apple 条件变量函数 apple lemon 初始化 lemon le
  • Qt5.15源码编译详解

    1 请先参考 https blog csdn net weixin 60395515 article details 127284046 spm 1001 2014 3001 5501 2 有以下几个不同的地方需要修改 Qt5的mkspec
  • 超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一

    自学python No 2 引语 题目 案例实现 range 函数 append 函数 pop 函数 完整代码 引语 记录学习路程 抛砖引玉 如有更好的算法或者出现错误 欢迎指点 题目 有n个人围成一圈 顺序排号 从第一个人开始报数 从1到
  • 汽车之家各种车型参数爬虫

    汽车之家各种车型参数爬虫 结果如下 本案例使用jupyter notebook 用到requests BeautifulSoup lxml urlencode pandas五个库 爬取下来的数据如下图所示 详细过程 整个过程分成三个部分 1
  • ubuntu系统信息查询(主板,内存,硬盘,网卡)

    1 主板型号 主板支持最大内存 单条内存的参数 sudo dmidecode t 2 查看主板信息 sudo dmidecode t 16 grep Maximum 查看主板支持最大内存 sudo dmidecode t memory 查看
  • JDBC、连接步骤(4步)、需要导入的第三方jar包、开发步骤

    1 JDBC Java Database Connectivity java连接数据库的工具 1 1 什么是JDBC 他是java提供的一组API 用来提供连接数据库中需要用到的类和接口 他是一组规范 为不同数据库封装相同接口的一组规范 让
  • 基于 Web 的 LDAP 认证,访问资源就是这么安全

    轻量级目录访问协议 即 LDAP 协议 是微软 Active Directory AD 和 OpenLDAP 等传统身份管理解决方案中的核心身份认证协议 然而 IT 环境的不断发展暴露了传统方案的问题 基于本地部署的设计逻辑无法适应新兴的云
  • Unity2D游戏无限刷新地图

    关于Unity2D游戏如何无限刷新地图的问题 首先在Unity中创建多个大小相同的物体当做刷新的地图对象 然后在创建一个名称为Endless cs的脚本 然后添加如下代码 public float distance void OnBecam
  • cmake(三十五)Cmake之include指令

    一 CMakeLists txt和cmake脚本的联系和区别 cmake脚本 1 cmake文件里面通常是 什么信息 information cmake文件 里包含了一些 公共 复用 的 cmake命令 和一些 宏 函数 当CMakeLis
  • java开发团队认知_一个优秀的研发团队应该具备什么特征

    1 计划执行 计划安排得当 不要老加班 不要老是现实和计划不匹配 不要做到哪儿计划就推后到哪儿 2 研发成果 成功产出几个重影响力级别的 完整成块的 有成就感自豪感的产品或项目 3 团队氛围 这个团队每个人都相处的很融洽 4 团队协作 每个
  • Pytorch 的 LSTM 模型的简单示例

    1 代码 完整的源代码 import torch from torch import nn 定义一个LSTM模型 class LSTM nn Module def init self input size hidden size num l
  • C. Doremy‘s IQ(二分/贪心)

    题目 题意 给定n个任务和艾米的智商q 艾米要按顺序处理这n个任务 每个任务有难度值a i 对于每个任务 艾米可以选择处理 也可以选择不处理 如果艾米当前的智商q大于等于任务a i 则艾米可以直接处理该任务 智商不受任何影响 如果艾米当前的
  • SpringCloud——微服务

    微服务技术栈 在之前的开发过程中 我们将所有的服务都部署在一台服务器中 当我们的服务开始越来越多 业务越来越复杂 当一台服务器不能承担我们的业务的时候 就需要将不同的业务分开部署在不同的服务器上 这每一个单独分离的服务 就是微服务 这些搭载