Zbadaj punkty kontrolne i przetwarzanie równoległe

Zakończone

Przepływy pracy umożliwiają implementowanie złożonej logiki w kodzie. Dwie funkcje dostępne w przepływach pracy to punkty kontrolne i przetwarzanie równoległe.

Punktów kontrolnych

punkt kontrolny to migawka bieżącego stanu przepływu pracy. Punkty kontrolne zawierają bieżącą wartość zmiennych i wszystkie dane wyjściowe wygenerowane do tego punktu. Aby uzyskać więcej informacji na temat punktu kontrolnego, przeczytaj stronę internetową punktu kontrolnego .

Jeśli przepływ pracy kończy się błędem lub jest zawieszony, przy następnym uruchomieniu rozpocznie się od ostatniego punktu kontrolnego zamiast na początku przepływu pracy. Punkt kontrolny w przepływie pracy można ustawić przy użyciu działania Checkpoint-Workflow.

Przykład punktu kontrolnego

Jeśli na przykład wyjątek wystąpi po działaniu Activity2, przepływ pracy zakończy się w poniższym przykładowym kodzie. Po ponownym uruchomieniu przepływu pracy rozpoczyna się od działania Activity2 bezpośrednio po ostatnim zestawie punktów kontrolnych:

    <Activity1>
        Checkpoint-Workflow
            <Activity2>
                <Exception>
            <Activity3>

Przetwarzanie równoległe

Blok skryptu ma wiele poleceń, które są uruchamiane współbieżnie (lub równolegle) zamiast sekwencyjnie, tak jak w przypadku typowego skryptu. Jest to nazywane przetwarzaniem równoległym. Więcej informacji na temat przetwarzania równoległego jest dostępnych na stronie internetowej Przetwarzanie równoległe .

Podstawowy przykład równoległy

W poniższym przykładzie dwie maszyny wirtualne (vm0 i vm1) zostaną uruchomione współbieżnie, a maszyna vm2 zostanie uruchomiona dopiero po uruchomieniu maszyn wirtualnych vm0 i vm1 :

    Parallel
    {
        Start-AzureRmVM -Name $vm0 -ResourceGroupName $rg
        Start-AzureRmVM -Name $vm1 -ResourceGroupName $rg
    }

    Start-AzureRmVM -Name $vm2 -ResourceGroupName $rg

Zaawansowane przetwarzanie równoległe

Dodatkowe konstrukcje przetwarzania równoległego wprowadzają dodatkowe opcje:

ForEach -Parallel

Można użyć konstrukcji ForEach -Parallel, aby współbieżnie przetwarzać polecenia dla każdego elementu w kolekcji. Elementy w kolekcji są przetwarzane równolegle, podczas gdy polecenia w bloku skryptu są uruchamiane sekwencyjnie.

W poniższym przykładzie Activity1 rozpoczyna się jednocześnie dla wszystkich elementów w kolekcji. Dla każdego elementu Activity2 rozpoczyna się po zakończeniu Activity1. Activity3 jest uruchamiana dopiero po zakończeniu wszystkich elementów Activity1 i Activity2.

Parametr limit przepustnicy

Parametr ThrottleLimit ogranicza równoległość. Zbyt wysoka ThrottleLimit może powodować problemy. Idealna wartość parametru ThrottleLimit zależy od kilku czynników środowiskowych. Spróbuj rozpocząć od niskiej wartości ThrottleLimit, a następnie stopniowo zwiększaj wartość, aż znajdziesz taką, która działa w Twoich specyficznych potrzebach.

ForEach -Parallel -ThrottleLimit 10 ($<item> in $<collection>)
{
    <Activity1>
    <Activity2>
}
<Activity3>

Przykład przetwarzania równoległego w świecie rzeczywistym

Praktyczny przykład przetwarzania równoległego może być podobny do następującego kodu: komunikat jest wyświetlany dla każdego pliku po skopiowaniu. Tylko po skopiowaniu wszystkich plików jest wyświetlany komunikat ukończenia:

    Workflow Copy-Files
    {
        $files = @("C:\LocalPath\File1.txt","C:\LocalPath\File2.txt","C:\LocalPath\File3.txt")

        ForEach -Parallel -ThrottleLimit 10 ($File in $Files)
        {
            Copy-Item -Path $File -Destination \\NetworkPath
            Write-Output "$File copied."
        }

        Write-Output "All files copied."
    }