Scene-Design
场景题:设计判断论文抄袭的系统
- 一类是基于字符串比较的方法;另一类是基于词频统计的方法。
- 基于字符串比较的方法也称为数字指纹法,这类方法通过某种选取策略在文档中取一些字符串作为“指纹”,把指纹映射到Hash 表中,最后统计Hash
- 表中相同的指纹数目或者比率,作为文本相似度依据。
- 基于词频统计的方法也称为基于语义的方法。词频统计法源于信息检索技术中的向量空间模型,该类方法首先都要统计每篇文档中各个单词的出现次数,然后根据单词频度构成文档特征向量,最后采用点积、余弦或者类似方式度量两篇文档的特征向量,以此作为文档相似度的依据。
设计一个即时聊天的系统
- 用户通过客户端进入系统,向服务器发出消息,请求登陆。
- 服务器收到请求后,向客户端返回应答消息,表示同意接受该用户加入,并顺带将自己服务线程所在的监听端口号告诉用户。
- 客户端按照服务器应答中给出的端口号与服务器建立稳定的连接。
- 服务器通过该连接将当前在线用户的列表信息传给新加入的客户端。
- 客户端获得了在线用户列表,就可以独立自主地与在线的其他用户通信了。
- 当用户退出系统时要及时地通知服务器。
分布式系统事务一致性解决方案
分布式系统事务一致性解决方案
MQ(事务消息)
举个例子,Bob向Smith转账,那我们到底是先发送消息,还是先执行扣款操作?
好像都可能会出问题。如果先发消息,扣款操作失败,那么Smith的账户里面会多出一笔钱。反过来,如果先执行扣款操作,后发送消息,那有可能扣款成功了但是消息没发出去,Smith收不到钱。除了上面介绍的通过异常捕获和回滚的方式外,还有没有其他的思路呢?
下面以阿里巴巴的RocketMQ中间件为例,分析下其设计和实现思路。
RocketMQ第一阶段发送Prepared消息时,会拿到消息的地址,第二阶段执行本地事物,第三阶段通过第一阶段拿到的地址去访问消息,并修改状态。细心的读者可能又发现问题了,如果确认消息发送失败了怎么办?RocketMQ会定期扫描消息集群中的事物消息,这时候发现了Prepared消息,它会向消息发送者确认,Bob的钱到底是减了还是没减呢?如果减了是回滚还是继续发送确认消息呢?RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。这样就保证了消息发送与本地事务同时成功或同时失败。如下图:
设计高并发的系统?
- HTML 页面静态化
访问频率较高但内容变动较小,使用网站 HTML 静态化方案来优化访问速度。将社区
内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略。
优势:
一、减轻服务器负担。
二、加快页面打开速度, 静态页面无需 访问 数据库,打开速度较动态页面有明显提高;
三、很多搜索引擎都会优先收录静态页面,不仅被收录的快,还收录的全,容易被搜
索引擎找到;
四、HTML 静态页面不会受程序相关漏洞的影响,减少攻击 ,提高安全性。 - 图片服务器和应用服务器相分离
现在很多的网站上都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影
响网站性能的主要因素。因此很多网站都会将图片存储从网站中分离出来,另外架构一个
或多个服务器来存储图片,将图片放到一个虚拟目录中,而网页上的图片都用一个 URL 地
址来指向这些服务器上的图片的地址,这样的话网站的性能就明显提高了。
优势:
一、分担 Web 服务器的 I/O 负载-将耗费资源的图片服务分离出来,提高服务器的性能
和稳定性。
二、 能够专门对图片服务器进行优化-为图片服务设置有针对性的 缓存方案,减少带宽
成本,提高访问速度。
三、 提高网站的可扩展性-通过增加图片服务器,提高图片吞吐能力。 - 数据库
见“数据库部分的—如果有一个特别大的访问量到数据库上,怎么做优化?”。 - 缓存
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与
数据库的交互,提高性能。
假如我们能减少数据库频繁的访问,那对系统肯定大大有利的。比如一个电子商务系
统的商品搜索,如果某个关键字的商品经常被搜,那就可以考虑这部分商品列表存放到缓
存(内存中去),这样不用每次访问数据库,性能大大增加。 - 镜像
镜像是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本
即为镜像。 - 负载均衡
在网站高并发访问的场景下,使用负载均衡技术(负载均衡服务器)为一个应用构建
一个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上处理,避免单
一服务器因负载压力过大而响应缓慢,使用户请求具有更好的响应延迟特性。 - 并发控制
加锁,如乐观锁和悲观锁。 - 消息队列
通过 mq 一个一个排队方式,跟 12306 一样。
负载均衡的几种类型
- HTTP重定向负载均衡
- 根据用户的HTTP请求计算一台应用集群中服务器的地址,并将此地址写入HTTP重定向响应中返回给用户,需要浏览器请求两次服务器才能完成。
- DNS域名解析负载均衡
-
利用DNS处理域名解析请求的同时进行负载均衡处理。在DNS中配置多个A记录,每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回。
-
将负载均衡的工作转交给DNS,省掉了网站管理维护负载均衡服务器的麻烦,同时还可以使用智能DNS可以基于地理位置或者ISP来做域名解析,用户将会得到距离最近或者速度最快的一个服务器地址,这样可以加快用户的访问速度,改善性能。
-
这种方法的缺点,DNS是多级解析,每一级都会缓存DNS记录,如果某个服务器变动了,DNS记录更新的时间将会很长,这个速度取决于域名服务商。
-
一般大型网站都会使用DNS域名解析,利用域名解析作为一级负载均衡手段。你可以使用 dig <域名> 的方法查看某个域名的A记录,你会发现很多网站会有多条A记录。
- 反向代理负载均衡
-
由于web服务器不直接对外提供访问,因此web服务器不需要使用外部IP,而反向代理服务器则需要配置双网卡和内部外部两套IP地址。
-
反向代理服务器转发请求是在HTTP协议层面,因此也叫应用层负载均衡,由于应用层在七层网络模型中的第七层,所以一般也称为七层负载均衡。
-
优点是和反向代理功服务器功能集成在一起,部署简单。
-
缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。
- 网络层负载均衡
-
通过修改请求目标地址进行负载均衡,网络层在七层网络层模型的第四层,所以也叫做四层负载均衡,也叫做IP层负载均衡。
-
请求达到负载均衡服务器后,由负载均衡服务器在操作系统内核进程获取网络数据包,根据负载均衡算法得到一台真实web服务器的地址,然后修改请求的目的地址到这台真实的web服务器地址,等到web服务器处理完成后,响应数据包回到负载均衡服务器,再将数据包源地址修改为自身的IP(负载均衡服务器的IP)地址发送给用户浏览器
-
网络层的负载均衡在内核进程完成数据转发,有更好的性能。但是由于响应请求的流量要经过负载均衡服务器,容易成为瓶颈。
- 数据链路层负载均衡
-
数据链路层主要处理 mac 地址,所以使用修改mac地址进行转发请求。负载均衡数据分发过程中不修改IP地址,只修改mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的。由于web服务器的服务器地址IP和数据请求目的IP地址一致,不需要通过负载均衡服务器进行地址转换,可将相应数据包直接返回用户。如果有足够的公有IP,其实web服务器也可以直接使用自己的IP响应请求,不过这样web服务器必须绑定负载均衡的虚拟IP地址(VIP),才能保证web服务器收到来自负载均衡发送的数据包。
-
这种方式称作三角传输模式,单臂模式,也叫做直接路由方式(DR)。使用DR方式的链路层负载均衡是目前大型网站使用最广的一种负载均衡手段。
设计高负载的系统
- 应用无状态
- 有效使用缓存
- 应用拆分
- 数据库拆分
- 异步通信
- 非结构化数据存储 ( TFS,NOSQL)
- 监控、预警系统
- 配置统一管理
订票系统,某车次只有一张火车票,假定有 1w 个人同时打开 12306 网站来订票,如何解决并发问题?(可扩展到任何高并发网站要考虑的 并发读写问题
使用乐观锁,乐观锁意思是不锁定表的情况下,利用业务的控制来解决并发问题,这样既保证数据的并发 可读性 ,又保证保存数据的 排他性,保证性能的同时解决了并发带来
的脏数据问题。hibernate 中实现乐观锁。(乐观锁,使用版本标识来确定读到的数据与提交时的数据是否一致。提交后修改版本标识,不一致时可以采取丢弃和再次尝试的策略。)
分布式与集群的区别是什么
分布式:一个业务分拆多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上
实时展现热门文章,比如近8小时点击量最大的文章前100名
- 数据接收
- 客户端会为了减轻服务器的压力而选择延迟合并点击请求进行批量发送
- 服务器肯定会有多台机器多进程部署来接受点击请求,接收到的请求在进行参数解析后,被发送到存储单元。为了减轻存储的压力,每个进程可能会使用小窗口聚合数据,每隔一小段时间将窗口内的数据聚合起来一起发给存储单元。
- 数据存储
- 使用kafka存,ZeroCopy机制并发量很高,数据持久化在磁盘里成本低。不过kafka的数据一般是有过期时间的,如果想完全记住用户的点击以便做长期的数据分析,需要要使用hdfs了
- 分布式TopN算法
- 用户太多,用户表按用户ID哈希分成了1024张子表。用户表里有一个字段score,表示这个用户的积分数。现在我们要计算前100名积分最多的用户以及积分数,该怎么查询?
- 如果是单个表,一个SQL也就搞定了,
- 如果是多个子表,你得在每个子表上都进行一次TopN查询,然后聚合结果再做一次TopN查询。子表查询可以多线程并行,提高聚合效率。
- 滑动窗口
- 8小时的滑动窗口,意味着新的数据源源不断的进来,旧的数据时时刻刻在淘汰,在业务可以差几分钟。
- 我们对时间片进行了切分,一分钟一个槽来进行计数,过期了8小时,移掉第一个,计算topn的帖子,维护窗口,移除过期的槽,然后统计topn,30s~60s调用一次
- 定时任务
- 每个子节点都会有一个定时任务去负责维持统计窗口,过期失效的统计数据,计算局部的topn热帖。
- 现在每个子节点都有了各自的局部topn热帖,那么还需要一个主节点去汇总这些局部热点,然后计算去全局热帖。
- 点击去重
- 首先要从客户端下手,客户端本身可以过滤一部分无效点击。同一篇文章在太短的时间内被当前用户反复点击,这个模式还是很好发现的。如果间隔时间比较长,那就是读者的回味点击,属于文章的正向反馈,应该记录下来
- 服务器还需要防止用户的防刷行为。如果缺失防刷控制,可以通过这种漏洞来使得自己的文章非法获得大量点击,进入热门文章列表,打上热门标签,被海量的用户看到,就会获得较大的经济效益,即使这篇文章内容本身吸引力并不足够。
如何解决电商网站超卖现象
超卖是什么
- 因为数据库底层的写操作和读操作可以同时进行,虽然写操作默认带有隐式锁(即对同一数据不能同时进行写操作)但是读操作默认是不带锁的,所以当用户1去修改库存的时候,用户2依然可以读到库存为1,导致两个用户同时减一次库存,所以出现了超卖现象。
解决方案
- 使用redis预减库存
- 当库存大于0,才能更新库存
update sk_goods_seckill set stock_count = stock_count - 1 where goods_id = #{goodsId} and stock_count > 0
- 添加唯一索引,UNIQUE KEY
u_uid_gid
(user_id
,goods_id
) USING BTREE,防止同一用户同一商品下两次订单 - 乐观锁,就是在数据库设计一个版本号的字段,每次修改都使其+1,这样在提交时比对提交前的版本号就知道是不是并发提交了,但是有个缺点就是只能是应用中控制,如果有跨应用修改同一条数据乐观锁就没办法了,这个时候可以考虑悲观锁。
- 悲观锁,就是直接在数据库层面将数据锁死,类似于oralce中使用select xxxxx from xxxx where xx=xx for update,这样其他线程将无法提交数据。
- 使用消息队列异步下单
有关微服务拆分思想?如何进行微服务的拆分?
- 根据业务能力拆分
业务能力是业务架构模型中的一个概念。业务模型经常对应于一个业务对象,比如说:订单管理负责订单,客户管理负责客户。
- 根据子域拆分
定义对应于领域驱动设计(DDD)的子域的服务。 一个领域由多个子域组成。每个子域对应了业务的不同组成部分。子域可以被这样分类:
- 核心: 业务的核心区分点,应用的最有价值的部分
- 支持: 与业务是做什么的相关,但不是主要区分点。这个可以自己做或者外包。
- 通用: 不特定于业务,理想情况下使用现成的软件来实现
如何保证接口的幂等性?
全局唯一ID
如果使用全局唯一ID,就是根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行。如果不存在则把全局ID,存储到存储系统中,比如数据库、redis等。如果存在则表示该方法已经执行。
从工程的角度来说,使用全局ID做幂等可以作为一个业务的基础的微服务存在,在很多的微服务中都会用到这样的服务,在每个微服务中都完成这样的功能,会存在工作量重复。另外打造一个高可靠的幂等服务还需要考虑很多问题,比如一台机器虽然把全局ID先写入了存储,但是在写入之后挂了,这就需要引入全局ID的超时机制。
使用全局唯一ID是一个通用方案,可以支持插入、更新、删除业务操作。但是这个方案看起来很美但是实现起来比较麻烦,下面的方案适用于特定的场景,但是实现起来比较简单。
去重表
这种方法适用于在业务中有唯一标的插入场景中,比如在以上的支付场景中,如果一个订单只会支付一次,所以订单ID可以作为唯一标识。这时,我们就可以建一张去重表,并且把唯一标识作为唯一索引,在我们实现时,把创建支付单据和写入去去重表,放在一个事务中,如果重复创建,数据库会抛出唯一约束异常,操作就会回滚。
插入或更新
这种方法插入并且有唯一索引的情况,比如我们要关联商品品类,其中商品的ID和品类的ID可以构成唯一索引,并且在数据表中也增加了唯一索引。这时就可以使用InsertOrUpdate操作。在mysql数据库中如下:
insert into goods_category (goods_id,category_id,create_time,update_time) values(#{goodsId},#{categoryId},now(),now()) on DUPLICATE KEY UPDATEupdate_time=now()
多版本控制
这种方法适合在更新的场景中,比如我们要更新商品的名字,这时我们就可以在更新的接口中增加一个版本号,来做幂等
boolean updateGoodsName(int id,String newName,int version);
在实现时可以如下
update goods set name=#{newName},version=#{version} where id=#{id} and version<${version}
状态机控制
这种方法适合在有状态机流转的情况下,比如就会订单的创建和付款,订单的付款肯定是在之前,这时我们可以通过在设计状态字段时,使用int类型,并且通过值类型的大小来做幂等,比如订单的创建为0,付款成功为100。付款失败为99
在做状态机更新时,我们就这可以这样控制
update `order` set status=#{status} where id=#{id} and status<#{status}
mq异步调用失败,如何保证数据一致性?
- 按你的使用场景,推送数据必须得在数据创建事务成功之后执行,这里必须有个先后。你可以将推送这个操作异步执行,消息队列有一搬有ack机制,确保消息没丢失。这时候监听消息队列的程序会执行推送,如果推送成功做标记。如果推送失败也标记记录时间,也可以推到另一个消息队列约定多少分钟重试。实在不行就彻底标记失败,或者回滚之前创建的数据。这个才是最终一致性。
- 如果是并行的操作,就得使用消息队列的confirm机制了。
分布式锁的几种实现方式
- 基于数据库表
-
要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。
-
我们对method_name(方法名)做了唯一性约束,这里如果有多个请求同时提交到数据库的话,数据库会保证只有一个操作可以成功,那么我们就可以认为操作成功的那个线程获得了该方法的锁,可以执行方法体内容。当方法执行完毕之后,想要释放锁的话就删除该记录
- 基于数据库排他锁
- 可以通过数据库的排他锁来实现分布式锁
- 在查询语句后面增加for update,数据库会在查询过程中给数据库表增加排他锁(这里再多提一句,InnoDB引擎在加锁的时候,只有通过索引进行检索的时候才会使用行级锁,否则会使用表级锁。这里我们希望使用行级锁,就要给method_name添加索引
- 值得注意的是,这个索引一定要创建成唯一索引,否则会出现多个重载方法之间无法同时被访问的问题。重载方法的话建议把参数类型也加上。)。当某条记录被加上排他锁之后,其他线程无法再在该行记录上增加排他锁。
- 基于缓存
- 比如Tair的put方法,redis的setnx方法等。并且,这些缓存服务也都提供了对数据的过期自动删除的支持,可以直接设置超时时间来控制锁的释放。
- 基于Zookeeper
- 每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。 判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。
乐观锁冲突并发量很大怎么办
用消息队列一个个处理
消息队列
四种MQ区别
如何保证消息队列是高可用的
- 集群,以rcoketMQ为例,有多master 模式、多master多slave异步复制模式、多 master多slave同步双写模式。
Producer 与 NameServer集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Broker Master 建立长连接,且定时向 Broker 发送心跳。Producer 只能将消息发送到 Broker master,但是 Consumer 则不一样,它同时和提供 Topic 服务的 Master 和 Slave建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。
如何保证消息不被重复消费
原因:
- 消费者在消费后,会发送一个确认信息给消息队列,消息队列收到后会将该消息从消息队列中删除,例如RabbitMQ是发送一个ACK确认消息,RocketMQ是返回一个CONSUME_SUCCESS成功标志,kafka每一个消息都有一个offset,kafka消费过消息后,需要提交offset,让消息队列知道自己已经消费过了。因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将该消息分发给其他的消费者。
解决方法:
- 消息可以使用唯一id标识
- 如果拿到这个消息做数据库的insert操作。给这个消息做一个唯一主键,那么就算出现重复消费的情况,就会导致主键冲突,避免数据库出现脏数据。
- 如果拿到这个消息做redis的set的操作,无论set几次结果都是一样的,set操作是算幂等操作。
- 使用第三方介质做消费记录。以redis为例,给消息分配一个全局id,只要消费过该消息,将< id,message>以K-V形式写入redis。那消费者开始消费前,先去redis中查询有没消费记录即可。
如何防止Cookie被篡改
- 如果是要防止在传输中被窃取或篡改,请使用 TLS
- 如果是要防止客户端篡改,请在 cookie 中加入 MAC(消息验证码),比如可以使用 HMAC-SHA256 算法生成。这样,在从cookies得到数据后,再判断一下这个MAC码就可以知道整个cookies字段是否被篡改过。
- 利用动态密码与Session+Cookies双重验证
分布式 ID 生成器
一个唯一 ID 在一个分布式系统中是非常重要的一个业务属性,其中包括一些如订单 ID,消息 ID ,会话 ID,他们都有一些共有的特性:
- 全局唯一。
- 趋势递增。
- 基于数据库,可以利用 MySQL 中的自增属性 auto_increment 来生成全局唯一 ID,也能保证趋势递增。 但这种方式太依赖 DB,如果数据库挂了那就非常容易出问题。
- 本地UUID生成,还可以采用 UUID 的方式生成唯一 ID,由于是在本地生成没有了网络之类的消耗,所有效率非常高。生成的 ID 是无序性的,不能做到趋势递增。由于是字符串并且不是递增,所以不太适合用作主键。
- 采用本地时间,这种做法非常简单,可以利用本地的毫秒数加上一些业务 ID 来生成唯一ID,这样可以做到趋势递增,并且是在本地生成效率也很高。当并发量足够高的时候唯一性就不能保证了。
- Twitter雪花算法,可以基于 Twitter 的 Snowflake 算法来实现。它主要是一种划分命名空间的算法,将生成的 ID 按照机器、时间等来进行标志。
Redis和RabbitMQ用作消息队列的区别
可靠性
- Redis没有相应的机制保证消息的可靠消费,如果发布者发布一条消息,而没有对应的订阅者的话,这条消息将丢失,不会存在内存中。
- RabbitMQ具有消息消费确认机制,如果发布一条消息,还没有消费者消费该队列,那么这条消息将一直存放在队列中,直到有消费者消费了该条消息,以此可以保证消息的可靠消费。
消费者负载均衡
- Redis发布订阅模式,一个队列可以被多个消费者同时订阅,当有消息到达时,会将该消息依次发送给每个订阅者。
- RabbitMQ队列可以被多个消费者同时监控消费,但是每一条消息只能被消费一次,由于rabbitmq的消费确认机制,因此它能够根据消费者的消费能力而调整它的负载。
持久性
- Redis的持久化是针对于整个redis缓存的内容,它有RDB和AOF两种持久化方式(redis持久化方式,后续更新),可以将整个redis实例持久化到磁盘,以此来做数据备份,防止异常情况下导致数据丢失。
- RabbitMQ队列,消息,都可以选择是否持久化,持久化粒度更小,更灵活;
队列监控
- Redis没有所谓的监控平台。
- RabbitMQ实现了后台监控平台,可以在该平台上看到所有创建的队列的详细情况,良好的后台管理平台可以方面我们更好的使用。
总结
redis:轻量级,高并发,延迟敏感,即时数据分析、秒杀计数器、缓存等
rabbitmq:重量级,高并发,异步,批量数据异步处理、并行任务串行化,高负载任务的负载均衡等
rabbitmq是一个专门的AMQP协议队列,他的优势就在于提供可靠的队列服务,并且可做到异步,而redis主要是用于缓存的,redis的发布订阅模块,可用于实现及时性,且可靠性低的功能。
CAP原则
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
- 一致性(C):所有的节点上的数据时刻保持同步。
- 可用性(A):每个请求都能接受到一个响应,无论响应成功或失败。
- 分区容忍性(P):系统应该能持续提供服务,即使系统内部有消息丢失。(分区)
下表是抛弃CAP中任意一项特性的场景说明:
CAP | 说明 |
---|---|
放弃C | 这里所说的放弃一致性,实际上指的是放弃数据的强一致性,而保留数据的最终一致性。这样的系统无法保证数据保持实时的一致性,但是能够承诺的是,数据最终会达到一个一致的状态 |
放弃A | 这里所说的放弃可用性,一旦系统遇到网络分区或其他故障或为了保证一致性时,放弃可用性,那么受到影响的服务需要等待一定的时间,因此在等待期间系统无法对外提供正常的服务,即不可用 |
放弃P | 这里所说的放弃分区容忍性,如果希望能够避免系统出现分区容错性问题,一种较为简单的做法是将所有的数据(或者仅仅是哪些与事务相关的数据)都放在一个分布式节点上。这样做虽然无法100%保证系统不会出错,但至少不会碰到由于网络分区带来的负面影响。但同时需要注意的是,放弃P的同时也就意味着放弃了系统的可扩展性 |
需要明确的一点是:对于一个分布式系统而言,分区容错性可以说是一个最基本的要求。因为既然是一个分布式系统,那么分布式系统中的组件必然需要被部署到不同的节点,否则也就无所谓的分布式系统了,因此必然出现子网络。而对于分布式系统而言,网络问题又是一个必定会出现的异常情况,因此分区容错性也就成为了一个分布式系统必然需要面对和解决的问题。因此系统架构师往往需要把精力花在如何根据业务特点在C(一致性)和A(可用性)之间寻求平衡。
BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent
(最终一致性)三个短语的简写,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方法来使系统达到最终一致性。
1、基本可用
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性,但请注意,这绝不等价于系统不可用。一下就是两个"基本可用"的例子。
- 响应时间上的损失:系统正常0.5秒能返回结果,由于出现故障,响应时间增加到了1~2秒
- 功能上的损失:高并发情况下,为了保护系统的稳定性(或者保证一致性),部分消费者可能会被引导到一个降级页面(类似"高峰期,稍后再试"页面)
2、软状态
软状态是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同的数据副本之间进行数据同步的过程存在延时。
3、最终一致性
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
ACID和BASE的区别
ACID追求强一致性,BASE追求最终一致性
一致性协议,从2PC到3PC到Paxos到ZAB
2PC(Two-Phase Commit,两阶段提交)
所谓的两个阶段是指:
- 第一阶段:准备阶段 (投票阶段)
- 第二阶段:提交阶段(执行阶段)
1、阶段一:提交事务请求
- (1)事务询问:协调者向所有的参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各参与者的响应
- (2)执行事务:各参与者节点执行事务操作,并将Undo和Redo信息计入事务日志中
- (3)各参与者向协调者反馈事务询问的响应:如果参与者成功执行了事务操作,那么就反馈给协调者Yes响应,表示事务可以执行;如果参与者没有成功执行事务,那么就反馈给协调者No响应,表示事务不可以执行。
2、阶段二:执行事务提交
第二阶段有两种情况:
(1)执行事务提交
如果所有参与者的反馈都是Yes响应,那么
- A、发送提交请求:协调者向所有参与者节点发出Commit请求
- B、事务提交:参与者接收到Commit请求后,会正式执行事务提交操作,并在完成提交之后释放在整个事务执行期间占用的事务资源
- C、反馈事务提交结果:参与者在完成事务提交之后,向协调者发送ACK信息
- D、完成事务:协调者接收到所有参与者反馈的ACK消息后,完成事务
(2)中断事务
任何一个参与者反馈了No响应,或者在等待超时之后,协调者尚无法接收到所有参与者的反馈响应,那么就会中断事务。
- A、发送回滚请求:协调者向所有参与者节点发出Rollback请求
- B、事务回滚:参与者接收到rollback请求后,会利用其在阶段一中记录的Undo信息来执行事务回滚操作,并在完成回滚之后释放整个事务执行期间占用的资源
- C、反馈事务回滚结果:参与者在完成事务回滚之后,向协调者发送ACK信息
- D、中断事务:协调者接收到所有参与者反馈的ACK信息后,完成事务中断
优缺点
- 优点:原理简单、实现方便
- 缺点:同步阻塞、单点问题、数据不一致、太过保守
3PC(Three-Phase Commit,三阶段提交)
Three-Phase Commit,三阶段提交,分为CanCommit、PreCommit、do Commit三个阶段。
为了避免在通知所有参与者提交事务时,其中一个参与者crash不一致时,就出现了三阶段提交的方式。三阶段提交在两阶段提交的基础上增加了一个preCommit的过程,当所有参与者收到preCommit后,并不执行动作,直到收到commit或超过一定时间后才完成操作。
1、阶段一CanCommit
-
(1)事务询问:协调者向各参与者发送CanCommit的请求,询问是否可以执行事务提交操作,并开始等待各参与者的响应
-
(2)参与者向协调者反馈询问的响应:参与者收到CanCommit请求后,正常情况下,如果自身认为可以顺利执行事务,那么会反馈Yes响应,并进入预备状态,否则反馈No。
2、阶段二PreCommit
(1)执行事务预提交
如果协调者接收到各参与者反馈都是Yes,那么执行事务预提交
- A、发送预提交请求:协调者向各参与者发送preCommit请求,并进入prepared阶段
- B、事务预提交:参与者接收到preCommit请求后,会执行事务操作,并将Undo和Redo信息记录到事务日记中
- C、各参与者向协调者反馈事务执行的响应:如果各参与者都成功执行了事务操作,那么反馈给协调者Ack响应,同时等待最终指令,提交commit或者终止abort
(2)中断事务
如果任何一个参与者向协调者反馈了No响应,或者在等待超时后,协调者无法接收到所有参与者的反馈,那么就会中断事务。
- A、发送中断请求:协调者向所有参与者发送abort请求
- B、中断事务:无论是收到来自协调者的abort请求,还是等待超时,参与者都中断事务
3、阶段三doCommit
(1)执行提交
- A、发送提交请求:假设协调者正常工作,接收到了所有参与者的ack响应,那么它将从预提交阶段进入提交状态,并向所有参与者发送doCommit请求
- B、事务提交:参与者收到doCommit请求后,正式提交事务,并在完成事务提交后释放占用的资源
- C、反馈事务提交结果:参与者完成事务提交后,向协调者发送ACK信息
- D、完成事务:协调者接收到所有参与者ack信息,完成事务
(2)中断事务
假设协调者正常工作,并且有任一参与者反馈No,或者在等待超时后无法接收所有参与者的反馈,都会中断事务
- A、发送中断请求:协调者向所有参与者节点发送abort请求
- B、事务回滚:参与者接收到abort请求后,利用undo日志执行事务回滚,并在完成事务回滚后释放占用的资源
- C、反馈事务回滚结果:参与者在完成事务回滚之后,向协调者发送ack信息
- D、中断事务:协调者接收到所有参与者反馈的ack信息后,中断事务。
阶段三可能出现的问题:
协调者出现问题、协调者与参与者之间网络出现故障。不论出现哪种情况,最终都会导致参与者无法及时接收到来自协调者的doCommit或是abort请求,针对这种情况,参与者都会在等待超时后,继续进行事务提交(timeout后中断事务)。
优缺点
- 优点:降低参与者阻塞范围,并能够在出现单点故障后继续达成一致
- 缺点:引入preCommit阶段,在这个阶段如果出现网络分区,协调者无法与参与者正常通信,参与者依然会进行事务提交,造成数据不一致。
Paxos算法
Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。
Paxos 算法解决的问题是在一个可能发生上述异常的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个「一致性算法」以保证每个节点看到的指令一致。
简单说来,Paxos的目的是让整个集群的结点对某个值的变更达成一致。Paxos算法基本上来说是个民主选举的算法——大多数的决定会成个整个集群的统一决定。任何一个点都可以提出要修改某个数据的提案,是否通过这个提案取决于这个集群中是否有超过半数的结点同意(所以Paxos算法需要集群中的结点是单数)
ZAB协议
ZAB(Zookeeper Atomic Broadcast)协议是专门为zookeeper设计的一致性协议。
ZAB协议包括两种基本的模式:消息广播和崩溃恢复
-
当整个服务框架在启动过程中,或是当Leader服务器出现网络中断崩溃退出与重启等异常情况时,ZAB就会进入恢复模式并选举产生新的Leader服务器。
-
当选举产生了新的Leader服务器,同时集群中已经有过半的机器与该Leader服务器完成了状态同步之后,ZAB协议就会退出崩溃恢复模式,进入消息广播模式。
-
当有新的服务器加入到集群中去,如果此时集群中已经存在一个Leader服务器在负责进行消息广播,那么新加入的服务器会自动进入数据恢复模式,找到Leader服务器,并与其进行数据同步,然后一起参与到消息广播流程中去。
以上其实大致经历了三个步骤:
- 崩溃恢复:主要就是Leader选举过程。
- 数据同步:Leader服务器与其他服务器进行数据同步。
- 消息广播:Leader服务器将数据发送给其他服务器。
ZAD和Paxos算法的联系和区别
共同点:
- 两者都存在一个类似于Leader进程的角色,由其负责协调多个Follow进程的运行。
- Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交。
- 在ZAB协议中,每个Proposal中都包含了一个epoch值,用来代表当前Leader周期,在Paxos算法中,同样存在这样一个标识,只是名字变成了Ballot。
不同点:
Paxos算法中,一个新的选举产生的主进程会进行两个阶段的工作
- 读阶段,新的主进程会通过和所有其他进程进行通信的方式来搜集上一个主进程提出的提案,并将它们提交。
- 写阶段,当前主进程开始提出它自己的提案。
ZAB在Paxos基础上额外添加一个同步阶段。同步阶段之前,ZAB协议存在一个和Paxos读阶段类似的发现(Discovery)阶段
- 同步阶段中,新的Leader会确保存在过半的Follower已经提交了之前Leader周期中的所有事务Proposal
- 发现阶段的存在,确保所有进程都已经完成对之前所有事物Proposal的提交
ZAB协议主要用于构建一个高可用的分布式数据主备系统,例如ZooKeeper,Paxos算法则是用于构建一个分布式的一致性状态机系统
服务端主动推送怎么实现
- ajax:这是通过模拟服务器发起的通信,不是实时通信, 就是需要不断的向服务器发送消息询问,这种方式会对服务器造成极大的性能浪费。
- comet:基于 HTTP 长连接的 “服务器推” 技术,能使服务器端主动以异步的方式向客户端程序推送数据,而不需要客户端显式的发出请求
- websocket: 浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
RESTful接口设计
- 本质:一种软件架构风格;
- 核心:基于资源;
- 作用:不同的客户端(如Web、微信小程序、APP)可以使用同一套API;
- 方法类型:POST(新增数据)、DELETE(删除数据)、PUT(更新数据)、GET(得到数据)
注意
- API对应的版本号要在URL中体现。
- 不同的HTTP动词对应不同的操作。
- URL中尽量不要出现动词。
一致性哈希算法
一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,我们把这个由2^32个点组成的圆环称为Hash环。下一步将各个服务器使用Hash进行一个哈希,具体可以选择服务器的IP或主机名作为关键字进行哈希,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。
解决了什么问题?
1.使用hash存在问题,服务器数量改变,所有缓存位置都要改变
2.为了解决容错性和可扩展性,一台宕机,不会影响其他机器,只会影响前面一台
3.使用虚拟节点,解决数据倾斜问题,多了一步虚拟节点到实际节点的映射
RabbitMQ消息丢失解决
RabbitMQ消息丢失分为三种情况
1、消息在传入过程中丢失
生产者开启confirm模式,每次写的消息都会分配一个唯一id,然后写入rabbitmq,rabbitmq会回传ack消息,如果丢失会回调你的一个nack接口,告诉你这个消息接收失败,结合生成者内存维护每个消息id的状态,如果超过一定时间还没接收到这个消息的回调。说明可以重发
2、消息在RabbitMQ弄丢
开启RabbitMQ持久化
3、消息在消费者丢失
关闭RabbitMQ自动ACK,确保完成再ACK,否则不要ACK
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 1076 Wifi密码 (15 分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答…...
2024/4/27 23:31:39 - Redis学习总结
Redis学习总结(一) Redis下载 1.将tar.gz压缩包放到服务器 2.使用tar -zxvf 命令解压压缩包 3.进入redis文件夹查看conf文件 4.安装基本环境 yum install gcc-c 5.make命令 安装6.0.1版本报错解决升级gcc centos7默认gcc版本为4.8.5#升级到 5.3及以上…...
2024/4/28 14:38:13 - 计算机毕业设计java+jsp鲜花销售商城信息网站(源码+系统+mysql数据库+Lw文档)
项目介绍 花卉,是人们生活的调剂品,它为人们的生活添加了更多的色彩和味道。花卉市场是一个对花卉进行集中展示和销售的地方,它有琳琅满目的花卉让人们去选择和购买。相对应的他在管理程度上也有一定的复杂性。如何更好的去管理这些种类繁多…...
2024/4/28 15:01:08 - C++中类的静态变量和静态方法的使用
/* **静态属性和静态方法 */ #include <iostream> using namespace std; class Pet { public: int pubA; int pubB; Pet(); ~Pet(); int petCount(); static int petCountStatic(Pet &pet); static int pubCount; private: …...
2024/4/28 15:34:36 - 八皇后与全排列问题(深度优先搜索)
n-皇后问题 #include<iostream> using namespace std; const int N 20; char a[N][N]; bool col[N],dg[N],udg[N]; int n;void dfs(int u) {if(u n){for(int i0;i<n;i){for(int j0;j<n;j) cout<<a[i][j];cout<<endl;}cout<<endl; return;}for…...
2024/4/28 13:33:52 - sql多表查询之连接查询
题1 https://www.nowcoder.com/practice/5c03f761b36046649ee71f05e1ceecbf?tpId240&tags&title&difficulty0&judgeStatus0&rp0 select uid,exam_cnt,if(question_cnt is null, 0, question_cnt) from(select uid,count(submit_time) as exam_cntfrom e…...
2024/4/28 8:14:23 - @LeetCode 1.两数之和
力扣 在力扣写的第一题,总算知道力扣怎么答题怎么返回数组了~ 要先malloc分配空间才可以。 时间复杂度:O() int* twoSum(int* nums, int numsSize, int target, int* returnSize){int i,j;int* resultNULL;for(i0;i<numsSize;i){for(ji1;j<num…...
2024/4/17 18:32:45 - 洛谷刷题收获
洛谷【入门1】顺序结构 多为优秀大佬题解思路,无其他用途,只是记录。 P1000 超级玛丽游戏 C11中raw string可以跨越多行,其中的空白和换行符都属于字符串的一部分。 #include<bits/stdc.h>using namespace std;int main(){cout<…...
2024/4/28 8:29:52 - ThreadLocal知识点
ThreadLocal 解释 ThreadLocal对象实质为ThreadLocalMap的keyThreadLocalMap是每个Thread对象中包含的一个Map容器ThreadLocalMap中存放的entry继承自WeakReference(弱引用) 每个线程都用于各自的ThreadLocalMap,该容器的使用天生具有多线…...
2024/4/28 11:28:01 - [java架构直通][单体]#4_个人中心
@ApiModel(value="用户对象", description="从客户端,由用户传入的数据封装在此entity中") public class CenterUserBO {@ApiModelProperty(value="用户名", name="username", example="json", required = false)private S…...
2024/4/13 15:27:12 - PAT乙级(算法初步) PAT.B1029——旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。 输入格式: 输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每…...
2024/4/14 16:53:26 - 事件分发三连问:事件是如何从屏幕点击最终到达-Activity-的?CANCEL-事件什么时候会触发
void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) { // 从队列中取出一个事件 mPendingEvent mInboundQueue.dequeueAtHead(); // 根据不同的事件类型,进行不同的操作 switch (mPendingEvent->type) { case EventEntry::TYPE_CONFIGURA…...
2024/4/19 12:22:14 - D/E盘根目录出现Msdia80.dll操作;dllregisterserver调用失败错误代码0x80004005 解决
1. msdia80.dll是什么文件?可以删除吗? 它的正确路径应该是"C:\Program Files\Common Files\Microsoft Shared\VC\msdia80.dll" 。 如果在正确路径下有这个文件,那你可以删了这个文件。 如果没有这个文件,解决的方法&…...
2024/4/18 9:48:54 - Typora、Markdown中的公式,颜色汇总
文章目录前言表情符号人物自然物体地点符号数学符号上标下标开方分数向量上下水平线上下水平大括号累加累乘极限积分加减乘除特殊符号希腊符号箭头符号戴帽符号逻辑运算符三角运算符集合运算符对数运算符微积分运算符关系运算符英文花体字体与颜色字体颜色前言 由于写博客经常…...
2024/4/13 15:28:13 - 一,HTMLCSS
▲一个网页是由三部分组成,分别是: 结构:对应的是 HTML 语言表现:对应的是 CSS 语言行为:对应的是 JavaScript 语言 1.HTML 1)文件结构: ①文件类型说明: HTML文件中第一行的内容…...
2024/4/13 23:07:28 - 【Java基础】ArraylistLinkedList机制,failfastfailsafe
本文根据黑马程序员视频编写,为本人学习笔记,转载注明出处 黑马程序员视频地址https://www.bilibili.com/video/BV15b4y117RJ? 1 arraylist扩容机制 arrylist 是顺序线性表。而linkedlist则是链式线性表(每一个节点占两个内存,…...
2024/4/17 12:29:30 - 全球及中国钎焊箔行业需求态势及发展趋势分析报告2022~2027年
全球及中国钎焊箔行业需求态势及发展趋势分析报告2022~2027年 1 钎焊箔市场概述 1.1 钎焊箔行业概述及统计范围 1.2 按照不同产品类型,钎焊箔主要可以分为如下几个类别 1.2.1 不同产品类型钎焊箔增长趋势2019 VS 2022 VS 2027 1.2.2 复合钎焊箔 1.2.3 非…...
2024/4/13 15:27:53 - 蓝桥杯 基础练习 杨辉三角形-python|CSDN创作打卡
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 杨辉三角形又称Pascal三角形,它的第i1行是(ab)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行…...
2024/4/15 6:36:32 - 【数据结构与算法】之深入解析“填充每个节点的下一个右侧节点指针II”的求解思路与算法示例
一、题目要求 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 n…...
2024/4/16 14:31:43 - C++Primer第5版 函数
函数的形参列表可以为空,但是不能省略,用逗号隔开,其中每个形参都含有一个声明符的声明,即使两个类型相同,都需要写各自类型。 main:处理命令行选项 我们可以给main传递实参,int main(int argc , char* ar…...
2024/4/20 10:52:10
最新文章
- 计算机服务器中了devicdata勒索病毒怎么办?Devicdata勒索病毒解密工具步骤
在这个网络飞速发展的时代,网络为企业的生产运营起到了关键性作用,利用网络可以开展各项工作业务,大大提高了企业生产效率与业务水平,在大家都为网络的便利感到欣慰时,网络数据安全问题,成为众多企业关心的…...
2024/4/28 16:38:29 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - MySQL分库分表的方式有哪些
目录 一、为什么要分库分表 二、什么是分库分表 三、分库分表的几种方式 1.垂直拆分 2. 水平拆分 四、分库分表带来的问题 五、分库分表技术如何选型 一、为什么要分库分表 如果一个网站业务快速发展,那这个网站流量也会增加,数据的压力也会随之而…...
2024/4/22 18:31:53 - CSS3 高级- 复杂选择器、内容生成、变形(transform)、过渡(transition)、动画(animation)
文章目录 一、复杂选择器兄弟选择器:选择平级元素的唯一办法属性选择器:1、通用:基本用不着,太泛了2、自定义:4种伪类选择器:1、目标伪类:2、结构伪类:3、元素状态伪类:4、伪元素选择器:应用于文字,使网页看起来想杂志5、否定伪类:选择器:not([本选择器的条件]) /*…...
2024/4/27 18:00:07 - 产品推荐 | 中科亿海微推出亿迅®A8000金融FPGA加速卡
01、产品概述 亿迅A8000金融加速卡,是中科亿海微联合金融证券领域的战略合作伙伴北京睿智融科,将可编程逻辑芯片与金融行业深度结合,通过可编程逻辑芯片对交易行情加速解码,实现低至纳秒级的解码引擎,端到端的处理时延…...
2024/4/26 12:36:49 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/28 15:57:13 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57