저자가 가장 이해하기 쉬운 정의는 동시에 실행되는 여러 프로세스이며, 각 프로세스는 서로 관련된 일련의 프로세스 단계의 일부입니다.
비유는 다음과 같습니다. 백업할 데이터베이스가 많은 일상적인 데이터베이스 자동 백업의 프로세스 흐름을 상상해 보세요. 백업 자체에는 쉘 스크립트가 아닌 go 프로그램을 사용합니다. 대략적으로 수행될 일련의 프로세스 단계는 다음과 같습니다.
아. 데이터베이스에서 덤프 작업을 수행하면 출력은 폴더에 저장된 많은 파일 형식입니다.
B. 그런 다음 덤프 파일은 .zip 또는 .tar .gz 형식(예:)으로 보관됩니다
C. 아카이브 파일은 AWS S3 등의 백업 서버로 전송됩니다.
위의 경우를 염두에 두고 여러 데이터베이스에 대한 백업 과정을 병렬로 수행하는 것이 성능 측면에서 더 나을 수도 있습니다. 저자도 이에 동의합니다.
그리고 세 가지 프로세스(A, B, C)를 동시 프로세스로 만들어 각 데이터베이스 백업 프로세스 A, B, C에 대한 프로세스를 동시에 실행하면 I/O가 더 효율적이 되십시오. 나중에 프로세스 A, B, C 사이에서 실행은 순차적으로 유지됩니다(순차적으로 실행해야 하기 때문입니다. 예를 들어 B가 먼저 실행되고 A가 다음에 실행되는 경우는 허용되지 않습니다). 그러나 프로세스 A의 실행을 담당할 고루틴은 완료되었습니다. 실행 B(프로세스 A의 다음 단계)와 다른 프로세스(다른 데이터베이스)의 실행을 계속할 수 있습니다. 병렬로. 따라서 A를 처리하는 고루틴은 유휴 상태가 되지 않습니다.
다음 시각화에 주목해주세요. 열은 동시에 실행되는 고루틴을 나타냅니다. 하지만 세 개의 고루틴은 일련의 프로세스이므로 프로세스는 항상 순차적이고 행은 시퀀스를 나타냅니다.
Go에서는 일반적으로 실행되는 고루틴 형태의 프로세스가 동시적이지만 흐름에서는 순차적이어야 하므로 이를 파이프라인이라고 부르므로 지금은 파이프라인 A가 프로세스의 고루틴이라고 가정하겠습니다. A, 파이프라인 B는 고루틴 B 등입니다.
표의 이해를 돕기 위해 순차적 설명을 따라주세요.
이 예에서는 파이프라인 A에 고루틴이 하나만 있고, 파이프라인 B에도 고루틴이 하나 있고, 파이프라인 C에도 있다고 가정합니다. 그러나 실제로 구현에서는 각 파이프라인에 대해 많은 고루틴이 있을 수 있습니다(파이프라인 A에는 많은 고루틴, 파이프라인 B에 대한 많은 고루틴, 파이프라인 C에 대한 많은 고루틴).
제 글이 설명이 되기를 바랍니다. 확실하지 않더라도 LAN 소스로 인터넷이 열려있습니다.
위 내용은 파이프라인 개념의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!