最初に一言言わせてください
私は技術的な「なぜ」の質問をよく考えます。 「歩いているとき、時々、ある問題について長い間考えますが、その問題のすべての点について自分自身を納得させるまで、それは終わりません。そこで、その思いを記録し、新たなシリーズとして記事にしたいと思います。これらの記事ではコードを見ることはできないかもしれませんが、見落とされがちないくつかの問題と、問題のより深い「理由」を垣間見ることができます。
今日は最初の記事です。なぜ Dubbo を Go で書き直す必要があるのですか?
Dubbo は Alibaba で生まれ、2011 年にオープンソース化されましたが、10 年が経ちました。 2019 年に Go で書き直されてオープンソース化され、2 年後の現在ではオリジナルの V1.0.0 バージョンから V3.0.0 に開発され、スター数は現在 3.8K となっています。
ある同僚が、なぜ Dubbo のような「古い」プロジェクトを Go で書き直す必要があるのかと尋ねました。それには実用的な意味がありますか?
今日は私の意見をいくつか話させてください。
過去と未来をつなぐ
この質問にうまく答えるには、Dubbo-go の本来の目的から始める必要があると思います。GitHub ホームページでは次のように紹介されています。
##正式な中国語訳は Apache Dubbo Go 言語実装、Java と Golang 間のブリッジの構築、gRPC との相互接続です。 /Dubbo エコシステムの相互運用性により、Java エコシステムはクラウド ネイティブ時代の技術的恩恵を享受できるようになります。 わかりやすく言い換えると、会社や部門で Java バージョンの Dubbo を使用する人もいれば、Go を使用する人もいます。この 2 つはコミュニケーションする必要があるため、Dubbo-Go はコミュニケーションを解決するために作成されました。問題。 最初の質問は、なぜ企業が Java を使用し、次に Go を使用するのかということです。プログラミング言語の選択ビジネスにおけるプログラミング言語の選択について会社内, 最も重要なことは効率であり、その他の点は二の次だと思います。営利企業の主な目的は利益を上げることなので、どのような言語であっても、最小限のコストで同等の利益が得られるのであれば、それは良い言語です。 効率にはいくつかの側面が含まれます:- 開発効率。開発効率が高く、プロジェクトをできるだけ早く立ち上げ、市場を占有し、人件費も節約できます。
- 業務効率も向上します。運用効率が高く、サーバーコストを節約できます。
- Java と比較して、Go 言語は起動が速く、コンパイル速度が速く、メモリ使用量が小さく、高機能に優れています。同時実行性(協調性)(処理性)が高いため、すでにJavaを導入している企業でもGoを検討することになりますが、現状ではそのような企業はごく一部です。
- 一部の企業には必須のテクノロジー スタックがないため、新しい部門や新しいビジネスは制約を取り除き、開発に新しい言語 Go を選択できます。
Thrift のみがこれより古いですが、Thrift は単なる RPC フレームワークであるのに対し、Dubbo には、サービスの登録と検出、ロード バランシング、フォールト トレランス、動的構成などのすぐに使用できるサービス管理機能が含まれています。
初期の Java RPC フレームワークには選択肢がなかったと言えます。
RPC フレームワークが隆盛を極め、多くの企業が RPC フレームワークを使用し、アリババの支持を得ている時代でも、Dubbo は依然としてその地位を保っています。
概要
企業が Java プログラミング言語と Dubbo フレームワーク (まだ多くの選択肢があります) を選択し、その後 Go を試してみたい場合、または一部の新しいビジネスや新しい部門で Go を試してみたい場合その際、Go で Java の Dubbo とどのように通信するかという問題に直面しました。
Dubbo プロトコルはプライベート プロトコルであるため、Go で再実装するコストは依然としてかなり高くなります。この観点から見ると、Dubbo-Go は Java と Go の間の通信において依然として大きな価値を持っています。
スレッド プールとの闘いに終止符を打つ
Dubbo フレームワークを使用する場合、多くの場合、Dubbo ゲートウェイが必要になります。Dubbo ゲートウェイの詳細については、私の記事「The Evolution」を参照してください。マイクロサービス ゲートウェイの」。
この記事では、Dubbo ゲートウェイの背景、困難、選択、設計、進化、落とし穴の経験を詳しく紹介し、「スレッド プールで何をしたか」を紹介することに多くの時間を費やしました。 ", Java ではスレッドは非常に貴重ですが、Dubbo ゲートウェイが同期的に呼び出される場合、1 つのリクエストが 1 つのスレッドを占有する必要があり、その結果同時実行エラーが発生し、スレッド プールがいっぱいになると他のリクエストに影響を及ぼします。
したがって、解決策は、スレッド プールを分離するか、スレッド プールを非同期呼び出しに変更することです。分離スレッドプールはリクエストが相互に影響を及ぼさないという問題を解決するだけで、同時実行性はまだ向上していません。非同期呼び出しに変更すると問題は完全に解決されますが、コーディングが複雑すぎます。
Go のコルーチンはこの問題を解決できます。Go のコルーチンは非常に軽量で、スケジューリング効率が高いため、単純なコードで非常に効率的なゲートウェイを作成できます。
たとえば、Nginx のパフォーマンスは誰にとっても明らかであると直感的に感じることができますが、Java を使用して実装する場合、Nginx のパフォーマンスを達成するために何台のマシンをスタックする必要があるかわかりません。ただし、Baidu はリバース プロキシの作成に Go を使用しており、Nginx の代わりに BFE を使用すると、そのパフォーマンスがいかに誇張されているかがわかります。
コルーチンの概要と原則については、私の記事「1 年間 Golang を書いて、プロセス、スレッド、コルーチンについて話しましょう」を参照してください。
概要
Dubbo ゲートウェイでは、Dubbo-Go も新しいソリューションを提供します。Tuya Smart はオンラインで使用するための Dubbo-Go ゲートウェイをすでに備えており、Dubbo-go としてオープンソース化されています。貔貅。
Dubbo Mesh への道を拓く
ServiceMesh は徐々に次世代のマイクロサービス アーキテクチャになりつつあり、K8S、Docker、その他のクラウドネイティブ基盤であっても、Go は間違いなく Mesh 上で輝くスター言語ですこれらの機能はすべて Go で書かれており、Go の開発速度とコルーチンの高い同時実行機能により、Go は Mesh に推奨される言語となっています。
これに基づいて、Dubbo のメッシュ化と Dubbo-Go もその道を切り開きました。ただし、DubboMesh はまだ小規模な段階にあり、完全な実装ソリューションはオープンソースではありません。同社は DubboMesh の道を歩みたいと考えており、Dubbo-Go も考慮すべき点の 1 つである可能性があります。
概要
ここまで述べたので、Dubbo を Go で書き直す必要がある理由に直接答える時が来ました。この質問に対する答えは依然として公式の文です: Java と Golang の間のギャップを埋める。 橋。なぜ「この橋を架ける」必要があるのかについては、下の図を参照してください。
以上がDubbo が Go で書き直されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版
便利なJavaScript開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
