服务架构模式演化

一、分布式和集群

在介绍分布式架构之前,先说一下单体架构,顾名思义,所谓单体架构,就是只有一台服务器,这台服务器负责所有的工作。

但是一台主机硬件资源是有上限的(CPU、内存、硬盘、网络……),如果业务进一步增长,用户量和数据量都水涨船高,一台主机难以应付的时候,就需要引入更多的主机,引入更多的硬件资源。况且随着业务场景越来越复杂,单体应用也会越来越大,这就会导致代码之间的耦合度过高,一个微小的问题就可能导致整个应用垮掉。

所以为了解决单体架构中的问题,引入了分布式和集群的概念:

集群: 就是引入更多的硬件服务器资源,每个服务器上都部署了完整的应用系统,这样多个服务器就可以通过负载均衡的调度方式完成任务。可以在水平方向(纵向)上缓解单体架构的压力。其中每一台服务器成为集群结点。

分布式: 就是将一个完整的系统,根据业务划分为不同的子系统,部署到多台服务器上。例如可以将应用服务和数据库服务分别部署到不同服务器上;对数据服务器进行读写分离,拆分为主数据库(master)服务器,从数据库(slave)服务器;对数据进行冷热分离,引入缓存服务器。

其实集群和分布式在概念上也并不难理解,下面总结一下他们之间的区别和联系:

  1. 集群是多个计算机做同样的事,集群的每个结点功能是相同的,并且可以替代;分布式是多个计算机做不同的事,分布式是多个节点组成的系统。
  2. 大多数情况下,分布式和集群都是相互配合使用的,分布式的某一个结点,可能由一个集群代替,所以实际上我们常常把分布式和集群统称为:分布式架构。

二、微服务架构

微服务就是微小的服务,就是将业务进行更细粒度的垂直拆分,可以将一个复杂的服务器,拆分成更多的,功能更单一,更小的服务器。每个更小的服务器就是一个 “微服务”。微服务之间可以采用REST和RPC协议进行通信。
比如说一个电商系统他有用户管理、商品管理、订单管理、物流管理,我们就可以把每一个部分单独拿出来拆分成一个微服务。
分布式架构强调的是压力的分散,服务器的分散化,而微服务更注重的是能力的分散,强调更加专业化和精细的分工。所以通常认为:微服务是一种经过良好架构设计的分布式架构方案。

微服务的优势:

  1. 易开发和维护,每个微服务负责的业务比较清晰,体量小,开发和维护成本降低
  2. 容错性高,一个服务发生故障,可以使故障隔离在单个服务中,不影响整体服务故障
  3. 扩展性好,每个服务都是独立运行的,我们可以结合项目实际情况进行扩展,按需伸缩
  4. 技术选型灵活,每个微服务都是单独的团队来运维,可以根据业务特点和团队特点,选择适合的技术栈

引入微服务的代价

  1. 系统性能下降。应用服务器拆分之前,各功能模块之间在进程内调用即可,拆分之后就需要通过跨主机进行网络通信,而网络通信可能会比硬盘还慢,因此系统性能可能大大折扣。(幸运的是硬件技术的发展,使得现在万兆网卡的读取速度已经超过硬盘的读取速度,但是需要一定的成本代价)
  2. 系统复杂程度提高,可用性受到影响,即系统出现问题的概率就更大了。此时就需要一系列的手段来保证系统的可用性,例如更丰富的监控报警,配套的运维人员等。
  3. 开发和测试成本提高,随着服务的数量增多,服务之间的关系也会变得更加复杂,一个服务的更改,需要考虑对其他服务的影响,一个业务流程可能涉及多个微服务共同完成。

PS:我们常听说的 SpringCloud 其实就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合,或者说是一套解决微服务问题的规范。

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

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

相关文章

代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II,55. 跳跃游戏 ,45.跳跃游戏II

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 0){return 0;}int min prices[0];int result 0;for(int i1;i<prices.length;i){if(prices[i] > min){result (prices[i]…

“双一流名校”苏州大学计算机专业好考吗?苏州大学计算机考研考情分析

苏州大学&#xff08;Soochow University&#xff09;&#xff0c;简称“苏大”&#xff0c;坐落于历史文化名城苏州&#xff0c;国家“211工程”重点建设高校&#xff0c;国家国防科技工业局和江苏省人民政府共建高校&#xff0c;国家“双一流”世界一流学科建设高校&#xff…

wooyun_2015_110216-Elasticsearch-vulfocus

1.原理 ElasticSearch具有备份数据的功能&#xff0c;用户可以传入一个路径&#xff0c;让其将数据备份到该路径下&#xff0c;且文件名和后缀都可控。 所以&#xff0c;如果同文件系统下还跑着其他服务&#xff0c;如Tomcat、PHP等&#xff0c;我们可以利用ElasticSearch的备…

中国自研的AI算力基建和服务的发展

一、政策支持与投入 近年来,中国政府高度重视AI算力基建和服务的发展,通过制定一系列政策文件,明确了发展目标和路径。政府在资金、税收、人才培养等方面给予了大力支持和投入,为AI算力基建和服务的快速发展提供了有力保障。同时,各地政府也积极推动AI算力基建的建设,打…

day28回溯算法part04| 93.复原IP地址 78.子集 90.子集II

**93.复原IP地址 ** 本期本来是很有难度的&#xff0c;不过 大家做完 分割回文串 之后&#xff0c;本题就容易很多了 题目链接/文章讲解 | 视频讲解 class Solution { public:vector<string> result;// pointNum记录加入的点的数量&#xff0c;其等于3的时候停止void b…

一千题,No.0052(统计同成绩学生)

本题要求读入 N 名学生的成绩&#xff0c;将获得某一给定分数的学生人数输出。 输入格式&#xff1a; 输入在第 1 行给出不超过 105 的正整数 N&#xff0c;即学生总人数。随后一行给出 N 名学生的百分制整数成绩&#xff0c;中间以空格分隔。最后一行给出要查询的分数个数 K…

从零开始,手把手教你文旅产业策划全攻略

如果你想深入了解文旅策划的世界&#xff0c;那么有很多途径可以获取知识和灵感。 首先&#xff0c;阅读一些专业书籍也是一个不错的选择。书店或图书馆里有许多关于文旅策划的书籍&#xff0c;它们通常涵盖了策划的基本理论、方法和实践案例。通过阅读这些书籍&#xff0c;你…

ABSD-系统架构师(七)

1、以太网交换机转发表叙述中&#xff0c;正确的是&#xff08;&#xff09;。 A交换机的初始MAC地址表为空 B交换机接收到数据帧后&#xff0c;如果没有相应的表项&#xff0c;则不转发该帧 C交换机通过读取输入帧中的目的地址来添加相应的MAC地址表项 D交换机的MAC地址表…

集成学习模型对比优化—银行业务

1.Data Understanding 2.Data Exploration 3.Data Preparation 4.Training Models 5.Optimization Model 集成学习模型对比优化—银行业务 1.Data Understanding import pandas as pd from matplotlib import pyplot as plt import seaborn as sns df pd.read_csv(&quo…

LeetCode136只出现一次的数字

题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 解析 需要想到异或运算&#…

堆排序经典问题【TopK】

前言 在上文我们讲了堆排序的实现&#xff08;点此调整&#xff09;&#xff0c;我们先简单回顾一下。 在进行堆排序之前&#xff0c;需要建一个堆&#xff0c;由于排序是将堆顶数据与堆底交换&#xff0c;所以排升序建大堆&#xff0c;降序建小堆。 堆排序的代码 //向下调整…

Makefile `-include`的用法

在 Makefile 中&#xff0c;include 用于包含另一个文件的内容。如果该文件不存在或者读取失败&#xff0c;Make 命令将会报错并停止执行。-include 则是一种特殊用法&#xff0c;可以更灵活地处理文件包含的情况。 具体来说&#xff0c;-include&#xff08;或 sinclude&…

【FreeRTOS】创建第一个多任务程序

创建第1个多任务程序 韦东山 Freertos学习 第一个多任务程序创建 1. 目标 创建两个任务&#xff0c;任务A运行Led_Test&#xff0c;任务B运行LCD_Test。 硬件平台&#xff1a;DShanMCU-F103开发板 2. 接口函数 创建任务的API函数 不同操作系统有不同的创建API函数 FreeRTO…

常见的api:BigDecima

一.计算中的小数 float和double占有的位置是有限的 二.BigDecima的作用 1.用于小数的精确计算 2.用来表示很大的小数 三.使用(传入小数) BigDecimal b1 new BigDecimal(0.01);BigDecimal b2 new BigDecimal(0.09);System.out.println(b1);System.out.println(b2); 不精确&…

币安用户达2亿,代币BNB创新高,赵长鹏成“美国最富囚犯” 苹果迈向AI新纪元:芯片、应用与大模型三线作战

赵长鹏坐牢第一个月&#xff0c;越坐越富。 在币安联合创始人赵长鹏入狱服刑的第一个月&#xff0c;币安代币BNB创下了历史新高&#xff0c;使得赵长鹏成为美国联邦监狱中史上“最富囚犯”。与此同时&#xff0c;币安用户数量也到达2亿“里程碑”。 根据CoinGecko的数据&…

让GNSSRTK不再难【第二天-第3部分】

第11讲 定位方程构建以及最小二乘 11.1 定位方程重构 历史讲中我们已经初步构建了单点定位的先验残差&#xff1a; p i s P i s − ( X s − X 0 ) 2 ( Y s − Y 0 ) 2 ( Z s − Z 0 ) 2 c δ t r − I i s − T i s − ϵ P i s p_i^s P_i^s - \sqrt{(X^s - X_0)^2 (Y…

【小米商城】页面编写笔记(自用)

页面展示&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>body{margin: 0;}img{width:100%;height: 100%;}.header{/*height: 38px;*…

Anaconda中进行虚拟环境克隆clone

在Anaconda中克隆虚拟环境&#xff0c;可以分为在同一机器上克隆和跨机器克隆两种情况。以下是详细步骤&#xff1a; 在同一机器上克隆虚拟环境 要在不同的机器之间克隆虚拟环境&#xff0c;可以通过导出和导入环境配置文件来实现。 列出所有环境 首先列出所有的虚拟环境&a…

【手撕面试题】Vue(高频知识点五)

每天10道题&#xff0c;100天后&#xff0c;搞定所有前端面试的高频知识点&#xff0c;加油&#xff01;&#xff01;&#xff01;在看文章的同时&#xff0c;希望不要直接看答案&#xff0c;先思考一下自己会不会&#xff0c;如果会&#xff0c;自己的答案是什么&#xff1f;想…