>  기사  >  백엔드 개발  >  Docker가 Go 언어를 사용하는 이유

Docker가 Go 언어를 사용하는 이유

青灯夜游
青灯夜游원래의
2021-03-15 11:16:413125검색

이유: 1. 주류 서비스는 Unix/Linux 운영 체제를 사용하며 go 언어는 제3자에 대한 의존도가 거의 없습니다. 이런 식으로 go 언어를 사용하여 개발된 Docker는 기본적으로 Unix/Linux 운영 체제를 사용하는 대부분의 서버에서 완벽하게 실행될 수 있습니다. 시스템이 우수하게 설치되었습니다. 2. Go 언어는 간단한 배포, 좋은 동시성, 좋은 실행 성능 등 많은 장점을 가지고 있습니다.

Docker가 Go 언어를 사용하는 이유

이 튜토리얼의 운영 환경: windows10 시스템, GO 1.18, thinkpad t480 컴퓨터.

Docker는 개발자가 애플리케이션 및 종속성 패키지를 휴대용 컨테이너에 패키지한 다음 널리 사용되는 Linux 시스템 또는 Windows 시스템에 게시할 수 있는 오픈 소스 애플리케이션 컨테이너 엔진입니다. 샌드박스 메커니즘이며 이들 사이에는 인터페이스가 없습니다.

Docker는 왜 Go 언어를 사용하나요?

우선, 현재 주류 서비스는 모두 Unix/Linux 운영 체제를 사용하며 앞서 설명한 것처럼 Golang은 제3자(glibc만 해당)에 대한 의존도가 거의 없다는 점이 한계이자 장점입니다. 왜냐하면 이 경우 Golang을 사용하여 개발된 Docker는 기본적으로 Unix/Linux 운영 체제가 설치된 대부분의 서버에서 완벽하게 실행될 수 있기 때문입니다.

두 번째로 Golang 개발에는 다음과 같은 많은 장점이 있습니다.

1. 간단한 배포.

Go 컴파일은 glibc를 제외하고 다른 외부 종속성이 없는 정적 실행 파일을 생성합니다. 이로 인해 배포가 매우 편리해집니다. 대상 컴퓨터에는 기본 시스템과 필요한 관리 및 모니터링 도구만 필요하며, 애플리케이션에 필요한 다양한 패키지 및 라이브러리의 종속성에 대해 걱정할 필요가 없어 유지 관리 부담이 크게 줄어듭니다. 이것은 Python과 크게 다릅니다. 역사적인 이유로 인해 Python의 배포 도구 생태계는 [setuptools, distutils, pip, buildout의 다양한 적용 사례 및 호환성 문제 등] 상당히 혼란스럽습니다. 공식 PyPI 소스에는 문제가 있는 경우가 많으며 비공개 이미지를 구축해야 하며 이 이미지를 유지하는 데 많은 시간과 에너지가 소요됩니다.

2. 좋은 동시성.

고루틴과 채널을 사용하면 동시성이 높은 서버 측 소프트웨어를 매우 쉽게 작성할 수 있으며, 많은 경우 잠금 메커니즘과 이로 인해 발생하는 다양한 문제를 고려할 필요가 없습니다. 단일 Go 애플리케이션은 여러 CPU 코어를 효과적으로 활용하고 병렬 실행에서도 우수한 성능을 발휘할 수 있습니다. 이것은 또한 Python과는 다른 세계입니다. 다중 스레드 및 다중 프로세스 서버 프로그램은 작성하기가 간단하지 않으며 전역 잠금 GIL로 인해 다중 스레드 Python 프로그램은 다중 코어를 효과적으로 활용할 수 없으며 다중 프로세스 방식으로만 배포할 수 있습니다. 표준 라이브러리 패키지는 또한 모니터링 및 관리에 많은 어려움을 안겨줄 것입니다. [우리가 프로세스를 관리하는 데 사용하는 감독자는 포크를 잘 지원하지 않습니다.] Python 애플리케이션을 배포할 때 일반적으로 CPU 코어당 하나의 애플리케이션이 배포되므로 많은 리소스 낭비가 발생합니다. 예를 들어 Python 애플리케이션이 시작 후 100MB의 메모리를 차지해야 하고 서버에 32개의 CPU 코어가 있다고 가정하면 시스템에 하나의 코어가 남아 있는 경우 31개의 애플리케이션 복사본을 실행하면 3GB의 메모리 리소스가 낭비됩니다.

3. 좋은 언어 디자인.

학술적인 관점에서 볼 때 Go 언어는 실제로 매우 평범하고 많은 고급 언어 기능을 지원하지 않습니다. 그러나 엔지니어링 관점에서 볼 때 Go의 디자인은 매우 뛰어납니다. 사양은 프로그래머가 사용할 수 있을 만큼 간단하고 유연합니다. 다른 언어 기초와 함께 빠르게 시작할 수 있습니다. 더 중요한 것은 Go에는 팀 협업의 일관성이 크게 향상되는 완전한 도구 체인이 함께 제공된다는 것입니다. 예를 들어, gofmt는 Go 코드의 형식을 자동으로 지정하므로 다른 사람이 작성한 코드의 형식 스타일이 일관되지 않는 문제를 대부분 제거합니다. 아카이브를 편집할 때 gofmt를 자동으로 실행하도록 편집기를 구성하면 코드를 작성할 때 원하는 대로 배치할 수 있고 아카이브할 때 자동으로 올바른 유형의 코드가 됩니다. 또한 gofix나 govet과 같은 매우 유용한 도구도 있습니다.

4. 실행 성능이 좋습니다.

C와 Java만큼 좋지는 않지만 일반적으로 기본 Python 애플리케이션보다 훨씬 높으며 일부 병목 현상이 있는 비즈니스를 작성하는 데 적합합니다. 메모리 사용량도 매우 경제적입니다.

추천 학습: Golang 튜토리얼

위 내용은 Docker가 Go 언어를 사용하는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.