發表文章

分散式系統 Distributed Systems_Time, clocks, and ordering of events_Week4筆記_part2.Lamport跟Vector Clocks計算

圖片
做個課堂筆記紀錄,因為坐在教室後面會照到前面同學後腦杓。歹勢.... 分散式系統中的 Lamport Clock 與 Vector Clock Lamport Clock(Lamport 時鐘) 用途: 用來在分散式系統中決定事件(Event)的先後順序,避免物理時鐘不同步所造成的混亂。 結構與運作: 每個節點都維護一個整數計數器(Lamport Clock)。 當本地有事件發生時,計數器加一。 發送訊息時,附加目前的 Lamport Clock 值。 接收訊息時,將本地計數器設為收到時鐘值與本地時鐘的最大值後再加一。 Vector Clock(向量時鐘) 用途: 用來追蹤每個節點彼此之間的事件先後關係,比 Lamport Clock 更進一步,可以判斷事件是否真正平行(concurrent)。 結構與運作: 每個節點都維護一個長度為 N(節點數)的向量,每個元素分別表示此節點對自己和其他節點事件次數的看法。 本地事件發生時,將自己對應的一格加一。 發送訊息時,附上自己的 Vector Clock(整個向量)。 接收訊息時,將收到的 Vector Clock 與本地 Vector Clock 逐格比較,大者為新值,再把自己格加一。 總結 Lamport clock 只能粗略判斷時間順序(數字比大小),但無法區分平行事件或真實先後。 Vector clock 若 v1 < v2(全小於),就可以明確判定 v1 happens-before v2;若無法比較,就是平行事件。 第10題.一起修課的班代幫忙上台作答-Lamport Clock 給出四個節點 (A、B、C、D) 之間的訊息交換(m1 ~ m9),要求在每個訊息送出或接收事件標記 Lamport 時間戳(timestamp)。 初始值:每個節點的 Lamport Clock 都是 0。 送出訊息:本地 Lamport Clock +1,送出訊息並將其值作為 timestamp 附加在消息上。 接收訊息:收到訊息後,把本地 Lamport Clock 更新為「max(本地, 收到的) + 1」。 節點 A 發送 m1、m2、m3,分別遞增自己的 Lamport Clock。 B, C, D 分別在收到訊息後按規則更新 Lamport Clock(最大值+1)。 每遇到接收/發送動作,都照規則隨時更新時間。 ...

分散式系統 Distributed Systems_Chapter 02: Architectures_Week2筆記_補充CHORD跟DHT

圖片
Chord 演算法 提出單位:麻省理工學院 (MIT)  核心概念:The Chord protocol supports just one operation: given a key, it maps the key onto a node. 採用 雜湊法 (Hashing) 將資料分配到對應的節點 透過這種方式,可以快速定位並搜尋資源所在位置 屬於結構化的P2P查詢 (Structured Peer-to-Peer Lookup) 演算法 用環狀架構 (Ring Topology) 來組織節點 Chord選擇SHA-1作為雜湊函數,SHA-1會產生一個2^160 的空間 每項為一個16位元組(160bit)的大整數。 特色 效能表現:查詢資源時,節點在空間與時間複雜度上皆為 O(log N) 具有完全分散式、負載平衡、可用性及可擴展性好、命名方式靈活等特點。 分散式雜湊表(Distributed Hashing Table, DHT) 拓樸建立方式 每個新加入的節點,會將其 IP 位址 經由 雜湊函數 (Hashing function) 轉換為一個 節點代碼 (Node ID),這些節點代碼會映射到一個 邏輯代碼環 (Identifier Circle) 上。 透過此環狀結構,節點之間能夠進行高效率的查詢與資源定位。 缺點與面臨的挑戰 當鄰近節點發生變動時,需要進行大量通訊來更新與維護鄰近節點資訊。 在 Grid Computing 環境中,節點變動頻繁,這會造成額外的網路負擔。 Ref: Distributed Hash Tables https://courses.cs.washington.edu/courses/cse550/17au/notes/lect14.pdf https://www.cs.princeton.edu/courses/archive/fall22/cos418/docs/L9-dht-chord.pdf Distributed Hash Tables:An Overview http://www.cs.cmu.edu/~ashu/talks/DHT.pdf Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications https...

分散式系統 Distributed Systems_Models of distributed systems_Week3筆記_CH2.拜占庭容錯2種經典解套方式&Availability

圖片
https://physics.stackexchange.com/questions/402591/quantum-solution-to-the-two-army-problem 兩軍問題(Two Generals' Problem) https://www.youtube.com/watch?v=IP-rGJKSZ3s 兩支軍隊由不同將軍領導,準備進攻一座堅固的城市。軍隊在城市附近的兩個山谷紮營。由於有另一個山谷將兩山隔開,兩名將軍只能透過派信使穿越山谷通信,但這山谷由城市護衛佔領,有可能俘虜途徑山谷傳遞消息的任何信使。 雖然兩軍已約定同時進攻,但尚未約定進攻時間。要順利攻擊,兩軍必須同時進攻。如果同一時間只有一支軍隊進攻就會戰敗,因此兩名將軍須約定攻擊時間,並確保對手知道自己同意了進攻計畫。 拜占庭將軍問題(The Byzantine generals problem) 由矽谷科學家Robert Shostak於1978年提出的情境難題。 古代某個大城市「拜占庭」正經歷一場戰爭,四位將軍散落在城內各處,必須在短時間內決定進攻還是撤退。條件在於,不論進攻或撤退,都必須四位將軍一致同意,才能保證最後勝利。 四位將軍決定各自寫信予其他三人,告知相關決定。當每位將軍都寄出信息,又同時收到其他三名將軍的來信後,就會知道決定是否一致,到底是進攻還是撤退。 https://www.youtube.com/watch?v=-D8aXZvzzww https://www.youtube.com/watch?v=gJqmOf4mFEU 背後探討的延伸問題 如何防止其中一位將軍叛變? 又可能其中一位將軍已被暗殺,寄信的其實是間諜? 此外,寄出信件後也可能被敵方截取並篡改扭曲事實的內容,從而阻止四位將軍達成共識? 拜占庭容錯 第一種解套方式.Oral Messages 安排一個Leader發送進攻/撤退信號給另外三位將軍 情境1.三位將軍中剛好有一個判將,試圖分別給另外兩位將軍不同錯誤訊息。 然而引入了指揮官,因此將軍A、B各自所收到的進攻比撤退比例均為2:1,兩人皆發起進攻。 進攻就成功。 情境2.引入的指揮官是叛徒,其中一位傳入進攻訊息。 然而三位將軍都相互傳遞沒被竄改過的指令訊息,因此三人收到的撤退比進攻比例都是2:1。 撤退就成功。 第二種解套方式.消息簽名Sign...

分散式系統 Distributed Systems_Chapter 02: Architectures_Week2筆記

圖片
軟體架構 (Software architectures) : 說明各種軟體元件是如何組織的,以及它們應該如何互動。 分散式系統中軟體架構目標 :  透過提供中介層 (middleware layer),將應用程式與底層平台分離。 系統架構(System Architecture) : 決定軟體元件、它們之間互動方式,以及它們的部署位置,最終形成一具體的軟體架構實例。 Architectural styles (replaceable) components with well-defined interfaces 可替換的元件之間透過明確定義的介面彼此互動 the way that components are connected to each other 元件之間的連接方式 the data exchanged between components 元件間交換的資料 how these components and connectors are jointly configured into a system. 系統的整體配置,元件與 連接器 如何組合成一個完整的系統。 連接器 (Connector): 是一種機制,用來調節元件之間的通訊 (communication)、協調 (coordination)、合作 (cooperation)。 例如:用於遠端程序呼叫(RPC)、訊息傳遞(messaging)或資料串流(streaming)的機制。 Layered architecture Pure layered org : Only downcalls to the next lower layer are made. mixed layered org : take layer n-1. There’s an app called A. this will invoke an OS library that’s available in layer n-3. AS WELL as n-3, A will call layer n-2,wihich holds a maths library . maths library itself relies on OS library in layer n-3! So n-2 has to call n-...

分散式系統 Distributed Systems_Chapter 01: Introduction_Week1筆記_part3

圖片
Three types of distributed systems High performance distributed computing systems(高效能分散式計算系統) Ex:Parallel computing Distributed information systems(分散式資訊系統) Distributed systems for pervasive computing(普及運算的分散式系統) Parallel computing Multiprocessor(多處理器系統) 在同一台電腦中,安裝多個處理器(CPU),共享同一個記憶體與 I/O 系統。 Multicore(多核心處理器) 屬於「Private memory架構」,單一處理器晶片內含多個運算核心,每個核心能獨立執行指令。 Multicomputer(多電腦系統) 屬於「分散式記憶體架構」,多台獨立電腦(節點)透過網路連接,協同完成任務。 Grid Computing(網格運算)架構 為了促進協作,運算通常使用虛擬組織(virtual organizations)。可理解為是一組使用者ID的集合,用來進行資源分配的授權。 特徵 異質性(Heterogeneous):節點來自不同硬體、軟體平台。 跨組織(Dispersed across several organizations):資源分布於多個管理領域。 廣域網路(Wide-area network):容易跨越 WAN 進行協作。 Grid Computing 的4層架構各自組成(由下Laryer1至上Layer4) L1.Fabric:Provides interfaces to local resources 提供本地資源的介面 L2.Connectivity:Communication/transaction protocols 通訊與交易協定 L2.Resource: Manages a single resource 管理單一資源 L3.Collective:Handles access to multiple resources or protocols 提供資源發現(discovery)、排程(scheduling)、複製(replication)等功能 L4.Application: Contains...

分散式系統 Distributed Systems_Chapter 01: Introduction_Week1筆記_part2

圖片
就Policies(政策) 或 Mechanisms(技術機制) 各自實施作法比較 就Policies(政策)  我們需要對客戶端快取(client-cached)資料維持何種一致性層級?(What level of consistency) 我們允許下載的程式碼執行哪些操作?(Which operations do we allow downloaded code) 在面對不同頻寬時,我們會調整哪些服務品質(QoS)需求?(Which QoS requirements) 我們要求通訊具備何種等級的保密性?(What level of secrecy) 就Mechanisms(技術機制) Allow (dynamic) setting of caching policies 允許(動態)設定快取政策 Support different levels of trust for mobile code Provide adjustable Quality of Service (QoS) parameters per data stream 針對每個資料流提供可調整的服務品質(QoS)參數 Offer different encryption algorithms 策略與機制越嚴格的話,我們就越需要確保適當的機制,也因此會進而導致管理上與配置上的參數會更複雜。硬編碼(Hard coding)策略通常以降低靈活性的代價來簡化管理並降低複雜性。 Scale in distributed systems (怎麼定義系統具有可擴展性?) 至少有三個面向的可擴展性需要考慮: 使用者數量與/或程序數量(Size scalability) 系統能否隨著使用者或程序數量的增加而持續有效運作。 節點之間的最大距離(Geographical scalability) 系統能否在節點分布於更廣泛的地理範圍時,仍維持合理的效能與一致性。 管理領域的數量(Administrative scalability) 系統能否跨越多個獨立的管理領域(如不同組織或機構)而仍能協同運作。 需要明確說明系統在 規模、地理分布、管理領域 三個層面上如何應對挑戰。 絕大部分系統僅在「規模可擴展性(size scalability)」上有所考量,也就是隨著使用者或程序數量的增加,系統能否持續運作。...

分散式系統 Distributed Systems_Chapter 01: Introduction_Week1筆記_part1

圖片
Distributed System A distributed system is a collection of autonomous (自主性) computing elements that appears to its users as a single coherent system . Distributed Systems: Principles and Paradigms 一書中的定義 A distributed system is a collection of independent computers that appears to its users as a single coherent system. 由多個彼此獨立運作的節點(可能是硬體裝置或軟體程序)所組成的整體。這些節點透過協作來對外呈現為一個單一、一致的系統。 自主節點的集合且彼此要能相互協作才能組成分散式系統,讓User 用起來 或其他應用程式存取、就像是單體。 補充: 自主運算元素(Autonomous computing elements),也稱為節點(nodes),可以是硬體裝置或軟體程序。 單一一致的系統(Single coherent system):使用者或應用程式將其視為一個整體的單一系統。因此,節點之間必須進行協作;若缺乏協作,則無法構成分散式系統。 分散式系統中常見問題(Collection of autonomous nodes) Problem1.同步與協調問題(synchronization and coordination problems) 由於每個節點皆為自主運作,因此各自維持獨立的時間觀(own notion of time),系統中並不存在統一的全域時鐘(global clock)。這種特性引發了分散式系統中最根本的同步與協調問題。 Problem2.如何管理群組成員資格、如何確認你確實正在與一位已授權的(非)成員進行通訊? 開放式群組(Open group):任何人都可以加入並向其他人傳送訊息。 封閉式群組(Closed group):只有群組成員之間才能互相通訊,並且需要透過特定的加入與退出流程。 覆疊網路(Overlay network) 集合中的每個節點 僅與系統內的其他節點(即其鄰居)進行通訊 。鄰居的集合可能是動態變化的,甚至...

分散式系統報告參考資料

https://twiki.di.uniroma1.it/pub/Reti_elab/MZ/WebHome/Lezione_P2P-2.pdf https://www.kth.se/mwg-internal/de5fs23hu73ds/progress?id=Ve8FdOgvYxAWjFnLtpMJiEXbD4dLcRHhYDoiN98eH0E,&dl https://www.wikiwand.com/zh/articles/Vorbis https://news.post76.hk/2016/04/%E4%B8%B2%E6%B5%81%E9%9F%B3%E6%A8%82%E6%8A%80%E8%A1%93%E7%9F%A5%E5%A4%9Ad/

Spotify – Large Scale, Low Latency, P2P Music-on-Demand Streaming

Spotify – Large Scale, Low Latency, P2P Music-on-Demand Streaming https://www.csc.kth.se/~gkreitz/spotify-p2p10/spotify-p2p10.pdf https://ieeexplore.ieee.org/document/5569963 Peer-to-peer streaming of media content https://patents.google.com/patent/US8316146B2/en former Spotify CTO-Andreas Ehn https://marketrealist.com/tech-comm-services/andreas-ehn-spotify-now/ Gunnar Kreitz https://www.csc.kth.se/~gkreitz/ Ludvig Strigeus https://torrentfreak.com/utorrent-inventor-wins-prestigious-technology-innovation-award-221114/ Spotify 於 2008 年 10 月推出,截至2010(論文發表時間)於當時,已在六個歐洲國家擁有超過 700 萬名使用者。 服務提供兩種版本: 免費版(含廣告) 每月付費的高級版:高級版提供一些額外功能,例如以更高位元率串流音樂,以及同步播放清單以供離線使用。 兩種版本皆可無限制地串流音樂,而大多數使用者使用的是免費版。 Spotify 客戶端的一大特色是其低播放延遲。播放一首曲目的中位延遲時間為 265 毫秒。此服務並非根據網頁,而是使用專屬的客戶端與通訊協定。 市面上有諸多「隨選音樂串流服務」(on-demand music streaming services),在當時除Spotify之外,幾乎都是網頁型應用。通常使用 Adobe Flash 或網頁瀏覽器外掛程式進行串流。此外,它們都是純粹的Clinet-Server架構,並未採用P2P技術。在隨選串流領域中,點對點技術的應用在視訊隨選服務中更為普遍。 提供隨選串流的服務與檔案分享應用程式有許多共通之處。 例如,Spotify 用於尋找其他用戶的機制與 BitTorrent...

外匯(Forex / Foreign Exchange)術語知識

圖片
  在進行MetaTrader API界接封裝時,時常看到SDK官方文件諸多陌生的專業術語。 就剛好有機會做一個筆記。 https://www.forex.com/en-us/forex-trading/ 外匯(Forex / Foreign Exchange)術語知識 何謂外匯市場(Forex Market)? 是全球最大的金融市場每天交易量超過7萬億美元,不像股票有統一集中式交易所,是一個分散式網路系統。是一個24小時不停止的全球分散式交易市場,非單一交易所,比美股市場更大。 透過各大銀行、經紀商、金融機構在全球24小時不斷搓合報價並成交。 透過外匯交易賺錢的本質就是匯差,分兩種情況: 動態外匯(交易面):去跟其他外面國家做交易產生匯率的變化差異,指進出口、投資、避險等行為造成匯率變動與交易。。 靜態外匯(貨幣面):單指國外貨幣,例如「美元、日圓、歐元」。。 外匯跟股票最大差異? 除了不像股票一樣有固定開盤交易時段,周一至周五24小時都能進場。 外匯市場波動節奏會比股票來的更大。 另外股票通常是單向交易,要等漲後賣掉才有賺。有別於股票,外匯交易屬於雙向交易,漲也可賺、跌也可賺只要方向操作合理謹慎。 為何24小時開放? 因為外匯屬於全球性的交易市場,主要由亞洲、歐洲、美洲三大市場組成。 因為不同時區的國家輪流開盤,因此外匯市場從周一早上到周六凌晨一直持續運作。交易市場輪動不間斷交易。 亞洲盤有東京市場、悉尼市場在早上開市 歐洲盤倫敦市場在下午3點開市 美洲盤紐約市場在晚上8點多開市 何時做交易更好?(參考學習,非本人絕對建議習自網路) 若傾向做短線,最好是在市場較活躍比較有波動的時候,流動性較大。 比方下午3點歐洲盤開始發動時候,此時歐洲經濟數據也正在開始發布。適合交易歐元、英鎊等。最主要行情晚上美洲盤,也就是晚上8點多。美金、黃金、比特幣、原油在這時間點波動也很大。此時也會有很多經濟數據公布,像是CPI、非農(非農就業數據)等指標都會讓行情產生上下波動。 通常周一上午不建議交易,因為市場才剛剛開盤,流動性較低方向還不明朗。 還有週五快閉市時候,因為此時市場資金已經開始減少,有時可能出現異常波動。 更不建議在重大數據發布的前後做交易,波動十分劇烈容易打到止損。 誰在交易外匯? 參與者分五大類 1.各國中央銀行,比如:美國美聯儲、歐洲央行、日本央行...等等...