分布式共识算法在复制中的应用_第1页
分布式共识算法在复制中的应用_第2页
分布式共识算法在复制中的应用_第3页
分布式共识算法在复制中的应用_第4页
分布式共识算法在复制中的应用_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1分布式共识算法在复制中的应用第一部分分布式共识算法概述 2第二部分Raft算法在复制中的应用 4第三部分Paxos算法在复制中的实现 7第四部分ViewstampedReplication算法 10第五部分BFT算法在复制中的作用 13第六部分共识算法在分布式数据库中的应用 15第七部分分布式共识算法的性能比较 18第八部分共识算法在复制中的展望 21

第一部分分布式共识算法概述关键词关键要点分布式共识算法概述

主题名称:分布式共识的必要性

-分布式系统中,多个节点之间需要达成一致的状态,以保证系统数据的完整性和可靠性。

-分布式共识算法提供了在分布式系统中实现节点间一致性的手段,避免数据的不一致和混乱。

主题名称:分布式共识算法的类型

分布式共识算法概述

在分布式系统中,分布式共识算法是至关重要的,它允许多个分布在不同节点上的进程或实体就一个共同状态或决策达成一致。达成共识对于确保系统中的数据一致性和可靠性至关重要。

分布式共识算法的类型

分布式共识算法可以分为三大类:

*基于领导者的算法:这些算法依赖于一个被选出的领导者来协调共识过程。领导者负责提案、收集投票并确定结果。

*基于仲裁者的算法:这些算法使用一个称为仲裁者的第三方实体。当节点无法达成共识时,仲裁者会介入并决定结果。

*基于无领导的算法:这些算法不依赖于领导者或仲裁者。相反,节点通过消息传递和投票来达成共识。

分布式共识算法的属性

分布式共识算法通常被评估以下属性:

*安全性:算法必须确保在任何时候只有一个一致的决定。

*完整性:算法必须确保一旦达成共识,决议就不会被更改。

*可用性:算法必须即使在出现故障的情况下也能正常运行。

*吞吐量:算法必须能够处理高交易量。

*延迟:算法必须尽量减少达成共识所需的延迟。

*弹性:算法必须能够适应网络分区和节点故障。

分布式共识算法的应用

分布式共识算法在现实世界中有广泛的应用,包括:

*区块链:分布式共识算法是区块链技术的基础,它允许多个节点就交易的顺序和有效性达成一致,以创建不可变的交易记录。

*数据库复制:分布式共识算法用于确保数据库副本之间的数据一致性,从而避免数据损坏和丢失。

*分布式文件系统:分布式共识算法用于协调对分布式文件系统的访问和更新,以确保文件的一致性和可用性。

*分布式事务:分布式共识算法用于确保跨多个分布式系统的原子和一致的事务。

*分布式消息传递:分布式共识算法用于确保分布式消息系统的消息传递有序和可靠。

常见的分布式共识算法

常用的分布式共识算法包括:

*Paxos:一种基于领导者的算法,由LeslieLamport提出。

*Raft:一种基于领导者的算法,由DiegoOngaro和JohnOusterhout提出。

*ZAB(ZooKeeperAtomicBroadcast):一种基于仲裁者的算法,由ApacheZooKeeper使用。

*ViewstampedReplication:一种基于无领导的算法,由BarbaraLiskov和MiguelCastro提出。

*PBFT(PracticalByzantineFaultTolerance):一种基于无领导的算法,由MiguelCastro和BarbaraLiskov提出。

选择分布式共识算法

选择分布式共识算法时,必须考虑以下因素:

*系统规模:系统的节点数量和分布范围。

*可靠性要求:系统对数据一致性和可用性的要求。

*延迟要求:系统对达成共识所需延迟的容忍度。

*安全性要求:系统对恶意行为和故障的容忍度。

*可扩展性:算法适应随着系统规模扩大而保持有效性的能力。第二部分Raft算法在复制中的应用关键词关键要点Raft算法在复制中的应用

【领导者选举】:

1.每个服务器初始为“追随者”状态,等待来自“领导者”的心跳信息。

2.如果没有收到心跳信息,则服务器启动选举流程,自己作为候选人并向其他服务器发送投票请求。

3.收到过半数票的服务器成为新“领导者”并通知其他服务器。

【日志复制】:

Raft算法在复制中的应用

引言

Raft算法是一种分布式共识算法,旨在解决复制系统中的一致性问题。它提供了高性能、可扩展性和容错性,非常适合需要高可用性和故障恢复的分布式系统。

Raft算法概述

Raft算法的工作原理:

*服务器角色:每个服务器具有三个角色之一:领导者、跟随者或候选者。

*领导者选举:当系统中没有领导者时,候选者之间会发起选举,以选择新领导者。

*日志复制:领导者负责接收客户端请求并将其附加到日志中。然后,它将日志条目广播给跟随者,跟随者同步它们的日志以匹配领导者的日志。

*共识:如果大多数服务器(即法定人数)在日志条目上达成一致(即复制),则该条目被提交并认为是已提交。

Raft算法在复制中的应用

Raft算法广泛应用于复制系统中,提供以下优势:

1.高可用性

Raft算法允许服务器故障,而不会影响系统可访问性。当领导者故障时,系统会自动选举新领导者,以确保持续的日志复制和客户端请求处理。

2.一致性

Raft算法保证了复制系统中所有服务器上的状态一致性。当提交日志条目时,它会存储在所有服务器上,从而确保所有副本保持最新状态。

3.可扩展性

Raft算法高度可扩展,可以处理大型分布式集群。它使用分层架构,其中领导者负责协调较小的服务器组。

4.容错性

Raft算法对于服务器故障和网络分区具有高度容错。它使用随机超时、心跳和日志对比来检测和响应故障,以确保系统稳定性。

实际应用

Raft算法被广泛用于各种复制系统中,包括:

*数据库:ApacheCassandra、CockroachDB

*存储系统:etcd、Kubernetes

*消息队列:ApacheKafka

*分布式文件系统:HDFS

优点对比其他共识算法

与其他分布式共识算法(如Paxos)相比,Raft算法具有以下优点:

*易于理解和实现:Raft算法的清晰定义和结构使其更容易理解和实现。

*高性能:Raft算法优化了选举和日志复制过程,以实现高吞吐量和低延迟。

*容忍分区:Raft算法可以处理网络分区并确保在分区解决后的一致性。

局限性

与任何分布式算法一样,Raft算法也有一些局限性:

*通信开销:Raft算法需要大量的服务器间通信,这可能会影响较大的集群的性能。

*领导者单点故障:虽然Raft算法可以容忍领导者故障,但如果领导者持续故障,系统可能会变得不可用。

总结

Raft算法是一种强大的分布式共识算法,非常适合需要高可用性、一致性、可扩展性和容错性的复制系统。它已在广泛的应用程序中得到成功部署,例如数据库、存储系统、消息队列和分布式文件系统。尽管存在一些局限性,但Raft算法仍然是构建高性能、可靠的分布式复制系统的领先选择之一。第三部分Paxos算法在复制中的实现关键词关键要点【Paxos算法的基本原理】:

1.Paxos算法是一种分布式共识算法,其核心思想是通过proposer、acceptor和learner三个角色来达成共识。

2.proposer发送prepare请求给acceptor,acceptor返回prepare-ok或nack回复给proposer。

3.proposer收集到多数acceptor的promise后,发送accept请求给acceptor,acceptor返回accept-ok或nack回复给proposer。

【Paxos算法在复制中的应用】:

Paxos算法在复制中的实现

简介

Paxos算法是一种分布式共识算法,它允许一群节点就一个值达成一致,即使其中一些节点出现故障或恶意行为。Paxos算法通常用于复制系统中,以确保副本之间的数据一致性。

Paxos算法的实现

Paxos算法分为两个阶段:

准备阶段

*提议者发送一个名为“准备”的消息,其中包含一个序列号和提议的值。

*节点收到“准备”消息后,如果该节点尚未同意任何提议,则它将同意该提议并发送一个名为“准备确认”的消息,其中包含序列号和它同意的值。

*如果提议者收到大多数“准备确认”消息,则它进入接受阶段。

接受阶段

*提议者发送一个名为“接受”的消息,其中包含序列号和提议的值。

*节点收到“接受”消息后,如果该节点之前同意了该提议,则它将接受该提议并发送一个名为“接受确认”的消息,其中包含序列号和它同意的值。

*如果提议者收到大多数“接受确认”消息,则该提议就被认为是已决议的,并且所有节点将更新自己的副本以反映该值。

容错性

Paxos算法是容错的,这意味着它可以容忍以下类型的故障:

*节点故障:如果一个或多个节点出现故障,算法仍可以继续运行。

*网络故障:如果消息丢失或延迟,算法仍可以继续运行。

*恶意行为:如果一个或多个节点表现得恶意,算法仍可以防止达成错误的共识。

在复制中的应用

Paxos算法广泛应用于复制系统中。在复制系统中,多个副本存储相同的数据,以提高可用性和容错性。Paxos算法用于确保所有副本包含相同的数据。

以下是Paxos算法在复制中的典型实现:

*日志复制:每个副本都维护一个日志,其中包含来自客户端的更新。Paxos算法用于确保所有副本以相同的顺序应用更新。

*状态机复制:每个副本都维护一个状态机,它根据接收的命令更新其状态。Paxos算法用于确保所有副本维护相同的状态。

性能

Paxos算法的性能取决于以下因素:

*网络延迟:消息发送和接收的延迟会影响算法的性能。

*并行性:Paxos算法可以并行执行,以提高性能。

*故障频率:故障越频繁,算法的性能就越差。

其他考虑因素

除了性能之外,在使用Paxos算法时还需要考虑以下因素:

*复杂性:Paxos算法相对复杂,其实现可能具有挑战性。

*单点故障:Paxos算法中的提议者是一个单点故障点。

*吞吐量:Paxos算法的吞吐量有限,因为它需要在每个更新上达成共识。

结论

Paxos算法是一种强大的分布式共识算法,它允许一群节点就一个值达成一致。Paxos算法被广泛应用于复制系统中,以确保副本之间的数据一致性。虽然Paxos算法相对复杂,但它提供了高水平的容错性和性能,使其成为复制系统中的一个宝贵工具。第四部分ViewstampedReplication算法关键词关键要点【ViewstampedReplication算法】

1.ViewstampedReplication(VR)是一种基于Paxos协议的一致性复制算法。

2.VR在复制组中引入了一个“视图”概念,其中每个视图包含一个唯一编号和一个组中成员的列表。

3.VR使用视图戳记来保证提交顺序,该戳记由视图编号和消息发送者的唯一标识符组成。

【复制组角色】

ViewstampedReplication算法

简介

ViewstampedReplication(VR)算法是一种主从复制算法,旨在确保分布式系统中副本之间数据的一致性和原子性。它由Oki和Liskov于1988年提出,是基于ViewstampedGroupCommunication协议。

原理

VR算法基于以下关键概念:

*视图(View):系统中副本的状态,包括主副本的身份和副本间的相对顺序。

*时间戳(Timestamp):每个操作在每个副本上的顺序号。

VR算法通过以下步骤工作:

副本操作:

1.客户将操作发送给主副本。

2.主副本为操作分配一个时间戳。

3.主副本将带时间戳的操作广播给所有副本。

副本执行:

1.副本收到带时间戳的操作后,将其保存在缓冲区中。

2.副本等待来自其他副本的所有时间戳小于或等于其自身时间戳的操作。

3.副本根据视图执行操作并将其提交到本地存储。

视图变更:

1.当主副本发生故障时,系统将启动视图变更过程。

2.新的主副本被选举出来并分配一个新的视图号。

3.新的主副本将新的视图号广播给所有副本。

4.副本更新其视图并重新执行缓冲区中的所有操作。

优点

VR算法具有以下优点:

*高吞吐量:通过并行执行副本操作提高吞吐量。

*强一致性:保证副本之间数据的一致性和原子性。

*可拓展性:可以动态处理副本的添加和删除。

*容错性:可以容忍主副本和副本的故障。

缺点

VR算法也有一些缺点:

*通信开销高:需要大量的消息交换来维护视图和时间戳。

*延迟高:副本必须等待其他副本执行所有更早的操作才能执行操作。

*复杂性:算法实现相对复杂。

应用

VR算法被广泛应用于需要高数据一致性和容错性的分布式系统中,例如:

*数据库系统

*分布式文件系统

*云计算平台

*区块链系统

变种

VR算法有多种变种,旨在提高性能或适应不同的环境,例如:

*FastVR:优化了时间戳分配,减少了通信开销。

*Primary-BackupVR:使用单一主副本和多个备份副本,降低了复杂性。

*NVR:支持非确定性操作,扩展了VR算法的适用性。

结论

ViewstampedReplication算法是一种有效且广泛使用的分布式共识算法,用于确保分布式系统中副本之间数据的一致性和原子性。它具有高吞吐量、强一致性、可拓展性和容错性等优点。第五部分BFT算法在复制中的作用关键词关键要点【BFT算法在复制中的作用】:

1.拜占庭容错(BFT)算法确保在存在故障和恶意节点的情况下,分布式系统仍能达成共识。

2.BFT算法复制数据或状态到多个副本,即使其中一些副本发生故障或被破坏,系统仍能保持数据的一致性和可用性。

3.BFT算法在复制中扮演着关键角色,它提供了容错、数据完整性和一致性保证,确保系统在极端条件下也能保持可靠性。

【BFT算法的类型】:

拜占庭容错(BFT)算法在复制中的作用

在分布式系统中,复制是实现数据一致性和容错性的关键技术。复制是指维护数据多个副本,并确保这些副本保持一致。在存在拜占庭故障的情况下,即节点可能发生任意故障(包括恶意故障)的情况下,实现复制具有挑战性。

拜占庭容错(BFT)算法是一种分布式共识算法,允许节点在存在拜占庭故障的情况下达成共识。BFT算法通过使用冗余和容错机制来实现这一点,即使在存在恶意节点的情况下,也能保证系统中诚实节点的正确性。

BFT算法在复制中的作用如下:

*维护数据一致性:BFT算法确保数据副本之间保持一致,即使存在拜占庭故障。这通过使用共识协议来实现,该协议确定副本的最终值,并防止恶意节点破坏数据完整性。

*容忍拜占庭故障:BFT算法设计为容忍一定数量的拜占庭故障。这允许系统在部分节点出现故障的情况下继续正常运行,而无需中断服务或影响数据一致性。

*提供容错性:通过冗余和容错机制,BFT算法提高了系统的容错性。即使多个节点同时发生故障,系统仍能继续运行,并维护数据一致性。

具体而言,BFT算法在复制中实现容错性的方式如下:

*共识协议:BFT算法依赖于共识协议,例如Paxos或Raft。共识协议允许节点就数据副本的最终值达成共识,即使存在拜占庭故障。

*法定人数:BFT算法使用法定人数机制。在任何操作期间,必须有法定人数的诚实节点参与才能达成共识。这防止恶意节点控制决定或破坏数据完整性。

*冗余:BFT算法使用冗余节点来提高容错性。即使多个节点同时发生故障,仍有足够的诚实节点来组成法定人数,并维持系统的正常运行。

BFT算法在复制中的应用为分布式系统提供了高度的容错性和数据一致性保证。它们特别适用于需要高可靠性和可用性的关键任务系统,例如区块链、分布式数据库和容错存储系统。

BFT算法在复制中的优势

*容忍拜占庭故障

*保持数据一致性

*提供高可用性和可靠性

*支持分布式系统中的复制

BFT算法在复制中的局限性

*性能开销高,因为需要冗余和共识协议

*复杂且难以实现

*在大规模系统中可扩展性受限

*无法容忍所有类型的故障(例如,网络分区)

结论

BFT算法是分布式共识算法,在复制中发挥着至关重要的作用。它们使系统能够在存在拜占庭故障的情况下维护数据一致性和容错性。尽管存在一些局限性,但BFT算法仍然是需要高可靠性、可用性和数据一致性的分布式系统的宝贵工具。第六部分共识算法在分布式数据库中的应用关键词关键要点主题名称:复制构成

1.主从复制:一种简单且常见的复制方法,其中只有一个主数据库负责处理写操作,而从数据库只负责读取操作。

2.多主复制:允许来自多个主数据库的写操作,从而提高了可用性和性能,但带来了数据一致性挑战。

3.无主复制:所有数据库节点都是平等的,可以处理写操作,无需主数据库。这提高了容错性和弹性,但带来了协调写操作的复杂性。

主题名称:一致性级别

共识算法在分布式数据库中的应用

引言

分布式数据库需要确保数据的一致性,即使在发生故障或网络分区的情况下也是如此。共识算法是一种分布式系统中达成共识的重要机制,它使节点能够就单一状态或值达成一致。在分布式数据库中,共识算法用于维护数据副本的一致性。

共识算法的类型

在分布式数据库中使用了几种共识算法,包括:

*Paxos算法:Paxos算法是一种容错的共识算法,可以在大多数节点出现故障的情况下工作。它有两种主要变体:基本Paxos和多Paxos。

*Raft算法:Raft算法是Paxos算法的一种精简实现,适用于小型且不太可能出现节点故障的系统。它易于理解和实现,并提供高性能。

*ZAB算法:ZAB算法(Zookeeper原子广播)是一种基于Paxos算法的共识算法。它专门设计用于Zookeeper分布式协调服务。

共识算法在分布式数据库中的应用

共识算法在分布式数据库中具有以下主要应用:

1.数据复制

共识算法用于维护分布式数据库中数据副本的一致性。当一个副本更新数据时,需要通过共识算法来达成一致,确保所有副本都以相同的方式更新。

2.选举领导者

分布式数据库通常使用领导者选举机制来协调系统中的活动。共识算法用于选举领导者,并确保所有节点都同意领导者的身份。

3.事务提交

共识算法可以用于事务提交。分布式事务涉及多个节点,需要确保事务要么完全提交,要么完全回滚。共识算法可用于协调事务提交,确保所有节点都同意事务的状态。

4.状态机复制

共识算法是状态机复制的基础,这是一种用于构建高可用分布式系统的技术。状态机复制使用共识算法来复制系统状态,并确保所有副本都处于相同状态。

5.分布式锁

共识算法可用于实现分布式锁,这是一种用于协调对共享资源的访问的机制。通过共识算法,只能一个节点获取锁,从而防止冲突。

其他考虑因素

在选择和实施共识算法时,有几个其他因素需要考虑:

*性能:共识算法的性能对于分布式数据库至关重要。高性能的共识算法可以提高数据库的吞吐量和延迟。

*容错能力:分布式数据库需要容忍节点故障和网络分区。容错的共识算法可以确保即使在发生故障的情况下也能保持数据一致性。

*可扩展性:分布式数据库需要能够随着节点数量的增加而扩展。可扩展的共识算法可以满足大型分布式系统的需求。

结论

共识算法是分布式数据库中不可或缺的机制。它们用于维护数据副本的一致性、选举领导者、提交事务、执行状态机复制和实现分布式锁。通过仔细选择和实施共识算法,可以确保分布式数据库的高可用性、一致性和容错能力。第七部分分布式共识算法的性能比较关键词关键要点性能指标

1.吞吐量(TPS):每秒处理的事务数量。它衡量系统处理并发请求的能力。

2.延迟:执行事务所需的时间。它影响系统对实时代理的响应能力。

3.可用性:系统连续运行而不会发生故障或中断的能力。它对于确保系统可靠至关重要。

4.容错性:系统在组件故障后继续运行的能力。它决定了系统对不可靠组件的鲁棒性。

算法类型

1.基于复制的算法:使用备份来维护数据一致性。如Paxos、Raft。

2.非基于复制的算法:不使用备份,而是通过消息传递或投票来达成共识。如PBFT、SWMR。

3.混合算法:结合基于复制和非基于复制技术的优点。如PaxosMadeSimple、ZAB。

网络条件

1.同步网络:所有消息按顺序、无错误地传递。

2.半同步网络:消息可能出现延迟、丢失或重复,但最终会传递。

3.异步网络:消息传递具有任意延迟,可能丢失或重复。

4.部分同步网络:介于同步和异步之间,消息延迟具有上下界。

共识阶段

1.提议阶段:节点提出事务提案。

2.准备阶段:节点对提案投票并收集支持。

3.提交阶段:节点在收集到足够的投票后执行事务。

容错机制

1.故障检测:识别故障节点的机制,如心跳机制或超时检测。

2.故障恢复:节点恢复后的处理机制,如日志复制或状态转移。

3.视图更改:更新系统视图以排除故障节点的机制。

优化技术

1.多副本协议:优化复制过程,提高吞吐量和可靠性。

2.优化日志管理:减少日志大小或提高日志复制效率。

3.优化网络通信:使用高效的网络协议或消息压缩策略。分布式共识算法的性能比较

摘要

分布式共识算法是分布式系统中协调节点以达成一致状态的基础。在复制场景中,共识算法对于确保副本的完整性至关重要。本文概述了分布式共识算法的性能特征,并根据吞吐量、延迟、容错能力和资源利用等关键指标对其进行比较。

1.吞吐量

吞吐量是共识算法处理请求的能力,通常以每秒处理的事务数(TPS)衡量。吞吐量对于处理大量并发的请求和避免系统瓶颈至关重要。

-PBFT(实用拜占庭容错):PBFT提供高吞吐量,但受拜占庭容错限制。

-Raft:Raft的吞吐量较低,但在高延迟环境下表现更佳。

-Paxos:Paxos具有中等的吞吐量,但非常复杂且难以实现。

-ZAB(基于ZooKeeper的原子广播):ZAB提供相对较高的吞吐量,但可能存在延迟问题。

2.延迟

延迟是完成共识过程所需的时间,通常以毫秒(ms)衡量。低延迟对于实时和交互式应用程序至关重要。

-PBFT:PBFT具有很高的延迟,因为它需要多个通信回合来达成共识。

-Raft:Raft的延迟较低,特别是在高延迟环境下。

-Paxos:Paxos的延迟中等,但可能因网络状况而异。

-ZAB:ZAB的延迟相对较低,但可能受到ZooKeeper的性能影响。

3.容错能力

容错能力是共识算法在节点故障或网络分区等异常情况下继续运作的能力。

-PBFT:PBFT可以容忍最多f个拜占庭故障节点,其中f是系统中容忍的故障总数的一半。

-Raft:Raft可以容忍多达(n/2)-1个故障节点,其中n是系统中的节点总数。

-Paxos:Paxos可以容忍多达(n/2)-1个故障节点,但需要额外的机制来处理崩溃的领导者。

-ZAB:ZAB可以容忍多达(n/2)-1个故障节点,但需要ZooKeeper的支持。

4.资源利用

资源利用是共识算法消耗的计算、内存和网络带宽资源的程度。

-PBFT:PBFT是资源密集型的,需要大量的计算和网络带宽。

-Raft:Raft的资源利用率较低,特别是在高延迟环境中。

-Paxos:Paxos的资源利用率中等,但可能因网络状况而异。

-ZAB:ZAB的资源利用率相对较低,但可能受到ZooKeeper的性能影响。

5.其他考虑因素

除了上述关键指标外,在选择共识算法时还应考虑以下因素:

-可扩展性:算法在节点数量增加时的性能如何。

-灵活性:算法是否易于配置和适应不断变化的系统要求。

-安全性:算法是否可以防止恶意攻击,例如双重攻击和消息伪造。

结论

分布式共识算法的性能特征对于在复制场景中选择合适的算法至关重要。通过比较吞吐量、延迟、容错能力、资源利用率和其他因素,系统设计师可以选择最适合特定应用程序要求的算法。这些算法的不断发展和优化,有望进一步提高分布式系统的性能和可靠性。第八部分共识算法在复制中的展望共识算法在复制中的展望

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论