#继续分布式概念#
一.Data replicaiton in distributed systems数据复制
1.目的:增加data的可用性(对应CAP理论中的A);提升数据检索的速度
2.类型:
- Synchronous Data replication(同步数据复制):原始数据存储发生一点微小的变化时,立即同步更新
- Asynchronous Data replication(异步数据复制):在所有改变发生都结束后才会更新,不是同步的,会滞后
3.三种复制方式:1.full replication(全复制,更高数据可用性但更新操作效率低) 2.No replication(并发很好实现但数据可用性低) 3.Partial replication(一个均衡的方式,复制根据信息的重要性来控制)
二.Issue of distributed transactions
between a client (mostly software) and a data repository server.
事务是用于同时访问(和修改)共享数据的同步机制。
类似于商务谈判:首先,聚在一起,建立连接,谈判应该做什么;在谈判的任何时候,任何一方都可以退出;如果达成一致,各方都需要承诺。
Abort:事务失败
分布式事务:A transaction where operations involve multiple servers.(操作包含多个服务器)
必须要遵循ACP(atomic commit protocols):所有改变一起发生或一起不发生,保持原子性
如何让所有的服务器同时接收一个事务或者终止一个事务(同时)?
- 1.One-phase The coordinator keep requesting all participants to commit until they return an acknowledgment.◼ No chance of a participant(servers) to initiate an abort.(终止)【服务器本身是没有机会提出终止的】
- 2.two-phase (1.让所有服务器投票 2.根据投票结果决定终止或进行)【服务器可以自行提出终止】If all participants answer yes (including the coordinator), the coordinator sends doCommit to all participants.
在服务器投票阶段:有一个参与者返回失败,那么协调者就会向所有参与者发送回滚事务的请求,即分布式事务执行失败;
在根据投票结果决定阶段:如果所有服务器都回复yes,协调器就会发doCommit,否则就会向投yes的服务器发送doAbort。 服务器就等待协调器的结果来进行行动,如果是doCommit,就会发送一个haveCommited的确认。
此时如果发生错误导致第二阶段提交失败:1.第二阶段执行的是回滚事务操作,那么答案是不断重试,直到所有参与者都回滚了,不然那些在第一阶段准备成功的参与者会一直阻塞着。
2.第二阶段执行的是提交事务操作,那么答案也是不断重试,因为有可能一些参与者的事务已经提交成功了,这个时候只有一条路,就是头铁往前冲,不断的重试,直到提交成功,到最后真的不行只能人工介入处理。
若协调者发送了doCommit,只有一个回应:Transaction is blocked until the participant resumes. Consistency is ensured because of transaction state being saved on stable storage.事务拥塞直到参与者修好后再次进入。
三.DDBMS——Distributed database management systems
DDBMS的三种结构:
1.Client-server architecture(客户端负责向服务器发送请求,服务器处理和存储数据。客户端和服务器通过网络进行通信。在分布式环境中,可以在不同站点上有多个服务器,客户端可以从任何一个服务器访问数据。)在centralised server system中用到
2.Collaborating server architecture(系统中的每个服务器可以处理数据的子集,并具有自己的处理能力。它们协作执行分布式事务并在分布式数据库中维护一致性和完整性。)
3.Middleware (中间件) architecture(中间件抽象了分布式环境的底层复杂性,并为应用程序提供了统一的接口,用于与分布式数据库交互。中间件可以处理各种任务,如数据分布、复制、缓存、事务管理和查询优化。)【需要一个服务器作为中间件,处理来自其他服务器的检索和事务,本地服务器就处理本地的检索和事务】
EG:SingleStore——Aggregator node(聚合器节点) is responsible for receiving SQL queries, breaking them down across leaf nodes, and combining results back for the client.