Java分布式、微服务概念

article/2025/10/22 14:21:05

1. 分布式

1.1 分布式是什么

分布式系统在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。
分布式系统是建立在网络之上的软件系统,是一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
分布式系统总结来说是将数据存储能力和计算能力分布到不同的服务器上,作为一个整体对外服务。

1.2 什么情况用分布式

当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(提升CPU、加内存、加硬盘等)高昂到一定程度,且应用程序也不能进一步优化的时候,我们考虑使用分布式系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
因此,分布式系统要解决的问题本身和单机系统是一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。

1.3 分布式架构

分布式采用集群部署,通过计算机之间的相互协作处理复杂任务。
分布式系统通过网络协议来通信,所以在空间上没有任何限制,分布式服务器可以部署在不同的地区。
分布式是指一个业务拆成多个子业务,部署在不同的服务器上,而集群是指同一个业务,部署在多个服务器上。分布式的每一个节点,都可以做集群。

1.4 分布式优点

  1. 系统可用性提升
    传统的集中式计算或集中式存储在遇见单点故障时容易造成整个服务不可用。分布式下单点机器有故障不会造成整个服务不可用。

  2. 系统并发能力提升
    请求通过Nginx负载均衡发送到不同的服务器上,这样的服务器可以有1~N台,这样我们可以根据实际用户访问量增加机器。无论是数据库还是服务,都可以做到随时水平扩展。
    比如淘宝在平时用50台服务器就够了,到了双十一,订单量剧增,服务器增加到100台,每台服务器之间相互独立,互不影响。

  3. 系统容错能力提升
    上面说过分布式服务器可以部署在不同的地区,那么如果一个地方的服务器突然断电或者宕机,那么这个地方的流量会被自动分发到其他地方,不会影响用户的使用。
    在这里插入图片描述

  4. 低延迟
    参考上面这张图,服务器会根据用户的ip自动选择距离自己最近的机房,例如河北的就会选到北京,苏州的就会选到上海,这样可以降低网络延迟。

1.4 分布式不足

  1. 依赖网络
    服务器间通讯依赖网络,不可靠网络包括网络延时,丢包、中断、异步。一个完整的服务请求依赖一连串服务调用,任意一个服务节点网络出现问题,都可能造成本次请求失败,并且容易造成线程阻塞,导致整个服务不可用,形成“雪崩效应”。

  2. 维护成本高
    单体服务只需要维护一个站点就可以了,但是分布式服务可能被拆分成几十上百个服务,增加运维的成本。

  3. CAP问题
    一致性( C )、可用性( A )、分区容错性( P )无法同时满足,一般只能满足CP或AP,需要根据实际情况决定牺牲掉哪个。

2. 微服务

2.1 微服务概念

微服务不是一个框架,而是一种架构思想。
微服务将一个大的应用,拆分成多个小模块,每个模块有自己功能和职责,模块间可以进行交互。服务间通过http协议进行通信。微服务模块可以用不同的编程语言。
微服务的出现就是因为原来单体应用架构无法满足当前互联网产品的技术需求,解决的问题就是不因为某个模块的升级和bug影响现有的整体系统业务。
微服务架构核心就是为了解决应用微服务之后的服务治理问题。
微服务必须使用集中化管理,SpringCloud就是管理微服务的工具。

2.2 微服务特征

  1. 单一职责:一个微服务应该是单一职责的,这才是“微”的体现,一个微服务解决一个业务问题。
  2. 面向服务:将自己的业务能力封装,对外提供服务。一个微服务本身也可能使用到其他微服务的特点。

2.3 微服务架构

微服务需要通过服务注册中心解决服务发现问题、通过配置中心服务配置管理问题、还需要服务网关提供统一的服务入口。
微服务
这就是一个典型的微服务架构。

微服务的自动化部署(CI/CD)
单体架构项目只需要部署一次,而微服务架构有多少个服务就需要部署多少次。我们使用自动化部署工具(例如Jenkins)对项目进行自动部署。

2.4 微服务优势

  1. 拆分服务,复杂业务简单化。
  2. 轻耦合,横向扩展能力很强。
  3. 单独的服务模块可以用适合的语言与技术开发。
  4. 对微服务的重构比较简单。
  5. 单独一个微服务的修改和部署对其他服务无影响。

2.5 微服务不足

  1. 项目复杂度提高
  2. 服务的划分方法
  3. 服务的部署难度

3. 概念区别

3.1 分布式:分散压力

不同功能模块部署在不同服务器上。
作用:分布式解决网站高并发带来的问题。

3.2 集群:相同的服务

多台服务器部署相同应用构成一个集群。
通常通过Nginx完成负载均衡。
作用:通过负载均衡设备共同对外提供服务。

3.3 微服务:分散能力

是分布式概念更加严格的执行。
各服务间隔离、自治、其它特性(单一职责,边界,异步通信,独立部署)

3.4 其他区别

分布式不一定是微服务:微服务需要满足单一职责原则,一个微服务模块解决一个业务问题,而分布式没有这方面的要求。
微服务不一定是分布式:微服务可以部署在同一个服务器上,也可以部署在多个服务器上,而分布式都是部署到多台服务器上的。


http://chatgpt.dhexx.cn/article/5caGmA44.shtml

相关文章

浅谈Java分布式与集群

在日常操作中,相信很多人在怎么理解Java分布式与集群问题上存在疑惑,今天就大概说说,不注意听,觉得两个可能是同一个东西,其实这个是两个概念。 一句话概括:分布式是以缩短单个任务的执行时间来提升效率的…

java分布式技术

分布式技术 1.软件架构的演进 (1)单体应用阶段 ​ 小型项目(体量比较小,用户比较少这种)LAMP linux操作系统 apache httpd mysql php ​ 把应用服务器数据库等部署到同一台服务器上 (2&#xff09…

JAVA分布式(一)——了解分布式

一年的时间,终于学到了分布式的时候 在进行实践前,要先了解什么是分布式?分布式的意义是什么?(面试大几率会问,如果你写了的话) 目录 一、什么是分布式?二、分布式的特点三、分布…

java分布式入门

分布式入门: 先理解为什么需要分布式,因为服务器处理的能力需要提升,这里有两个方面,第一是纵向 也就是增加cpu的能力,或者加内存;另一个方向就是 横向 ,就是分布式。将本来一台计算机的压力分给…

网站开发进阶(六十七)浅谈css中hsl()和hsla()设置颜色值的方法与应用

前言 HSL 是CSS3引进的一种将 RGB 色彩模型中的点在坐标系中的表示法。这两种表示法试图做到比基于笛卡尔坐标系的几何结构 RGB 更加直观。 定义与用法 hsl() 函数使用色相、饱和度、亮度来定义颜色。 HSL 即色相、饱和度、亮度(英语:Hue, Saturati…

CSS第二章:3.颜色单位(HSL值、HSLA值)

总览 1.HSL值 H - 色相,S - 饱和度,L - 亮度 2.HSLA值 A - 透明度 一、色相 - H 1.取值范围:0~360 二、饱和度 - S 1.取值范围:0~100% 三、亮度 - L 1.取值范围:0~100% 四、HSL值 实操 1.HTML代码&#xff…

CSS 的 hsl() 和 hsla() 函数(设置颜色的方式之一)

一:CSS中的 hsl()函数: 1、定义与用法:hsl() 函数使用色相、饱和度、亮度来定义颜色。 HSL 即:色相(Hue)、饱和度(Saturation)、亮度(Lightness)。 色相&a…

css rgba/hsla知识点讲解及半透明边框

一、RGBA(R,G,B,A) 参数: R:红色值。正整数 | |百分数 G:绿色值。正整数 | |百分数 B:蓝色值。正整数 | |百分数 A:Alpha透明度。取值0~1之间。 说明:此色彩模式与RGB相同,只是在RGB模式上新增了Alpha透明…

HSLA制作配色表

<!doctype html> <html lang"en"><head><meta charset"UTF-8"><title>HSLA制作配色表</title><style>.table-wrap {width: 400px;margin: 10px;float: left;}table {width: 400px;border: 1px solid #756c6c;bo…

css中hsla代表_hsla()函数以及CSS中的示例

css中hsla代表 Introduction: 介绍&#xff1a; The use of functions is very beneficial for web development and one must learn as many functions as they can, therefore keep learning functions for improving your knowledge and coding skills. Besides, you shoul…

rgba和hsla

在css3中可以用RGBA和HSLA,都可以用来在设置颜色的同时也可以设置它的透明度。RGBA指的是“红色、绿色、蓝色和Alpha透明度”&#xff08;Red-Green-Blue-Alpha&#xff09;&#xff0c;而HSLA则代表“色调、饱和度、亮度和Alpha透明度”&#xff08;Hue-Saturation-Lightness-…

CSS hsla函数

和ARGB一样&#xff0c;都是用来表示颜色的。表示的效果都是一样的&#xff0c;只是形式不同。 一般情况下&#xff0c;你是用不上的&#xff0c;因为一般用ARGB比较多&#xff0c;也更熟悉。但是有些书籍喜欢用这种形式&#xff0c;还是要了解一下的。 定义 hsla() 函数使用…

HSL值,HSLA,文档流,盒子模型等问题。

HSL和HSLA值 和上一篇文章中的rgb语法使用方法基本一样 H:色相&#xff0c;调节范围为0-360度&#xff0c;其实就是一个环&#xff0c;零度等于360度是红色&#xff0c;调节颜色。S&#xff1a;饱和度&#xff0c;调节颜色浓度&#xff0c;调节范围&#xff08;0%-100%&#x…

CSS中hsla的用法

hsla是css3引入的一个颜色表达方式&#xff0c;今天就来学习一下它的用法。 文章目录 1.什么是HSLA2.怎么去使用HSLA3.什么时候使用HSLA4.注意事项 1.什么是HSLA HSLA(H,S,L,A) H&#xff1a;Hue(色调)。0(或360)表示红色&#xff0c;120表示绿色&#xff0c;240表示蓝色&…

Gabor滤波器 pytorch实现

Gabor函数与人眼的生物作用相仿&#xff0c;尤其对于图片的方向和尺度特征可以很好的捕捉。所以&#xff0c;经常用于纹理、物体识别。对于Gabor的原理、公式不再赘述。 下面对Gabor滤波器用pytorch实现&#xff0c;并进行可视化&#xff1a; import math import torch import…

【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取 6.5 Gabor 滤波器 Gabor 变换是一种加窗短时傅里叶变换&#xff0c;以高斯函数作为短时傅里叶变换的窗函数&#xff0c;因此可以在频域不同尺度、不同方向上提取特征。 G…

Python OpenCV实现Log Gabor滤波器(由LGHD描述符扩展)

引言 笔者在研究红外图像与可见光图像配准时接触到了很多描述符&#xff0c;其中关于LGHD描述符的Log Gabor滤波器很有意思&#xff0c;与大家分享 LGHD&#xff08;Log-Gabor Histogram Descriptor&#xff09; 描述符的思想是基于高频分量分布的描述符对于不同的非线性强度…

python实现Gabor滤波器-skimage(一)

什么是Gabor滤波器&#xff1f; Gabor滤波器是一种由正弦波调制的高斯核线性滤波器。Gabor滤波器的频率和方向表示与人类视觉系统相似。Gabor滤波器组通常用于计算机视觉和图像处理。特别适用于边缘检测和纹理分类。一个二维Gabor滤波器是一个由正弦平面波调制的高斯核函数。好…

二维gabor滤波器matlab,在matlab中使用可分离的Gabor滤波器

如果过滤器g可以表示为两个向量grow和gcol的乘法&#xff0c;则称为可分离过滤器。使用一维滤波器将二维滤波器的计算复杂度从O(M^2 N^2)降低到O(2M N^2)&#xff0c;其中M和N分别是滤波器掩码和图像的宽度(和高度)。 在this stackoverflow link中&#xff0c;我在空间域中编写…

gabor滤波器简要介绍

在经过一天的浏览csdn&#xff0c;博客园后&#xff0c;总算是对gabor滤波器有了一个大概的了解&#xff0c;所以趁还热着&#xff0c;赶紧记录一下。 写的话&#xff0c;先给自己梳理下要写什么吧&#xff1a; 1. 什么是gabor滤波器&#xff0c;公式定义 2. gabor滤波器的代码…