SpringCloud——微服务

news2025/4/11 16:08:38

微服务技术栈

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

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

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

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

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

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

这些庞大的系统要部署,通过人力去部署肯定是不现实的,所以加入了【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的版本兼容关系如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode725. 分隔链表(java)

分隔链表 题目描述拆分链表代码演示 题目描述 给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部…

C【操作符】

1. 操作符分类: 2. 算术操作符 int main() {double a 5 % 2;//商2余1printf("a %lf\n", a);return 0; } 3. 移位操作符 3.1 左移操作符 左边抛弃、右边补0 3.2 右移操作符 首先右移运算分两种: 1. 逻辑移位 左边用0填充,右边丢…

5.4 转换数据

5.4 转换数据 5.4.1 哑变量处理类别型数据5.4.2 离散化连续型数据1、等宽法2、等频法3、聚类分析法 数据集 E:/Input/ptest.csv 5.4.1 哑变量处理类别型数据 数据分析模型中有相当一部分的算法模型都要求输入的特征为数值型,但实际数据中特征的类型不一定只有数值…

【C++基于多设计模式下的同步异步日志系统】

文章目录 [toc] 1 :peach:项目介绍:peach:2 :peach:开发环境:peach:3 :peach:核心技术:peach:4 :peach:环境搭建:peach:5 :peach:日志系统介绍:peach:5.1 :apple:为什么需要日志系统?:apple:5.2 :apple:日志系统技术实现:apple:5.2.1 :lemon:同步写日志:lemon:5.2.2…

如何在公网远程访问内网的jupyter notebook,随时随地都能跑代码!

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

Ruoyi-vue项目讲解

[TOC]若依前后端调用接口解读 若依github官方下载地址 若依gitee官方下载地址 1.验证码时候的前端调用接口 调用前端登录界面的时候,调用的是login.vue这个文件中的created函数 这里我们查看getCode函数方法 可以看到,这里先调用了一个getCodeImg函数…

ChatGLM Pytorch从0编写Transformer算法

预备工作 # !pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl numpy matplotlib spacy torchtext seaborn import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import math, copy, tim…

八股整理(计网,os)

1.进程和线程的区别 1.1什么是进程和线程 1.进程是操作系统进行资源分配和调度的一个基本单位,资源包括cpu,内存,磁盘等等IO设备等等。每一个进程启动都会最先产生一个线程,即主线程,然后主线程会在创建其他的子线程…

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多…

【Redis缓存:常见问题及解决方案】

目录 ①缓存雪崩 常见的解决方案 加锁排队 随机化过期时间 设置⼆级缓存 ②缓存穿透 常见的解决方案 布隆过滤器 缓存空结果 接口层增加校验 ③缓存击穿 常见的解决方案 加锁排队 设置热点数据永远不过期 分布式缓存系统 ④缓存预热 缓存预热的实现思路 ①缓…

C语言开发手册,辅助工具

方便查函数,头文件,日常语法,c99与c11的差异,等 https://www.php.cn/manual/view/34866.html

微信小程序通过普通二维码扫码进入指定页面带参数

微信小程序通过普通二维码扫码进入指定页面带参数 首先进入公众号开发者后台 https://mp.weixin.qq.com/ 进入开发管理->开发设置 扫普通链接二维码打开小程序 二维码规则填写服务器域名、填写前缀占用规则不占用就是其他开发者都可以使用这个后缀,占用则只能…

MYSQL性能优化——基于成本的优化

MYSQL性能优化 详见 GitBook MYSQL性能优化 什么是成本 我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在MySQL中一条查…

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第10套

少儿编程 蓝桥杯青少组计算思维题真题及解析第10套 1、明明买了一个扫地机器人,可以通过以下指令控制机器人运动: F:向前走 10 个单位长度 L:原地左转 90 度 R:原地右转 90 度 机器人初始方向向右,需要按顺序执行以下那条指令,才能打扫完下图中的道路 A、F-L-F-R-F-F-R-F-…

北邮22级信通院数电:Verilog-FPGA(3)实验“跑通第一个例程”modelsim仿真及遇到的问题汇总(持续更新中)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 注意:本篇文章所有绝对路径的展示都来自…

apache poi 实现Excel 下拉联动

原文链接&#xff1a;Java poi实现Excel 下拉联动 Java 实现Excel 下拉联动&#xff0c;本示例中实现了省市区乡镇村联动。适用于03版本Excel。 依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi…

vue 01 创建一个简单vue页面

去vue官网下载vue.js 引用vue.js vue语法 一个vue实例&#xff0c;绑定一个容器&#xff0c;一对一关系 <!DOCTYPE html> <html><head><meta charset"UTF-8"/><title>初始Vue</title><script type"text/javascript&qu…

通过Sealos 180秒部署一套K8S集群

通过Sealos 180秒部署一套K8S集群 一、主机准备 1.1 主机操作系统说明 序号操作系统及版本备注1CentOS7u9 1.2 主机硬件配置说明 k8s集群CPU及内存最低分别为2颗CPU、2G内存&#xff0c;硬盘建议为100G 需求CPU内存硬盘角色主机名值8C8G1024GBmasterk8s-master01值8C8G1024…

面试时总被问,你认为项目管理最难的什么?

导言&#xff1a; 项目管理是一项复杂而又富有挑战性的工作&#xff0c;涉及到资源管理、风险管理、沟通和协调、时间管理以及变更管理等众多方面。然而&#xff0c;在这些方面中&#xff0c;很多人认为其中最具挑战的是时间管理。本文将从不同角度探讨时间管理在项目管理中的重…

default 和 delete 与默认构造函数 的使用

前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点&#xff1a; 正文 编译器生成的默认构造函数&#xff1a; 如果类A没有定义任何构造函数&#xff0c;那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…