赞
踩
(6)架构演化(需求变化归类,架构演化计划,构件变动,更新构件相互作用,构件组装与测试,技术评审,演化后的架构)
21、架构评审四大质量属性:
非风险点:一般以某种做法,“是可以实现的”、“是可以接受的”方式进行描述。
敏感点:指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
伺服对象(Servant):CORBA 对象的真正实现,负责完成客户端请求。
对象适配器(Object Adapter):用于屏蔽 ORB 内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用 ORB 内部的某些功能。
对象请求代理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制。
40、重量级与轻量级区别:
41、WEB 设计维度:
静态算法 (不考虑动态负载)
(1)轮转算法:轮流将服务请求 (任务) 调度给不同的节点 (即:服务器)0
(2)加权轮转算法:考虑不同节点处理能力的差异。
(3)源地址哈希散列算法:根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
(4)目标地址哈希散列算法:根据请求目标IP做散列找出对应节点。
(5) 随机算法:随机分配,简单,但不可控。
动态算法(考虑动态负载)
(1)最小连接数算法:新请求分配给当前活动请求数量最少的节点,每个节点处理能力相同的情况下(2)加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
(3)加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。
解决方法:
工作 | MemCache | Redis | |
数据类型 | 简单 key/value 结构 | 丰富的数据结构 | |
持久性 | 不支持 | 支持 | |
分布式存储 | 客户端哈希分片/一致性哈希 | 多种方式,主从、Sentinel、Cluster 等 | |
多线程支持 | 支持 | 不支持(Redis6.0 开始支持) | |
内存管理 | 私有内存池/内存池 | 无 | |
事务支持 | 不支持 | 有限支持 | |
数据容灾 | 不支持,不能做数据恢复 | 支持,可以在灾难发生时,恢复数据 |
集群切片方式 | 核心特点 |
客户端分片 | 在客户端通过 key 的 hash 值对应到不同的服务器。 |
中间件实现分片 | 在应用软件和 Redis 中间,例如:Twemproxy、Codis 等,由中间件实现服务到后台 Redis 节点的路由分派。 |
客户端服务端协作分片 | RedisCluster 模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务 slot 上。不同的 slot 对应到不同服务器。 |
分布式存储方案 | 核心特点 |
主从(Master/Slave)模式 | 一主多从,故障时手动切换。 |
哨兵(Sentinel)模式 | 有哨兵的一主多从,主节点故障自动选择新的主节点。 |
集群(Cluster)模式 | 分节点对等集群,分 slots,不同 slots 的信息存储到不同节点。 |
分片方案 | 分片方式 | 说明 |
范围分片 | 按数据范围值来做分片 | 例:按用户编号分片,0-999999 映射到实例 A;1000000-1999999 映射到实例 B。 |
哈希分片 | 通过对 key 进行 hash 运算分片 | 可以把数据分配到不同实例,这类似于取余操作,余数相同的,放在一个实例上。 |
一致性哈希分片 | 哈希分片的改进 | 可以有效解决重新分配节点带来的无法命中问题。 |
Redis的持久化主要有两种方式: RDB和AOF。
RDB:传统数据库中快照的思想。指定时间间隔将数据进行快照存储
AOF:传统数据库中日志的思想,把每条改变数据集的命令追加到AOF文件未尾,这样出问题了.可以重新执行AOF文件中的命令来重建数据集
对比维度 | RDB持久化 | AOF持久化 |
备份量 | 重量级的全量备份,保存整个数据库 | 轻量级增量备份,一次只保存一个修改命令 |
保存间隔时间 | 保存间隔时间长 | 保存间隔时间短,默认1秒 |
还原速度 | 数据还原速度快 | 数据还原速度慢 |
阻塞情况 | save会阻塞,但bgsave或者自动不会阻寒 | 无论是平时还是AOF重写,都不会阻寒 |
数据体积 | 同等数据体积:小 | 同等数据体积:大 |
安全性 | 数据安全性:低,容易丢数据 | 数据安全性:高,根据策略决定 |
淘汰作用范围 | 策略 |
不淘汰 | 禁止驱逐数据,内存不足以容纳新入数据时,新写入操作就会报错。系统默认的一种淘汰策略。。 |
设置了过期时间的键空间 |
|
全键空间 | 1、随机移除某个key 2、优先移除最近未使用的key |
1、缓存雪崩
1、使用锁或队列:保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。
2、为key设置不同的缓存失效时间:在固定的一个缓存时间的基础上+随机一个时间作为缓存失效时间.
3、二级缓存:设置一个有时间限制的缓存+一个无时间限制的缓存。避免大规模访问数据库。
2、缓存穿透
查询无数据返回->直接查数据库
2、设置布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个-定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
查询无数据返回->直接查数据库
系统上线后,将相关需要缓存数据直接加到缓存系统中。
解决方案
3、定时刷新缓存。
数据读取:根据 key 从缓存读取;若缓存中没有,则根据 key 在数据库中查找;读取到“值”之后,更新缓存。
数据写入:根据 key 值写数据库;根据 key 更新缓存。
REST 的五个原则:网络上的所有事物都被抽象为资源;每个资源对应一个唯一的资源标识;通过通用的连接件接口对资源进行操作;对资源的各种操作不会改变资源标识;所有的操作都是无状态的。
一般:一主多从,也可以多主多从。
从库做写操作,从库做读操作。
主从复制步骤:
主库(Master)更新数据完成前,将操作写 binlog 日志文件。
从库(Salve)打开 I/O 线程与主库连接,做 binlog转存处理,并将事件写入中继日志。
从库执行中继日志事件,保持与主库一致。
55、DFD是表达系统内数据的流动并通过数据流描述系统功能的一种方,DFD还可被认为是一个系统模型,在信息系统开发中,如果采用结构化方法,则一般将DFD作为需
求规格说明书的一个组成部分
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。