微服务_微服务的架构演进之路

news2024/11/19 22:50:10

目录

一、前言

二、单体架构

三、分布式架构

四、微服务

五、SpringCloud

六、服务拆分

5.1服务拆分原则

5.2服务拆分示例


一、前言

微服务是一种软件开发架构风格,它将单个应用程序拆分成多个小型服务,每个服务都具有自己的特定功能。这些服务之间通过API进行通信,可以独立部署、升级和扩展。微服务的概念源于面向对象编程中的“单一职责原则”,但是直到近年来,随着云计算和容器化技术的发展,微服务架构才真正开始流行。微服务的优势包括灵活性高、可维护性强、可伸缩性好等,已经被广泛应用于各种大型网站和企业级应用程序中。微服务的发展经历了多次迭代和尝试,逐渐演变为现在的形态,成为了一个非常成熟的软件开发范式。

二、单体架构

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

单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

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

三、分布式架构

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

分布式架构的优缺点:

优点:

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

缺点:

  • 服务调用关系错综复杂

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

  • 服务拆分的粒度如何界定?
  • 服务之间如何调用?
  • 服务的调用关系如何管理?

人们需要制定一套行之有效的标准来约束分布式架构。

四、微服务

微服务的架构特征:

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

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

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

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

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

五、SpringCloud

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

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

其中常见的组件包括:

六、服务拆分

任何分布式架构都离不开服务的拆分,微服务也是一样。

5.1服务拆分原则

微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

5.2服务拆分示例

以课前资料中的微服务cloud-demo为例,其结构如下:

cloud-demo:父工程,管理依赖

  • order-service:订单微服务,负责订单相关业务
  • user-service:用户微服务,负责用户相关业务

要求:

  • 订单微服务和用户微服务都必须有各自的数据库,相互独立
  • 订单服务和用户服务都对外暴露Restful的接口
  • 订单服务如果需要查询用户信息,只能调用用户服务的Restful接口,不能查询用户数据库

参考:创智播客黑马训练营资料

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

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

相关文章

用TS写出20个数组方法的声明

前言 前段时间看直播看到狼叔直播驳斥”前端已死论“,前端死没死不知道,反正前端是拿不到以前那么多工资了;好,进入正题,狼叔在直播间提到要求前端写出20个数组上的方法,这确实不太简单,但是只…

(补)4.13每日一题

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 题目连接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 解题 开始我把这个题目想简单了,我想的是输入一个字符串,从第一…

Day946.厂商定制的Android系统为什么也要解耦? -系统重构实战

厂商定制的Android系统为什么也要解耦? Hi,我是阿昌,今天学习记录的是关于厂商定制的Android系统为什么也要解耦?的内容。 一、Android 系统架构 AOSP,全称是 Android Open Source Project,中文译为“An…

永磁同步电机流频比(I/F)控制及Matlab/Simulink仿真分析

文章目录 前言一、流频比I/F控制原理二、永磁同步电机I/F控制系统Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1 I/F控制算法2.1.2 电流环2.1.3 输出处理2.1.4 主电路 2.2 仿真结果分析 总结 前言 本章节采用流频比I/F控制方法驱动永磁同步电机的转动,首先分析流频…

传统机器学习(二)逻辑回归算法(一)

传统机器学习(二)逻辑回归算法(一) 1.1 算法概述 1.1.1 逻辑回归及其梯度推导 ​ 线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核心就是找出模型的参数,著名的最小二乘法就是用来求解线性回归中参…

J-Link不能连接目标MCU几点常见原因

J-Link是嵌入式软件最常用的工具之一,但是,在使用这个工具时,也会遇到各种各样的问题。 J-Link的连接 使用J-Link,首先第一步硬件连接,确认J-Link和PC机之间是否连接正常,并确认上位机能和 J-Link 建立正…

ZedGraph 绘制动态曲线

文章目录 前言:开发环境:1 下载ZedGraph 控件并设置图形界面2 功能实现3 需求升级4 小结 话不多数,先上一个效果图: 前言: 需要采集一些设备的数据以图表的形式展示出来,研究数据的走向是否平稳&#xff0…

mac Homebrew方式安装 activemq

两种方式安装 activemq 一、通过Homebrew管理安装 1. 确保homebrew可用 查看brew版本 brew -v 如果报错,则可能是未启用brew,需要安装或更新 更新并重新查看是否安装成功 brew update brew -v 2. 安装 activemq:下载activemq前 会先下载相…

Direct3D 12——纹理——寻址模式

可将经过常数插值或线性插值的纹理定义为一个返回向量值的函数T(u, v) (r,g,b,a),即给 定纹理坐标(u,v)∈[0,1]^2,则上述纹理函数T将返回颜色(r,g, b, a)。 Direct3D允许…

MLCC周期性分析:当前时点处于周期反转前夜

MLCC是电子工业大米,供需波动导致行业成周期性波动 MLCC是最常用的被动元器件之一,终端下游涵盖消费电子、家电、汽车、通信等。在5g、汽车电子、智能硬件的推动下,MLCC行业需求稳步增长。供给端来看,中国大陆厂商合计市场份额不…

MFC加载动态gif图片文件C++语言,基于MFC的动画播放控件

MFC加载动态gif图片,使用VS2015环境 一、将下载的PictureEx.h和PictureEx.cpp放在工程文件的目录下,动态gif图片放在工程文件的res文件夹下;(GIF动图下载 https://icons8.com/preloaders/en/search/move) &#xff08…

企业级VUE前端项目各目录文件的作用

概述 本文项目是基于Vue CLI3构建工具(基于 webpack)生成的脚手架项目。Vue CLI 现已处于维护模式,VUE官方推荐使用 create-vue(基于 Vite)构建工具。 vue-cli2.0与3.0在目录结构方面,有明显的不同,vue-cli3.0移除了…

Linux性能优化实战

1. TCP/IP报文详解 TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。TCP负责发现传输的问题,一有问题就发出信号,要求重…

根据cadence设计图学习硬件知识day04了解一些芯片

1.PI3PCIE3212 (双向信道多路复用器/多路分解器开关) PI3PCIE3212是PCIe Gen3.0、8Gbps、4对2差分,PCI ExpressR 3.0性能,8.0Gbps 双向信道多路复用器/多路分解器开关。由于其低的位对位偏斜,高的通道对通道噪声隔离…

邂逅Node.js开发

目录: 1 Node.js是什么? 2 Node的应用场景 3 Node安装和管理 4 JavaScript代码执行 5 Node的输入和输出 6 Node的全局对象 node命令是可以直接运行js脚本的,在某文件夹底下只要有js文件,就可以通过命令提示符运行该js文件。格式是 &…

简单聊聊煤炭行业的数字化和可持续发展

煤在普通人的心目中是一种能引起复杂感情的东西。我们喜欢它在冬天给我们带来温暖,我们不喜欢它因为它黢黑黢黑的,沾在身上特别黑,看起来脏兮兮的。在笔者的记忆中,小时候煤可是生活的必需品。 小时候在冬天的河北必须要生炉子&a…

电源常识-纹波-EMI

1、纹波﹔纹波就是一个直流电压中的交流成分。直流电压本来应该是一个固定的值,但是很多时候它是通过交流电压整流、滤波后得来的,如图1,由于滤波不彻底,就会有剩余的交流成分,即使采用电池供电也会因负载的波动而产生波纹。事实上…

FreeRTOS 任务相关 API 函数

FreeRTOS 中用于创建和删除任务的 API 函数如下表所示: 1. 函数 xTaskCreate() 此函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数&#x…

聚焦慕思欧洲设计中心,用设计谱写健康睡眠新篇章

4月20日,在意大利米兰,多位欧洲顶尖设计师齐聚ADI博物馆,共同见证“梦享之美”——慕思欧洲设计中心暨设计国际梦之队成立发布会的盛大召开。慕思此次发布会特地选定在米兰国际家具展期间,而这是公认的世界三大家具展之一&#xf…

DF竞赛平台携手嬴彻科技与清华大学智能产业研究院,助力自动驾驶挑战赛圆满落幕!

由DataFountain竞赛平台(简称DF平台)提供办赛支持的「首届“嬴彻-清华AIR杯”自动驾驶挑战赛:决策规划算法」已圆满落幕。作为一场前沿性自动驾驶类比赛,本次大赛立足“高速道路”和“城市道路”两大真实场景,选择“半…