内容简介:分散式系統架構的事件驅動模式不外乎本文整理 Step Function 的學習筆記。
分散式系統架構的事件驅動模式不外乎 同步 (Sync)
、與 非同步 (Async)
兩大類。同步指的是發出請求的客戶端,會等待處理端的回覆;非同步則是客戶端發出請求後,不會等待服務端回覆。非同步作業架構需要有以下幾種基礎架構:
-
訊息仲介 (Message Broker)
、訊息佇列 (Message Queue)
、或者Pub/Sub
:儲存處理的訊息資料,是大量非同步處理的核心架構,著名的實踐有 SQS、RabbitMQ、Kafka、Pub/Sub … -
工作流程 (Workflow)
: 主要的流程控制器、輸出輸入處理、異常處理、執行單元 … 等 -
批次工作 (BatchJob)
:負責執行運算的運算單元。 -
資源分配策略
: 為了讓資源更有效地利用,或者滿足一些特定的運算需求 (例如 GPU、I/O Bound),所需要的資源分配策略。- 資源調度的實踐有:容器編排器 (Kubernetes)、AWS ECS 的 AWS ECS Task Placement Strategies。
Step Functions
是 AWS 的 工作流程
服務,其核心概念是狀態機。透過狀態機,可以彈性的客製工作流程,同時與其他 AWS 服務整合。
本文整理 Step Function 的學習筆記。
核心概念:狀態機
整理 Step Functions 之前,先用一個例子來說明其核心概念,也就是狀 狀態機 (State Machine)
。主要是整個流程狀態概念有:
-
狀態 (States)
:通常是名詞、形容詞、一句話,重點不是動詞。 -
轉換 (Transition)
:從 狀態A變成狀態B的轉換過程稱為過渡 (transition)
-
開始與結束 (Start / End)
:狀態機本身必須要有起
、訖
為了方便說明,用下面這張圖當例子。這是一個專案管理中 Bug 的工作流程圖。圖源自『 協同合作系統建制與導入 - 以 Redmine 為例 』一文的介紹。
以及過往在實作 Test Framework and Architecture 時,應用到了 Message Queue、Workflow、BatchJob、資源分配策略等,也包含了本文的 Workflow 概念。
下圖是文章的 Bug 工作流程:
- 每個點都代表
狀態 (State)
- 每個狀態的
轉換 (Transition)
代表動作 (Action)
。 - 狀態有
開始
與結束
,這個設計也包含在 Redmine 的狀態定義裡。
基礎功能
Step Functions 最重要的核心概念,這些概念都圍繞在狀態機,其主要核心概念分類如下:
-
程序控制器 (Flow Controller)
:- 循序 (Sequence)
- 平行 (Parallel)
- 條件式判斷 (Condition)
- 時間控制 (Duration、Timeout)
-
出輸入處理 (Input / Output)
:包含輸入的資料處理、輸出的資料結果、Log … 等 -
異常處理 (Error Handling)
:- 執行單元的異常處理器 …
- Retry 機制
-
執行單元 (Resource)
:實際處理的運算單元,主要支援 Activity、AWS Lambda、AWS Services。
Amazon States Language
AWS 為了實作狀態機,以 JSON-based 定義一套 DSL (Domain Specific Language) ,稱為 Amazon States Language (ASL)
。這個資料結構主要在描述多個 State
的類型 (Type)、起始點、結束點、狀態的下一步 (Next)、以及相關的資源 (Resource)。資料結構支援以下 Fields:
- Required:
StartAt States
- Optional:
-
Comment
-
TimeoutSeconds
: 最大可以執行的時間,最大值為一年,回覆狀態為:States.Timeout
,在 CloudWatch metric 增加 ` -
Version
: 預設 1.0
-
底下是基本的結構:
{ "Comment": "Bug Flow", "StartAt": "HelloWorld", "States": { "State1": { "Type": " ... ", }, "State2": { "Type": " ... ", }, } }
以上所述就是小编给大家介绍的《Study Notes - Step Functions》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机程序设计艺术(第1卷)
[美] 唐纳德·E. 克努特 / 苏运霖 / 国防工业出版社 / 2002-9 / 98.00元
7卷本《计算机程序设计艺术》的第1卷以基本的程序设计概念和技术开始,然后专注于信息结构——计算机内部信息的表示、数据元素之间的结构关系以及如何有效地处理它们,给出了对于模拟、数值方法、符号计算、软件和系统设计的初等应用。书中附有大量习题和答案,标明了难易程序及数学概念的使用。 此新版本增加了几十项简单且重要的算法和技术,并对有关数学预备知识作了大量修改以适应现时研究的趋势。一起来看看 《计算机程序设计艺术(第1卷)》 这本书的介绍吧!