【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念


一、系统高可用(High Availability)

(1) 啥是 “高可用” ?

🍀 通俗一点说,高可用的意思是:在并发的情况下,系统仍然是可用

🍀 高可用的目的:保障业务的连续性(实现在用户眼里,业务永远是正常对外提供服务的

🍀 🍬 【上图】一个 SpringBoot 项目(apple.jar)被部署到服务器上运行,可向其发送网络请求对数据库执行增删改查操作

🍀 🍬 随着请求数量逐渐增多,服务器宕机(死机、挂掉)的可能性也越来越高

🍀 🍬 若服务器宕机会导致服务器上的程序无法运行、会导致服务器上的项目无法启动,则该服务器上的项目不是高可用的项目,很容易产生单点故障

🍀 🍬 单点故障:服务器与项目共生(服务器生,项目活;服务器挂,项目死)

🍀 高可用希望实现两个目标🍬:

① 系统的健壮性,不允许出现单点故障

② 提高系统的处理能力,保证系统的运行效率

(2) 集群是啥意思?

服务器就是计算机🖥️,计算机🖥️就是服务器。

❓ 如何实现高可用在高并发的情况下,系统仍然可用 )❓

🤔 思想上:可以把项目部署在多台服务器上( 某台服务器挂了,可以有其他服务器顶上

🍀 集群(cluster):一组 相互独立的通过高速网络互联的计算机🖥️的集合

  • 多台计算机🖥️构成一个组( 一个集群 ),这些计算机💻被一种 单一系统的模式 加以管理

✏️单一系统的模式:虽然是多个计算机的集合,但管理和使用的时候与操纵一台计算机无异( 感觉就像是一个单一的系统,而不是多个计算机的集合

  • 集群模式:多台计算机的组合方式

📚 集群模式有三种:

✏️① 主备模式

✏️② 主从模式

✏️③ 高可用模式

① 主备模式

🖊️ 多台服务器的结合构成集群, 其中有一台是主服务器🖥️

🖊️ 正常情况下,只有主服务器🖥️提供服务(主服务器处于 active 状态)

🖊️ 除主服务器之外的都是备用服务器【备用服务器💻平时提供服务,处于 standby待命 )状态】

🖊️ 若主服务器💻宕机,挑选众多备用服务器🖥️中的一台作为新的主服务器💻,继续提供服务

② 主从模式

  • ✏️ 多台服务器构成集群,每台服务器都提供服务只是不同的服务器提供的功能不同

  • ✏️ 【上图】① 服务器接收请求和实时性要求高的请求;② 服务器接收大多数的读请求;③ 减少服务器宕机的可能

③ 高可用模式

🍀 Queries-per-second:单个进程每秒请求服务器的成功次数( 每秒查询率

  • ✏️ 多台服务器的组合构成集群,每台服务器的角色和功能都一样

✏️ 【上图】若一台服务器的 Tomcat 每秒支持 250 个并发请求,则台服务器的集合构成的集群服务器每秒可支持750个并发请求

④ 总结

📝 主备集群:避免单点故障

📝 主从集群:避免单点故障;提高并发度和吞吐量

📝 高可用集群:避免单点故障;提高并发度和吞吐量

(3) 分布式(Distribution)

  • 📝 分布式是一种系统部署方式

① 单机部署

📝【上图】部署应用的方式是单机部署

  • ✏️ 应用服务( Tomcat )和数据库服务( MySQL )部署在同一台服务器上,这种部署方式叫做单机部署
  • ✏️ 好处:Tomcat 和 MySQL 沟通的网络开销很小
  • ✏️ 坏处:Tomcat 和 MySQL 共享服务器的内存空间

② 分布式部署

📝【上图】部署应用的方式是分布式部署

✏️ 【上图】应用服务( Tomcat )部署在 192.126.111.2 服务器;数据库服务(MySQL)部署在 192.126.111.3 服务器【Tomcat 服务和 MySQL 服务之间通过网络沟通】

  • ✏️ 缺点:两个服务器之间通过网络沟通(存在网络开销)
  • ✏️ 优点:Tomcat 服务和 MySQL 服务独享自己所在服务器的内存空间

(4) 微服务

  • 📝 微服务是系统的一种架构设计方式
  • 📝 微服务一定是分布式
  • 📝 但分布式不一定是微服务

✏️ 上图把一个应用全部的功能置于同一个项目同一个应用同一个 jar 包中,这是单体应用


✏️ 上图根据模块进行划分,每个模块部署在不同的服务器中。服务之间通过网络请求进行访问和沟通,这是微服务架构

(5) 分布式和微服务的对比

✒️① 单体架构所有模块全都耦合在同一个项目中(代码量大,维护困难)

  • 微服务每个模块就相当于一个单独的项目(代码量明显减少,遇到问题也好针对解决)

✒️② 单体架构的所有模块共用一个数据库,存储方式比较单一

  • 微服务架构各个模块可以使用不同的存储方式(如有的用 redis,有的用 MySQL),单个模块( 独立的模块 )对应自己独立的数据库

✒️③ 单体架构所有模块开发所使用的技术一样

  • 微服务每个模块可以使用不同的开发技术,开发模式更加灵活


二、分布式应用

🀄 大数据时代,将会面临三个重大问题:

① 海量数据如何存储 ❓

② 如何对海量数据进行运算 ❓

③ 高并发请求如何处理 ❓

🀄 这些问题都可通过【分布式】进行解决

📝 ① 分布式存储解决海量数据的存储问题

📝 ② 分布式计算处理海量数据的运算

📝 ③ 分布式系统处理高并发的请求

(1) 分布式存储

🍀 使用 MySQL 数据库可存储数据,但其存储的数据是有限的。假如 MySQL 可存储的数据是 1T,则固定只能存储 1T 的数据,若数据容量超过 1T 就无法存储了

HBase:Hadoop Database 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用 HBase 技术可在廉价 PC Server 上搭建起大规模的结构化的存储集群【百度百科】

(2) 分布式计算

🎄 分布式计算:分而之,把一个大的计算任务分解为多个小的计算任务进行计算操作

🎄 通过汇总小的计算任务的计算结果,进而得到大的计算任务的结果

🍬【上图】有一个 计算海量数据中字母个数 的任务。不同的数据被存放在不同的服务器中,计算字母个数的代码放在 A 服务器。把每个服务器的数据都移动到 A 服务器,再进行计算(非常耗费时间、性能低)

🍬 最好的做法是: 把计算字母个数的代码移动到不同的服务器,在数据所在的服务器中统计完字母个数后,再把计算结果进行汇总【不耗时:移动运算代码所花费的时间肯定低于移动数据所花费的时间⏰】

🍬 一份 计算字母个数的代码 可能最多100M,而不同服务器上的一份数据肯定是远大于100M的,移动代码(运算)比移动数据划算

分布式计算强调:移动运算,而不是移动数据

(3) 分布式系统

🎄 把应用服务(Tomcat)和数据库服务(MySQL)部署在不同的服务器上,Tomcat 和 MySQL 之间通过网络进行沟通


三、分布式协调服务(以 ZooKeeper 为例)

🍀 【上图】客户端若想访问秒杀服务,理论上, 需要知道有哪些秒杀服务器可以访问 ❓

🍀 理论上, 需要知道秒杀服务的动态变化(哪些服务器已宕机,哪些服务器上线了)

🍀 但实际上,客户端并没有必要知道服务器的状态

🍀 客户端只需要发送请求就可以了,实际上是那个服务器处理请求❓客户端没有必要知道


🎄 ZooKeeper 在分布式系统中充当协调者的角色,帮助客户端和分布式服务之间进行沟通,保证系统的正常运行。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
存储 安全 Java
管理 Spring 微服务中的分布式会话
在微服务架构中,管理分布式会话是确保用户体验一致性和系统可扩展性的关键挑战。本文探讨了在 Spring 框架下实现分布式会话管理的多种方法,包括集中式会话存储和客户端会话存储(如 Cookie),并分析了它们的优缺点。同时,文章还涵盖了与分布式会话相关的安全考虑,如数据加密、令牌验证、安全 Cookie 政策以及服务间身份验证。此外,文中强调了分布式会话在提升系统可扩展性、增强可用性、实现数据一致性及优化资源利用方面的显著优势。通过合理选择会话管理策略,结合 Spring 提供的强大工具,开发人员可以在保证系统鲁棒性的同时,提供无缝的用户体验。
109 0
|
6月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1065 3
|
4月前
|
算法 NoSQL 关系型数据库
《聊聊分布式》分布式系统核心概念
分布式系统由多节点协同工作,突破单机瓶颈,提升可用性与扩展性。CAP定理指出一致性、可用性、分区容错性三者不可兼得,BASE理论通过基本可用、软状态、最终一致性实现工程平衡,共识算法如Raft保障数据一致与系统可靠。
|
4月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
10月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
360 5
|
11月前
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章评论的基本增删改查
本节介绍了文章评论的基本增删改查功能实现。首先,在`cn.itcast.article.dao`包下创建数据访问接口`CommentRepository`,继承`MongoRepository`以支持MongoDB操作。接着,在`cn.itcast.article.service`包下创建业务逻辑类`CommentService`,通过注入`CommentRepository`实现保存、更新、删除及查询评论的功能。最后,新建Junit测试类`CommentServiceTest`,对保存和查询功能进行测试,并展示测试结果截图,验证功能的正确性。
261 2
|
11月前
|
NoSQL Java MongoDB
微服务——MongoDB实战演练——文章评论实体类的编写
本节主要介绍文章评论实体类的编写,创建了包`cn.itcast.article.po`用于存放实体类。具体实现中,`Comment`类通过`@Document`注解映射到MongoDB的`comment`集合,包含主键、内容、发布时间、用户ID、昵称等属性,并通过`@Indexed`和`@CompoundIndex`注解添加单字段及复合索引,以提升查询效率。同时提供了Mongo命令示例,便于理解和操作。
192 2
|
11月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
196 0
|
11月前
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章微服务模块搭建
本节介绍文章微服务模块的搭建过程,主要包括以下步骤:(1)创建项目工程 *article*,并在 *pom.xml* 中引入依赖;(2)配置 *application.yml* 文件;(3)创建启动类 *cn.itcast.article.ArticleApplication*;(4)启动项目,确保控制台无错误提示。通过以上步骤,完成文章微服务模块的基础构建与验证。
169 0
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
760 24

热门文章

最新文章