BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

コミュニティの視点: Java から Go ブロックチェーン エンジニアにどのように移行したか

比原链Bytom
特邀专栏作者
この記事は約2787文字で、全文を読むには約4分かかります
この記事は Bytom エンジニアの声明に基づいています。
AI要約
この記事は Bytom エンジニアの声明に基づいています。

序文

副題

Bytom Chainに入社する前からJavaの開発をしていましたが、Goを初めて見たときは少し抵抗があり、面接に受かるのか不安もありましたが、言語を習得することを考えるのは本当に大変でした。 Bytom Chain に参加することに成功し、半月以内に Go をすぐにマスターし、コア プロジェクトを開発できるようになりました。

Java 言語は、大規模で成熟したプロジェクトでは利点がありますが、コルーチン処理などのブロックチェーン開発では多くの欠点があり、Java 言語自体には十分な柔軟性がありません。もちろん、Go を選択する主な理由は、ブロックチェーンの人気。

副題

ブロックチェーンの一般的な言語

以下の図に示すように、より有名なプロジェクトで使用されているプログラミング言語について少し統計を作成してください。

ビットコインやライトコインなどの旧世代のパブリック チェーンは、一般に C/C++ を多く使用します (Go がまだ始まっていない当時のことを見てみましょう)。また、新世代のパブリック チェーン、たとえば、イーサリアムのリーダーであるイーサリアムは、C/C++ を多く使用します。アライアンス チェーンである Hyperledger が Go 言語を使用し始めました もちろん、Rust の開発の勢いも非常に強いことがわかりました 過去 2 年間で、Polkadot や Grin などの多くのパブリック チェーンが Rust を使用し始めました開発用の言語。

副題

Go 言語の利点

導入が簡単

Go コンパイルでは、glibc 以外の外部依存関係のない静的な実行可能ファイルが生成されます。これにより、展開が非常に便利になります。ターゲット マシンには基本システムと必要な管理および監視ツールのみが必要で、アプリケーションに必要なさまざまなパッケージやライブラリの依存関係を心配する必要がなく、メンテナンスの負担が大幅に軽減されます。 。他のライブラリに依存せずに直接マシンコードにコンパイルでき、glibc のバージョンには特定の要件があり、ファイルをスローすることでデプロイメントが完了します。

素晴らしい演技

C や Java ほどではありませんが、通常はネイティブ Python アプリケーションよりも桁違いに優れており、ボトルネックとなるビジネスの作成に適しています。メモリ使用量も非常に少ないです。

同時実行性とチャネル

Goroutine とチャネルを使用すると、同時実行性の高いサーバー ソフトウェアを簡単に作成できるため、多くの場合、ロック機構とそれによって引き起こされるさまざまな問題を考慮する必要がありません。単一の Go アプリケーションでも複数の CPU コアを効率的に利用でき、並列実行のパフォーマンスも良好です。

優れた言語設計

Go は非常にシンプルで学びやすいです。学術的な観点から見ると、Go 言語は実際には非常に平凡で、多くの高度な言語機能をサポートしていませんが、エンジニアリングの観点から見ると、Go の設計は非常に優れており、仕様はシンプルで十分に柔軟です。 Go のシンプルさのおかげで、Python、Elixir、C++、Scala、または Java 開発者は 1 か月以内に効率的な Go チームを結成できます。

標準ライブラリとツール

現在、Go には多数の組み込みライブラリがあり、特にネットワーク ライブラリは非常に強力です。さらに重要なことは、Go には完全なツール チェーンが付属しており、これによりチームのコラボレーションの一貫性が大幅に向上します。たとえば、 gofmt は Go コードを自動的に植字するため、異なる人が書いたコードの植字スタイルが一貫していないという問題が大幅に解消されます。アーカイブの編集時に gofmt が自動的に実行されるようにエディターを構成すると、コードを作成するときにコードを自由に配置でき、アーカイブ時に自動的に正しい植字コードになります。さらに、gofix や govet などの非常に便利なツールもあります。

素晴らしいチーム

Go 言語の支援者は Google であり、さまざまなシナリオでテストできる言語であると同時に、創設者は C 言語の父でもあり、その後の発展と革新が期待できます。

プロジェクトを成功させる

Go 言語はクラウド時代に広く使用されており、特に Docker や K8s などのキラー製品の登場により、エンジニアリングの世界で Go 言語に地位を与えました。

さらに、Go 言語には、正常に実行されるソフトウェアが多数あります。

nsq: Bitly のオープンソース メッセージ キュー システムは非常に高いパフォーマンスを備えており、現在、毎日数十億のメッセージを処理しています。

パッカー: VM、vbox、AWS などのさまざまなプラットフォーム用のイメージ ファイルを生成するために使用されます。作成者は vagrant の作成者です。

Skynet: 分散スケジューリング フレームワーク。

Doozer: ZooKeeper に似た分散同期ツール。

Heka: mazila オープンソース ログ処理システム。

cbfs: Couchbase オープンソース分散ファイル システム。

tsuru: SAE とまったく同じ機能を持つオープンソースの PAAS プラットフォーム。

god: Redis に似たキャッシュ システムですが、分散とスケーラビリティをサポートしています。

gor: ネットワーク トラフィックのキャプチャおよび再生ツール。

副題

生態学的スロットと暗黙の基準

鉄を打つのに必要な大変な作業に加えて、ブロックチェーンに Go 言語を選択させるいくつかの機会と幸運もあります。 Blockchain 2.0、Ethereum、Hyperledger Fabric 以降、パブリック チェーンとコンソーシアム チェーンで最も成功を収めた代表企業を見てみましょう。これらの企業はすべて、例外なく Go を主要な開発言語として使用することを選択しています。

これら 2 つのスーパー ブロックチェーンの影響力は通常のプロジェクトの影響力とは比較にならないものであり、エコロジーの大きなニッチを占めるだけでなく、パブリック チェーンのインテリジェンスであるかどうかにかかわらず、契約でもブロックチェーンでもなく暗黙的にブロックチェーンの標準を策定します。アライアンス チェーンのテクノロジーはイーサリアムとファブリックをバイパスできるため、ブロックチェーン テクノロジーを選択したい企業にとって、それを達成する最速の方法は何でしょうか?当然のことながら、これら 2 つのプロジェクトのイノベーションを直接コピーすることになり、オープン ソース コードを直接使用して変更するのが近道となり、当然後発者にとって Go 言語が第一の選択肢になります。別の言語で、いくつかのイノベーションを選択してもそうでない場合、非常に成熟した言語では、特定のライブラリのサポートが不足し、プロジェクトの実行が不可能になります。

多くの人はイーサリアムの影響を疑いませんが、実際、企業のブロックチェーン展開に対するファブリックの影響を過小評価すべきではありません。

Hyperledger Fabric は、導入されているエンタープライズ ブロックチェーン ネットワークの中で最も使用されているプロトコル フレームワークであり、Hyperledger (その主力プロトコルは Fabric です) は、インテグレーターやソフトウェア開発プラットフォームによって最も一般的にサポートされているプロトコル フレームワークであり、53% を占めています。

すべてのブロックチェーン技術書籍の中で、ハイパーレジャーに関する書籍が最も人気があるという事実も、ハイパーレジャーの影響力を裏付けるものです。

副題

Go言語でのBytomの実践

プログラミング言語を選択する過程では、C、C++、Javaが検討されましたが、C/C++は大規模プロジェクトのメンテナンスが難しく、Javaは少し面倒で、現時点ではすでにGo言語がブロックチェーンで輝いています。徐々に技術と人材の頭効果を形成し、技術選択の傾向に従うことで、最初の Bytom プロジェクトで遭遇した抵抗は自然に軽減されます。もちろん、段階的な開発プロセスでは、技術の選択によってもたらされる利便性も感じます。 Go言語とその利点。

ブロックチェーンでのGoの事例

技術的に言えば、ブロックチェーン ノードは非同期で連携するために複数のモジュールを必要とするため、Go 言語の同時実行性とチャネルは非常に有利です。次のトランザクション検証の例を見てみましょう。

Routine+Ch+WaitGroup を使用すると、30 行のコード内で同時検証トランザクション関数を構築でき、高構成サーバーの場合は 100,000 TPS 以上を実行できます。

簡単に Go 言語マスターになれる

コラボレーションの点では、 gofmt による Go コードの自動組版により、コア チーム メンバーやコミュニティ開発者によっても提出されたコード スタイルの違いを最小限に抑え、プロジェクトの全体的な品質と保守性を向上させることができます。

要約する

副題

要約する

开发者
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina