日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

高性能最终一致性框架Ray之基本概念原理

發(fā)布時(shí)間:2023/12/4 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能最终一致性框架Ray之基本概念原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Actor介紹

Actor是一種并發(fā)模型,是共享內(nèi)存并發(fā)模型的替代方案。

共享內(nèi)存模型的缺點(diǎn):
  • 共享內(nèi)存模型使用各種各樣的鎖來(lái)解決狀態(tài)競(jìng)爭(zhēng)問(wèn)題,性能低下且讓編碼變得復(fù)雜和容易出錯(cuò)。

  • 共享內(nèi)存受限于單節(jié)點(diǎn)的服務(wù)器資源限制。

  • Actor模型的優(yōu)點(diǎn):
  • 線程之間以消息進(jìn)行通信,消息按順序單線程處理,不存在狀態(tài)競(jìng)爭(zhēng)。

  • 以消息方式通信,可以方便的組建集群。

  • 把State和Behavior綁定,能更好的控制狀態(tài)。

  • 名詞解釋:

    Mailbox:可以理解為先入先出隊(duì)列,負(fù)責(zé)接收和緩存送達(dá)的消息。

    State:狀態(tài)信息,比如用戶的賬戶余額信息。

    Behavior:負(fù)責(zé)按順序處理Mailbox中的消息,比如扣款消息、到賬消息,查詢余額消息等。

    二、Orleans介紹

    Orleans是.Net基金會(huì)維護(hù)的一個(gè)Actor跨平臺(tái)開(kāi)源框架,獨(dú)創(chuàng)Virtual Actor概念,支持分布式集群。

    項(xiàng)目地址:http://dotnet.github.io/orleans/

    有以下優(yōu)點(diǎn):
  • 以對(duì)象方式訪問(wèn)Actor,符合面向?qū)ο蟮氖褂昧?xí)慣。

  • 提出Virtual Actor概念,可以通過(guò)ID訪問(wèn)細(xì)粒度的Actor,能承載數(shù)千萬(wàn)的Actor對(duì)象。

  • 支持Stateful,能替代緩存層來(lái)對(duì)內(nèi)存狀態(tài)進(jìn)行更精確的控制,減少數(shù)據(jù)庫(kù)的壓力。

  • 高性能,單個(gè)Actor能支持10萬(wàn)+的QPS。

  • 激活透明,Actor對(duì)訪問(wèn)者是永久存在的,但也提供完整的生命周期控制,拓展方便。

  • 原生支持集群,但Actor位置透明,訪問(wèn)者不需要關(guān)注Actor運(yùn)行在那個(gè)節(jié)點(diǎn),集群會(huì)根據(jù)節(jié)點(diǎn)情況進(jìn)行負(fù)載調(diào)度。

  • 提供了多種集群支持,集群部署非常方便,支持AdoNet,Zookeeper,K8s,SF等。

  • 提供了完整的單元測(cè)試解決方案,方便進(jìn)行單元測(cè)試。

  • 提供了完善的監(jiān)控工具,能夠詳細(xì)的監(jiān)測(cè)各種指標(biāo)。

  • 基于.net core,支持各種平臺(tái)。

  • 名詞解釋:

    Silo:集群中的一個(gè)節(jié)點(diǎn),負(fù)責(zé)維護(hù)當(dāng)前節(jié)點(diǎn)的Grains。

    SiloGateway:每個(gè)節(jié)點(diǎn)都存在,負(fù)責(zé)維護(hù)集群狀態(tài)和轉(zhuǎn)發(fā)請(qǐng)求。

    Grain:相當(dāng)于Actor,通過(guò)ID+Interface來(lái)識(shí)別。

    Client:用來(lái)訪問(wèn)集群中的Grain的客戶端工具。

    三、Ray介紹

    Ray是基于Actor模型構(gòu)建的基于事件朔源的分布式最終一致性高性能框架,把傳統(tǒng)的復(fù)雜的分布式事務(wù)拆分為由事件驅(qū)動(dòng)的線性處理流程的一種方式,性能和吞吐更高,響應(yīng)更快。

    Ray提供了狀態(tài)維護(hù)、事件發(fā)布/訂閱、冪等性控制、分布式事務(wù)等模塊,并內(nèi)置了分布式ID、分布式鎖、分布式權(quán)重鎖等服務(wù)。

    Ray提供卓越的性能,單個(gè)Actor能達(dá)到20000/s的事件。

    項(xiàng)目地址:https://github.com/RayTale/Ray

    名詞解釋:

  • 狀態(tài)(State):內(nèi)存聚合數(shù)據(jù)。

  • 事件(Event):狀態(tài)變化的信息。

  • EventBus:提供事件發(fā)送和事件消費(fèi)訂閱。

  • 冪等性:保證事件送達(dá)多次不會(huì)導(dǎo)致?tīng)顟B(tài)異常,例如上圖的A的轉(zhuǎn)賬事件多次送達(dá)B,但是B只會(huì)增加一次余額。

  • Ray的最終一致性轉(zhuǎn)賬原理

    A用戶調(diào)用A賬戶Actor的轉(zhuǎn)賬方法進(jìn)行轉(zhuǎn)賬,A賬戶Actor根據(jù)內(nèi)存狀態(tài)進(jìn)行余額校驗(yàn),如果余額不足,則直接返回失敗原因,如果校驗(yàn)成功則產(chǎn)生一個(gè)轉(zhuǎn)賬Event(記錄目標(biāo)賬戶Id、轉(zhuǎn)賬金額、剩余余額)并持久化,然后修改內(nèi)存狀態(tài)和發(fā)送到EventBus。EventBus一個(gè)訂閱者根據(jù)事件信息修改讀庫(kù)中A賬戶的余額和往賬單表中插入一條轉(zhuǎn)賬賬單,另外一個(gè)訂閱者根據(jù)事件信息調(diào)用B賬戶Actor的到賬方法,B賬戶Actor會(huì)產(chǎn)生一個(gè)到賬Event(記錄到賬金額、FromId、剩余余額)并持久化,然后修改內(nèi)存狀態(tài)和發(fā)送到EventBus,EventBus的一個(gè)訂閱者根據(jù)事件信息修改讀庫(kù)中B賬戶的余額和往賬單表中插入一條到賬賬單。

    原文鏈接:https://www.cnblogs.com/gengzhe/p/ray_actor.html


    .NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的高性能最终一致性框架Ray之基本概念原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。