放松时序约束
发布日期:2023-04-08浏览量:152
尽能够削减零碎中的时序约束。当你想增加一个约東,使某个物品或对象在用户的两个动作之间维持某个状况时,放松营业准则中的约束。由于大大都rdbms的acid属性,扩展具备时序约束的零碎十分因难。
在需求增加约東时,例比方让物品从用户看到它们直到用户购置它们都存在,要当真思索。尽管某些特殊情况能够会令客户绝望,可是补充客户比起不克不及扩展来讲容易患多。
在数学和机械进修(人工智能)领域,有一套约東知足问题(csp),此中的对象必需知足某些约束。csp常规庞大度很高,需求启发式搜索和组合式搜索要领连系才气解决的。两个经典的csp难题是数独游戏和地图着色问题。数独游戏的方针是填写一个大九宫格,每行每列都有9个单位格,大九宫格可以分为小九宫格,要在每一个小九宫格中填入1到9的数字,使得大九宫格每回行和每回列的数字都不反复。地图着色问题是对地图进行着色,使相邻的地域具备差别的颜色。
csp问题还会衍生出时序约束知足问题(tcsp),此中变量暗示的是事宜,约束暗示两个事宜之间能够的时序关系。这类问题的方针是确保变量间的约束,决议知足约束的各类场景。对变量强制履行当地一致性,可以确保问题中的一切节点、弧和途径都知足约東。机械进修领域和计较机科学中的不少问题均可以建模为tcsp,如机械视觉、调理、平面规划设计、sas零碎中的用例等,均可以看做是tcsp。
常见的sas应用中的时序约束的例子是用户购置一个物品。用户阅读该物品,把它放入购物车并结算,这些操纵都需求一些时间。有人以为,思索到绝对的最好用户体验,无论这个物品是否存在,都要在整个过程当中使它连结同一的状况。要实现这一点,就需求在用户关掉该页面,或者抛却了购物车,或者结算以前,把该物品在数据库中标识为“拘留”的状况。若是咱们站点的用户数未几,这类要领简略实用。对用户来讲,在把物品插手购物车以前,阅读了100个或更多的物品是很常见的。咱们的一个客户宣称,他们的用户在把一个物品插手购物车以前,要阅读500多个检索后果。对付这类情况,咱们的应用能够需求多少数据库的读副本,使得更多的人能够检索和阅读物品,而不是购置物品。如许就发生了问题,大大都 rdbms难以连结节点间的一切数据彻底一致。即便数据库的读副本或者从数据库在数据一致性上只要几秒钟的差别,仍是会发生特殊情况,比方两个用户都想查看某个物品,而它只剩下末了一个。后面咱们会来解决这个问题,可是起首让咱们看看为甚么数据库会形成这个问题。
形成rdbms难以进行散布式扩展的属性是一致性。cap定理,又称为布鲁尔定理,是以计较机科学家 eric brewer的名字定名的,它形容了在散布式环境中设计应用的三点核心请求,但这三点请求不行能同时知足。这三点请求用缩写cap暗示。
一致性(consistency)--客户端发现一组操纵同时发生了
可用性(avalability)逐个在收到计划中的相应后,任何操纵都要终止。
分区容忍性(partition tolerance)-即便个别组件不行用,操纵也会完成。
这个问题的解决计划叫做base,是解决cap的架构的缩写,代表根本可用(basic available)、软状况( soft state)和终极一致性(eventually consisten)经由过程放松、一致性的acid属性,在扩展性方面可以获得更大的灵活性。采用base架构可使数据库终极到达一致。这能够只需求几分钟,以至几秒钟,但在前面的例子中咱们看到了,若是应用程序但愿能够“锁定”数据,那末即便几毫秒的纷歧致也会形成问题。
放松时序约束可以从头设计咱们的零碎、从而使它能够到达终极致性。用户刚阅读过一个物品,不克不及确保该物品还存在。只要把该物品放入购物车,应用才会锁定命据,锁定操纵会在主写入副本或主数据库中执行。由于咱们具备acid属性、以是可以确保若是买卖完成为了,就能够把该物品的记载标志为“锁定的”、而后用户就能够接续安心购置了由于该物品曾经为他们保存了。而对其余阅读该物品的用户来讲,它则能够另有,也可以没有了。
另外一个经常发现时序约束的应用领域是转移物品(钱)或在用户间通讯。在单一数据库中,很容易确保用户a把钱、消息或物品转移到了用户b的账户。把数据散布到多个数据副本上,使得连结这类一致性变得很坚苦。解决这类问题的要领是不要但愿对即时转移操纵有时序约東。让用户a在看到用户b转给他的钱以前等候几分钟,是彻底可以承受的起因很简略,转移物晶的双方通常规不会在零碎中同步转移物品。显然与同步通讯差别,如谈天。你很容易在网页设计零碎中加人时序约束,由于看来,这能提供最好的客户体验。可是,在增加时序约東前,最好思索一下如许做发生的恒久问题,由于这类约東有能够使得零碎扩展变得很坚苦。
相关文章: