커뮤니티 관점: Java에서 Go 블록체인 엔지니어로 전환한 방법
머리말
보조 제목
저는 바이텀체인에 입사하기 전부터 자바 개발을 해오던 중 Go를 처음 봤을 때 조금 주저하기도 했고 면접에 합격하지 못할까 봐 걱정이 되기도 했습니다. 저는 Bytom Chain에 성공적으로 합류했고, 보름 만에 Go를 빠르게 마스터했고 핵심 프로젝트를 개발할 수 있었습니다.
Java 언어는 더 크고 성숙한 프로젝트에서 장점이 있지만 코루틴 처리와 같은 블록체인 개발에는 많은 단점이 있으며 Java 언어 자체는 충분히 유연하지 않습니다. 물론 Go를 선택한 주된 이유는 블록체인의 인기.
보조 제목
블록체인의 대중적인 언어
아래 그림과 같이 더 유명한 프로젝트에서 사용되는 프로그래밍 언어에 대한 약간의 통계를 만드십시오.
Bitcoin 및 Litecoin과 같은 구세대 퍼블릭 체인은 일반적으로 더 많은 C/C++(Go가 아직 시작되지 않은 당시를 살펴보겠습니다)를 사용하고 Ethereum과 같은 차세대 퍼블릭 체인은 얼라이언스 체인인 Hyperledger가 더 많이 사용하기 시작했습니다. Go 언어를 사용하는 것은 물론 Rust의 발전 모멘텀도 매우 강하다는 것을 보았습니다.지난 2년 동안 Polkadot 및 Grin과 같은 많은 공개 체인이 Rust를 사용하기 시작했습니다. 개발용 언어.
보조 제목
Go 언어의 장점
배포하기 쉬운
Go 컴파일은 glibc 이외의 외부 종속성이 없는 정적 실행 파일을 생성합니다. 따라서 배포가 매우 편리해집니다. 기본 시스템과 필요한 관리 및 모니터링 도구만 대상 시스템에 필요하고 애플리케이션에 필요한 다양한 패키지 및 라이브러리의 종속성에 대해 걱정할 필요가 없으므로 유지 관리 부담이 크게 줄어듭니다. . 다른 라이브러리에 의존하지 않고 기계 코드로 직접 컴파일할 수 있습니다.glibc 버전에는 특정 요구 사항이 있으며 파일을 던져 배포가 완료됩니다.
우수한 성능
C 및 Java만큼 좋지는 않지만 일반적으로 기본 Python 응용 프로그램보다 훨씬 높으며 일부 병목 비즈니스를 작성하는 데 적합합니다. 메모리 사용량도 매우 낮습니다.
동시성 및 채널
고루틴과 채널을 사용하면 동시성이 높은 서버 소프트웨어를 쉽게 작성할 수 있으며, 많은 경우 잠금 메커니즘과 이로 인해 발생하는 다양한 문제를 고려할 필요가 없습니다. 단일 Go 애플리케이션도 여러 CPU 코어를 효과적으로 활용할 수 있으며 병렬 실행 성능이 좋습니다.
좋은 언어 디자인
Go는 매우 간단하고 배우기 쉽습니다. 학문적 관점에서 볼 때 Go 언어는 실제로 매우 평범하고 많은 고급 언어 기능을 지원하지 않지만 엔지니어링 관점에서 볼 때 Go의 디자인은 매우 훌륭합니다. 사양이 간단하고 충분히 유연합니다. Go의 단순성 덕분에 모든 Python, Elixir, C++, Scala 또는 Java 개발자는 한 달 안에 효율적인 Go 팀을 구성할 수 있습니다.
표준 라이브러리 및 도구
Go에는 현재 많은 내장 라이브러리가 있으며 특히 네트워크 라이브러리는 매우 강력합니다. 더 중요한 것은 Go가 완전한 도구 체인과 함께 제공되어 팀 협업의 일관성을 크게 향상시킨다는 점입니다. 예를 들어, gofmt는 Go 코드를 자동으로 조판하므로 서로 다른 사람이 작성한 코드의 조판 스타일이 일관되지 않는 문제를 대부분 제거합니다. 아카이브를 편집할 때 자동으로 gofmt를 실행하도록 편집기를 구성하여 코드를 작성할 때 마음대로 코드를 배치할 수 있고 아카이브할 때 자동으로 올바른 조판 코드가 됩니다. 또한 gofix 및 govet과 같은 매우 유용한 도구가 있습니다.
훌륭한 팀
Go 언어의 배후에 있는 서포터는 Google입니다 언어는 다양한 시나리오에서 테스트하기에 충분하며 동시에 창립자는 C 언어의 아버지이기도 하므로 후속 개발 및 혁신을 기대할 수 있습니다.
성공적인 프로젝트 진행
Go 언어는 클라우드 시대에 널리 사용되었으며, 특히 Docker 및 K8s와 같은 킬러 제품의 등장으로 Go 언어는 엔지니어링 세계에서 자리를 잡았습니다.
또한 Go 언어에는 성공적으로 실행되는 많은 소프트웨어가 있습니다.
nsq: Bitly의 오픈 소스 메시지 대기열 시스템은 매우 높은 성능을 제공하며 현재 매일 수십억 개의 메시지를 처리합니다.
packer: VM, vbox, AWS 등과 같은 다양한 플랫폼용 이미지 파일을 생성하는 데 사용되며 작성자는 vagrant의 작성자입니다.
skynet: 분산 스케줄링 프레임워크;
Doozer: ZooKeeper와 유사한 분산 동기화 도구입니다.
Heka: mazila 오픈 소스 로그 처리 시스템;
cbfs: Couchbase 오픈 소스 분산 파일 시스템;
tsuru: SAE와 정확히 동일한 기능을 가진 오픈 소스 PAAS 플랫폼입니다.
god: redis와 유사한 캐시 시스템이지만 분산 및 확장성을 지원합니다.
gor: 네트워크 트래픽 캡처 및 재생 도구;
보조 제목
생태학적 슬롯 및 암시적 표준
철을 치는 데 필요한 노력 외에도 블록체인이 Go 언어를 선택하게 만드는 몇 가지 기회와 행운도 있습니다. 블록체인 2.0, 이더리움, Hyperledger Fabric 이후 퍼블릭 체인과 컨소시엄 체인의 가장 성공적인 대표자들을 살펴보겠습니다. 이들은 예외 없이 Go를 주요 개발 언어로 사용하기로 선택했습니다.
이 두 슈퍼 블록체인의 영향력은 일반 프로젝트의 영향과 비교할 수 없으며 생태학에서 큰 틈새를 차지할 뿐만 아니라 암시적으로 블록체인 표준을 공식화합니다. 얼라이언스 체인의 기술은 이더리움과 패브릭을 우회할 수 있는데, 블록체인 기술을 선택하려는 기업에게 가장 빠른 방법은 무엇일까요? 당연히 이 두 프로젝트의 혁신을 직접 베끼는 것이고 지름길은 오픈 소스 코드를 직접 사용하여 수정하는 것이고 그러면 자연스럽게 Go 언어가 후발주자에게 첫 번째 선택이 됩니다. 다른 언어, 그리고 일부 혁신을 선택했지만 선택하지 않은 경우 매우 성숙한 언어는 일부 특정 라이브러리에 대한 지원이 부족하여 프로젝트를 수행할 수 없게 만듭니다.
많은 사람들이 이더리움의 영향에 대해 의심의 여지가 없지만 실제로 엔터프라이즈 블록체인 배포에 대한 Fabric의 영향을 과소평가해서는 안 됩니다.
Hyperledger Fabric은 배포된 엔터프라이즈 블록체인 네트워크 중 가장 많이 사용되는 프로토콜 프레임워크이며, Hyperledger(Fabric이 주력 프로토콜)는 통합업체 및 소프트웨어 개발 플랫폼에서 가장 일반적으로 지원하는 프로토콜 프레임워크로 53%를 차지합니다.
블록체인 기술 서적 중에서 하이퍼레저에 관한 서적이 가장 인기가 많다는 점도 하이퍼레저의 영향력을 1차적으로 확인시켜준다.
보조 제목
Go 언어에서 Bytom의 실행
프로그래밍 언어를 선택하는 과정에서 C, C++, Java 등을 고려했는데, C/C++는 대규모 프로젝트를 위해 유지보수가 어렵고, Java는 다소 번거롭다. 점차적으로 기술과 인재의 헤드 효과를 형성하고 기술 선택의 추세에 따라 초기 Bytom 프로젝트에서 직면한 저항을 자연스럽게 줄일 수 있습니다.물론 점진적인 개발 과정에서 우리는 또한 선택의 편리함을 느낍니다. 언어와 장점을 이동합니다.
Go on Blockchain 사례
기술적으로 말하면 블록체인 노드는 비동기적으로 함께 작동하기 위해 여러 모듈이 필요하므로 Go 언어 동시성 및 채널이 매우 유리합니다.다음 트랜잭션 확인 예를 살펴보겠습니다.
Routine+Ch+WaitGroup을 사용하여 코드 30줄 내에서 동시 검증 트랜잭션 기능을 구축할 수 있으며, 고구성 서버의 경우 100,000 TPS 이상을 실행할 수 있습니다.
쉽게 Go 언어 마스터가 되십시오
협업 측면에서 gofmt를 통한 Go 코드의 자동 조판은 핵심 팀원과 심지어 커뮤니티 개발자가 제출한 코드 스타일의 차이를 최소화하고 프로젝트의 전반적인 품질과 유지 관리성을 향상시킬 수 있습니다.
요약하다
보조 제목
요약하다


