首页 > 其他分享 >架构题一

架构题一

时间:2024-08-22 23:28:28浏览次数:8  
标签:架构 数据库 消息 服务器 读写 分布式

你的掌心温度不高,却足以温暖我。 --朱

1、说说架构模式

1,分层。
2,分割。
分层是对网站进行横向的切分,分割是对网站纵向的切分。将网站按照不同业务分割成小应用,可以有效控制网站的复杂程度。

3,分布式
在大型网站中,分层和分割后主要是为了让网站能够便于分布式部署,也就是不同的模块部署到不同的服务器上。常用分布式方案有:
3.1 分布式应用和服务
3.2 分布式静态资源
3.3 分布式数据和存储
3.4 分布式计算
3.5 分布式配置,分布式锁,分布式文件系统等。

4,集群
分布式方案只是将不同模块或者服务独立部署到服务器上,但通常还是单台服务器。集群则是将同一个模块或服务同时部署到多台服务器上,通过负载均衡设备对外提供服务。

5,缓存
常用缓存有:CDN,反向代理,本地缓存,分布式缓存

6,异步
异步一般通过队列的方式来实现。在单一服务器中,可以通过多线程共享内存队列实现异步。在分布式系统中,可以通过分布式消息队列实现。
异步好处:提高系统可用性。加快网站响应速度。消除并发访问高峰。

7,冗余
冗余的目的实现高可用性。通过使用集群实现。即使再小的服务,也要部署到至少两台服务器上。
数据库冗余有冷备份和热备份两种。
冗余还包括在异地建立灾备数据中心。

8,自动化
自动化包括自动化代码管理,自动化部署,自动化测试,自动化安全检查等。

9,安全
安全主要通过密码加手机验证码的方式实现。

2、架构5大要素

1.高性能架构
2.高可用架构
3.伸缩性架构
4.可扩展架构
5.安全架构

3、什么是集群,什么是分布式

集群:一个系统部署到多台服务器,多台服务器完成业务处理,业务请求接收,每一台服务器都能独立完成业务计算;每个服务器都是独立个体;多台服务器集合起来,通常需要做负载均衡。
分布式:多台服务器完成业务处理,请求收到后,需要多个服务器合作完成。比如一个业务处理分五个环节,A处理1,B处理2......一个业务请求,五台服务器合作完成。

4、对Redis的理解

Redis是一种基于键值对的NoSql数据库(非关系型数据库);是一个key-value存储系统
Redis特点:高性能 可靠性
高性能:Redis将所有数据都存储在内存中,所有读写性特别高
可靠性:Redis将内存中的数据利用RDB和ADF的形式保存到硬盘中,这样可以避免发生断点或机器故障时内存数据丢失。

功能应用:
1.数据缓存功能,减少对数据库的访问压力
2.消息队列功能(轻量级):Redis提供了发布订阅功能和阻塞队列功能
3.计数器-应用保存用户凭证
比如计算浏览数,如果每次操作都要做数据库的对应更新操作,将会给数据库性能带来极大挑战
缓存:优化网站性能,首页(不常变的信息)
存储:单点登录,购物车
计数器:登录次数限制,incr
时效性:验证码expire
订单号:数字

redis有哪些应用场景?
1.缓存数据服务器 --SSO单点登录
2.应对高速读写的场景 --秒杀高可用
3.分布式锁 --秒杀数据一致性
3.数据共享 --库存数据

5、除了Redis,还有哪些NoSql

Memcache/MongoDb

6、对消息队列的理解

传统应用程序,如果需要向另一个应用程序发送信息,只需要向其发出请求即可。虽然简单直接,但如果应用程序2挂了,应用程序1可能会因为服务异常,无法继续提供服务。如果两个程序中间插入一个消息服务,用于节省消息和发送消息,这样2个程序之间依赖关系就解耦了,不会因为一个程序出问题,无法继续服务。
1.程序解耦:应用程序1和2进行交互时,不会因为一方服务中断而导致服务停止。
2。异步处理:应用程序1只管把消息发送到消息中间件,应用程序2只需要从消息中间件接收消息进行处理即可。同时,基于异步处理特性,在商品秒杀活动,引入消息队列之后,当客户端请求量很大时,可用有效进行流量削峰。如果没有中间件缓冲,一下大量请求进入,很可能造成系统瘫痪。

弊端
1.系统可用性降低:消息丢失或者消息队列服务挂掉等情况。
解决方案:搭建消息服务集群,具体技术实现上可以是主从架构或者分布式架构,一台消息队列服务器挂了,也不会影响消息队列无法提供服务。
2.系统复杂度提高:需要保证消息没有被重复消费、处理消息没有正确处理等问题。
解决方案:有多种,比如接收消息后,可以写入数据库,如果没有正确处理,可以走人工处理,或者失败时将消息重新入队等待下一次消费。

7、如何理解数据库读写分离

数据库读写分离是一种数据库架构策略,用于提高数据库的可用性和性能。在这种架构中,数据库的读操作(查询)和写操作(更新、插入、删除)被分离到不同的数据库服务器上。
提高性能:通过将读操作和写操作分离,可以减少单个数据库服务器的负载,从而提高整体性能。

扩展性:读写分离允许系统通过增加读服务器来水平扩展,以应对更多的查询请求。

可用性:在主数据库(写操作)出现故障时,可以通过将读请求重定向到其他读服务器来保持服务的可用性。

负载均衡:读写分离可以通过负载均衡器来实现,它可以将读请求均匀地分配到多个读服务器上。

数据一致性:读写分离可能会引入数据一致性的问题,因为读服务器可能不会立即反映写服务器上的最新数据。这通常通过数据复制技术来解决,如主从复制。

主从复制:在读写分离的架构中,通常有一个主数据库(Master)负责处理写操作,以及一个或多个从数据库(Slave)负责处理读操作。主数据库的数据会异步或同步复制到从数据库。

为什么要读写分离,分表分库?
单表数据量限制,当单表数据多到一定程度数据库性能会显著下降。数据多了,对数据库读写就很多,分库能减少单台数据库压力。
有些系统,通过主键进行散列分库分表,主键是唯一的获取消息的主要途径。比如:京东订单、财付通交易记录等,通过数订单号、交易号查询订单、交易。
也有系统,比如用户信息,每个用户都有特定userId,与Id对应的还有用户能看到的个人信息,此时就是通过userId散列分库。

标签:架构,数据库,消息,服务器,读写,分布式
From: https://www.cnblogs.com/zhusichen/p/18373516

相关文章

  • Jetpack业务架构—四件套(Lifecycle、ViewModel、LiveData、DataBinding)
            Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。1. AndroidJetpack组件的优势:        Jetpack推出的主要目的是为了能够......
  • 常见的架构原则
            如果您不应使用应用组件存储应用数据和状态,那么您应该改为如何设计应用呢?随着Android应用大小不断增加,您定义的架构务必要能允许应用扩缩、提升应用的稳健性并且方便对应用进行测试。应用架构定义了应用的各个部分之间的界限以及每个部分应承担的职责。为了......
  • 【C#】.NET报错:所生成项目的处理器框架“MSIL”与引用“xxx”的处理器架构“AMD64”不
    一、现象所生成项目的处理器架构“MSIL”与引用“System.Data.SQLite,Version=1.0.60.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139,processorArchitecture=x86”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的......
  • 【系统架构设计】软件架构设计(1)
    【系统架构设计】软件架构设计(1)软件架构概述架构需求与软件质量属性软件架构风格数据流风格批处理序列管道-过滤器2者风格比较仓库风格--黑板系统层次系统架构风格二层及三层C/S架构风格MVCMVP面向服务的架构架构设计软件架构文档化软件架构评估构件及其复用产品线及......
  • 详解Elastic Search及架构
    前言             如果我有三段文本,id分别为0、1、2,具体如下,我要找到哪段文本里有关键词es,这时最容易想到的办法就是依次遍历文本,匹配es,最后将符合的文本id输出。    0 ilike es    1 ilovees    2 iusedevops......
  • 探索 Sentinel:微服务架构中的流量防护神器
    引言随着微服务架构的流行,服务数量的急剧增加导致系统的复杂性和不确定性大幅提高。一个微小的服务失效都可能引发连锁反应,导致整个系统的崩溃。在这种情况下,如何保证系统的高可用性成为了关键问题。Sentinel作为阿里巴巴开源的高可用防护组件,为流量控制、熔断降级、系统......
  • SOA架构开发小助手PAVELINK.SOA-Converter V1.4.2新版本发布
    PAVELINK.SOA-Converter转换工具,用于衔接基于SOA的控制器设计、开发及测试过程中所常见的各类软件工具。PAVELINK.SOA-Converter能提供IDL及服务矩阵等文件的语法及规则检查,自动化完成多种不同格式IDL文件之间的转换,以及其它常用的各类型格式文件转换。 PAVELINK.SOA-Converter......
  • 霸王餐返利APP的技术架构与业务模型分析
    霸王餐返利APP的技术架构与业务模型分析大家好,我是阿可,微赚淘客系统及省赚客APP创始人,是个冬天不穿秋裤,天冷也要风度的程序猿!霸王餐返利APP作为一种新型的电商导购平台,通过提供用户参与霸王餐活动的机会,结合返利机制,吸引用户参与并促进消费。本文将深入分析霸王餐返利APP......
  • 分布式资源管理和调度架构
    概述不管是计算任务还是数据存储都会涉及资源分配,资源包括但不限于硬件资源如CPU、内存、硬盘、网口。在单机环境中,资源管理相对简单;分布式环境中,资源分布相对分散,如何协调资源应对计算任务和数据存储就是亟待解决的问题。资源管理和调度是将计算任务分配到资源的过程,为了处理并......
  • BEM架构
    视频总结:BEM架构:一个命名类的规范而已,说白了就是如何给类起名字使用sass的目的:在<style>中模块化的使用类名,同时减少代码数量1、BEM架构(通义灵码查询结果)BEM(BlockElementModifier)架构是一种广泛使用的CSS命名方法论,它帮助开发者组织和编写可维护的CSS代码。......