首页 > 其他分享 >分布式架构-技术点概括

分布式架构-技术点概括

时间:2024-03-12 22:59:31浏览次数:21  
标签:负载 缓存 架构 概括 RPC session 均衡 分布式

分布式架构包括:


负载均衡 ;分布式缓存 ;分布式文件系统/CDN;分布式RPC;分布式数据库/Nosql;分布式消息中间件;分布式session问题

下图为一个中大型网站/App的基本架构:


负载均衡


负载均衡是分布式系统中的一个最最基本的问题。在上图中:网关需要把请求分发给不同的Tomcat;Tomcat需要把收到的请求,分发给不同的Service;这都需要负载均衡。一句话:凡是请求从一个入口进来,需要分发给后端不同的机器时,就需要负载均衡。

局域网负载均衡:

在上图中,负载均衡发生在局域网内部。在这里,常用的网关软件有Nginx/HAProxy/F5/LVS/各种云上的SLB等。

广域网负载均衡:

在上图之外,还有广域网负载均衡。这通常发生在域名服务器上,而不是局域网内部。同1个域名,映射到不同的局域网集群。

负载均衡算法:

常用的负载均衡算法:随机,轮询(Round Robin),最小资源数,hash。

分布式缓存


在上图中,当DB负载过高,我需要为Service机器加缓存时,就遇到一个基本问题:如果使用local的内存做缓存,则其他Service机器就没办法共用此缓存。因次,我需要一个可以让所有Service机器共享的缓存,这就是分布式缓存。常用的分布式缓存组件:Memcached/Redis/Tair等

分布式文件系统

在上图中,当我要存储客户端上传的图片文件时,就会遇到另一个基本问题:我不能把图片存在每个Tomcat的本地文件系统里面,这样的话,其他机器就没办法访问了。我需要一个让所有机器可以共享的文件系统,这就是分布式文件系统。

常用的分布式文件系统:MogileFS/TFS/HDFS/Amazon S3/OpenStack Swift等

当使用了分布式文件系统,对外提供图片url访问服务时,就会遇到另一个基本问题:如果每次文件的访问,都要到分布式文件系统里面去取,效率和负载就可能成为问题。为此,就需要引入CDN。常用的CDN厂商,比如ChinCache。当然,现在的各种云存储,比如七牛云,阿里云,腾讯云,已经自带了CDN。

分布式RPC

分布式系统的一个基本问题就是:机器与机器之间如何通信? 我们都知道底层原理是TCP/IP,Socket。

但一般很少有人会去裸写Socket,实现机器之间的通信。这里,最常用的组件就是RPC。

最简单的实现RPC的方式就是使用http。当然,业界有很多成熟的开源RPC框架,如Facebook的Thrift, 阿里的Dubbo,点评的Pigeon。。

在RPC内部,一般都自己实现了负载均衡。还有更复杂的,如多版本,服务降级等。

补充一句:虽然底层原理都是Socket,但使用不同框架/组件时,通常都有其自己的跨机器通信方式,比如Mysql JDBC,RPC, 消息中间件等。

分布式数据库

在上图中,DB是单一节点。当访问量达到一定程度,就会涉及到Mysql的分库分表问题。

分库/分表之后,就会涉及到join的问题,分布式事务的问题。

关于分库分表,业界也早有成熟方案。对上层屏蔽分库分表,sql的执行,像是在单库一样。

还有像MongoDB这种Nosql数据库,天生是分布式的。但同样会面对Mysql分库分表所要面对的问题。

还有像阿里的OceanBase,有Mysql的强一致性保证,又是分布式的,还可以支持分布式事务。

分布式消息中间件

在上图中,没有提及到消息中间件。相对其他基本问题,这个需要一个更适合的业务场景来谈,在以后的章节中,会再详述。

常用的消息中间件,比如老一辈的ActiveMQ/RabbitMQ, 新一点的,阿里的RocketMQ,LinkedIn的Kafka等。

消息中间件的一个典型场景就是:通过最终一致性,解决上面的分布式事务问题。

分布式session问题

在传统的单机版应用中,我们经常使用session。而当单机扩展到多机,单机的session就没办法被其他机器所访问。

此时就需要使用分布式session,把session存放在一个所有Tomcat都可以访问的地方。

关于分布式session,业界早有成熟方案,在此不再详述。

标签:负载,缓存,架构,概括,RPC,session,均衡,分布式
From: https://blog.csdn.net/Willard1314/article/details/136637875

相关文章

  • 固态存储是未来|浅析SSD架构的演进与创新技术-1
    常见的SSD架构中,包括了SSD控制器、NAND颗粒、DRAM颗粒三大组件,SSD控制器的固件需要兼顾坏块管理、ECC纠错、垃圾回收GC、磨损均衡WL、NANDdie介质管理、缓存交互等等。随着时代的发展,SSD架构,也不断有新的挑战和需求。基于小编目前的看到的信息,总结大概有几个方面:首先就......
  • 固态存储是未来|浅析SSD架构的演进与创新技术-2
    除了性能和容量这两个最大的诉求外,其他的需求已经成为SSD现场架构的核心竞争力。一是安全性:随着数据安全威胁日益严重,SSD的安全设计成为关键,包括提供单芯片硬件信任根、遵循FIPS140-3安全标准以及支持一次性可编程位字段来锁定生产后的接口,确保数据加密传输和保护,并集成加密引......
  • 使用Go语言开发一个短链接服务:二、架构设计
      在上一篇中,我们介绍了短链接服务的应用场景、基本原理以及Go的基本代码实现。在这一篇,我们将讨论服务的技术选型和架构设计。后端Web框架  就无脑用Go最流行的Web框架Gin。 数据库  备选方案包括MySQL、PostgreSQL、MongoDB。我们这里的数据存储,基本围绕短链接code......
  • c#对分布式编程得支持
                       ......
  • redis 分布式锁
    前言分布式应用进行逻辑处理时经常会遇到并发问题。比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。(Wiki解释:所谓原子操作是指不会被线程调度......
  • 新零售SaaS架构:什么是线上商城系统?
    零售商家为什么要建设线上商城传统的实体门店服务范围有限,只能吸引周边500米内的消费者。因此,如何拓展服务范围,吸引更多消费者到店,成为了店家迫切需要解决的问题。缺乏忠实顾客,客户基础不稳,往往是一次性购物,门店无法形成有效的顾客回流。在当前的市场环境下,构建并维护粉丝群体,成......
  • Unity3D 逻辑服的ECS框架设计架构与原理详解
    ECS(Entity-Component-System)是一种游戏开发架构模式,它将游戏对象划分为实体(Entity)、组件(Component)和系统(System),并通过数据驱动的方式来实现游戏逻辑。在Unity3D中,ECS框架的设计架构与原理是非常重要的,本文将详细介绍Unity3D逻辑服的ECS框架设计架构与原理,并给出技术详解以及代码实......
  • 基于RocketMQ实现分布式事务
    背景在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统。这种分布式的系统架构往往面临着分布式事务的问题。为了保证系统数据的一致性,我们需要确保这些服务中的操作要么全部成功,要么全部失败。通过使用RocketMQ实现分布式事......
  • 基于通道注意力和时间注意力的时间卷积网络:用于航空发动机剩余使用寿命预测的双重注意
    基于通道注意力和时间注意力的时间卷积网络:用于航空发动机剩余使用寿命预测的双重注意力架构标题:Channelattention&temporalattentionbasedtemporalconvolutionalnetwork:Adualattentionframeworkforremainingusefullifepredictionoftheaircraftengines......
  • k04_分布式缓存
    1.redis持久化RDB持久化RDB全称ResdisDatabaseBackupfile(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件成为RDB文件,默认是保存在当前运行目录saveAOF持久化AO......