アーキテクトの道-マイクロサービステクノロジーの選択

アーキテクトとして、製品テクノロジーのルートを計画し、テクノロジーの選択に責任を持つ必要があります。テクノロジースタックの選択は、主に次の標準を参照します。

  • 安全で安定したセキュリティの脆弱性を頻繁に公開することはできません

  • オープンソースコミュニティの活発さ、Apacheコンポーネントへの参加が優先されます

  • 一流のインターネット企業が製品を発売し、大企業がそれらを支持しています

  • 文書の読みやすさ

この記事では、マイクロサービスアーキテクチャのバックエンドテクノロジの選択について説明します。テクノロジを選択する必要がある場合は、それを参照して独自のデシジョンツリーを設計できます。

開発言語


大規模なバックエンドサービスの構築に適したJAVA主流プログラミング言語

Golang
Go言語は、2009年にGoogleがリリースした2番目のオープンソースプログラミング言語です。マルチプロセッサシステムアプリケーションのプログラミング用に特別に最適化されています。Goでコンパイルされたプログラムは、CまたはC ++コードの速度に匹敵し、より安全で、並列プロセスをサポートします。GoogleはGoに大きな期待を寄せています。その設計は、ソフトウェアがマルチコアプロセッサの同期と多重化の利点を十分に活用できるようにし、オブジェクト指向プログラミングの問題を解決することです。現在、クラウドコンピューティングの分野で最良の選択です!

開発IDE

IntelliJ IDEA
jetbrains製品、スマートコードアシスタント、J2EEサポート、さまざまなバージョンツール(git、svn、githubなど)、JUnit、CVS統合など。多言語サポート、無料版はJAVAなどのいくつかの言語のみをサポートします。フラッグシップバージョンは有料バージョンと無料バージョンです(フラッグシップバージョンよりも機能が少ない)。

VS Code
VS Codeは、無料のオープンソース、高性能、クロスプラットフォーム、軽量のコードエディターであると同時に、パフォーマンス、言語サポート、およびオープンソースコミュニティで優れた役割を果たします。

開発技術

マイクロサービスフレームワーク

Spring Cloud / Spring Cloud alibaba
Spring Cloudは、一連のフレームワークの順序付けられたコレクションです。Spring Bootの開発の利便性を利用して、分散システムインフラストラクチャの開発を巧みに簡素化し、マイクロサービスソリューションのフルセットを提供します。

RPCフレームワーク

RestTemplate&WebClient
Spring RestTemplateは、RestサービスにアクセスするためにSpringが提供するクライアントです。

gRPC
GRPCは、Googleがオープンソース化した高性能のクロスランゲージRPCフレームワークであり、HTTP2プロトコルとprotobuf3.xに基づくRPCフレームワークに基づいています。多言語サポート、リンクの再利用のサポート、クラスターでの長いリンクの使用、簡単なパフォーマンスチューニングの後、ほとんどのビジネスシナリオのニーズを満たすことができます。

分散トランザクション

Seata
Alibabaの主要なオープンソースプロジェクト、Java開発、高性能、ロックなし、コード侵入なし、ATモード0コード、MTモード非トランザクションストレージのサポート、アクティブコミュニティ、高速バージョン更新、使いやすさ!

フロー制御、ヒューズの劣化

Sentinel
Alibabaの主要なオープンソースプロジェクト、Java開発、便利な二次開発、およびアクティブなコミュニティ

APIゲートウェイ

Spring Cloud Gateway
Springの最初の選択肢は、二次開発に便利で、非同期のノンブロッキングをサポートします

Kong
Kongは、Mashapeによってオープンソース化されているNginx_Luaモジュールに基づく、可用性が高く、簡単に拡張できるAPIGatewayプロジェクトです。優れたパフォーマンス、豊富なプラグイン、そして基本的に箱から出してすぐに使用できる、2番目の開口部での使用には一定のしきい値があります。

構成センター

Nacos
登録/中央構成センターとして同時に使用できるAlibabaの主要なオープンソースプロジェクトは、テクノロジースタックを簡素化し、完全な管理インターフェイス、Java開発、便利な二次開発、アクティブコミュニティ、継続的な更新と反復を備えています。

Apollo
Ctripのフレームワーク部門によって開発された分散構成センターであり、さまざまなアプリケーション環境やさまざまなクラスターの構成を一元管理できます。構成を変更した後、リアルタイムでアプリケーション側にプッシュできます。標準化された権限、プロセスガバナンス、およびその他の機能を備えています。マイクロサービス構成管理シナリオに適しています。

サービスディスカバリ

Nacos:
登録/中央構成センターとして同時に使用できるAlibabaの主要なオープンソースプロジェクトは、テクノロジースタックを簡素化し、完全な管理インターフェイス、Java開発、便利な二次開発、アクティブコミュニティ、AP / CPモデルを備えています。そしてそれは絶えず更新されます。

Zookeeper
ZooKeeperは、分散型のオープンソース分散型アプリケーション調整サービスであり、GoogleのChubbyのオープンソース実装であり、HadoopとHbaseの重要なコンポーネントです。パフォーマンスは、大規模なサービス検出および構成センター、効果的な高リアルタイムパフォーマンス、大規模なリアルタイムデータ同期シナリオには適していません。CPモード。

モニター

Prometheusに
は、より包括的なオープンソースモニタリングシステム、CNCFテクノロジースタック、アクティブなコミュニティがあります

Grafana
Grafanaは、オープンソースの測定分析および視覚化スイートです。純粋なJavascriptによって開発されたフロントエンドツールは、ライブラリ(InfluxDBなど)にアクセスすることにより、カスタムレポートを表示したり、グラフを表示したりできます。Kibanaと同様に、主に時系列データの監視に使用されます。GrafanaのUIはより柔軟で、プラグインが豊富で、強力です。インターフェースはシンプルで美しく、無料のカスタマイズをサポートし、コミュニティは豊富なダッシュボードをサポートしています。

SkyWalking
分散追跡システム、国内リンク追跡、豊富なコミュニティドキュメント、トップApacheプロジェクト。

ログ

ELK
分散サービスログ処理、elasticsearchを中心に構築されたログエコシステム。広く使用されており、簡単に拡張できます。kibanaを使用すると、ログを取得してオンラインの問題を簡単に見つけることができます。

データベースミドル

ShardingSphere
Apache ShardingSphereは、リレーショナルデータベースミドルウェアとして位置付けられ、データシャーディング、読み取り/書き込み分離、複数のデータコピー、データ暗号化、シャドウライブラリ圧力テストなどの機能をサポートします。コミュニティドキュメントが豊富で、Apacheのトッププロジェクトになっています。

シリアル化

ジャクソン
スプリングは最初の選択肢であり、安定していて安全です。

Protobuf
Protocol Buffer(Protobufと呼ばれる)は、軽量で効率的なgoogle open構造化データストレージ形式であり、データのシリアル化を構造化するために使用でき、データストレージまたはRPCデータ交換形式に適しています。

Fastjsonは推奨されません

開発ツール

ビルドツール

Maven:
主流のプロジェクト構築および管理ツール。MavenはApacheの下で純粋なJavaで開発されたオープンソースプロジェクトです。プロジェクトの構築および管理のためのツールであり、ビルド、ドキュメント、レポート、依存関係、scms、リリースの管理に役立ちます。 、および配布方法。コードのコンパイル、依存関係の管理、バイナリライブラリの管理などを簡単に行うことができます。

Gradle
Gradleは、ApacheAntとApacheMavenの概念に基づいた自動プロジェクト構築ツールです。Gradleビルドスクリプトは、GroovyまたはKotlinのドメイン固有言語で記述されており、パッケージの依存関係を自動的に処理し、デプロイの問題を自動的に処理し、条件付きの判断を直感的に記述できます。

インターフェースリクエストツール

postman
postmanは、WebページのデバッグとHTTPリクエストのシミュレーションを行うための強力なChromeプラグインであり、ほぼすべてのタイプのHTTPリクエストをサポートし、操作が簡単で便利です。

容器

Docker
は、Go言語とApache2.0プロトコルに従ったオープンソースに基づくオープンソースのアプリケーションコンテナエンジンです。Dockerを使用すると、開発者はアプリケーションと依存関係を軽量でポータブルなコンテナーにパッケージ化し、一般的なLinuxマシンに公開できます。また、仮想化することもできます。Dockerを使用すると、次の利点がもたらされます。1。配信とデプロイの高速化、2。デプロイと拡張の効率化、3。リソース使用率の向上、4。管理の簡素化

クラスター管理

Kubernetes
Kubernetesは、コンテナクラスターの自動展開、拡張、運用および保守のためのオープンソースプラットフォームです。Kubernetesを使用すると、ユーザーのニーズに迅速かつ効果的に対応し、アプリケーションを迅速かつ予測どおりにデプロイし、アプリケーションを非常に迅速に拡張し、新しいアプリケーション機能をシームレスに接続し、リソースを節約し、ハードウェアリソースの使用を最適化できます。コンテナオーケストレーション管理のための完全なオープンソースソリューションを提供します。豊かなエコロジー、拡張しやすい、大企業に支持された豊かで安定した機能、使いやすさ。

画像管理ツール

ハーバー
ハーバーはオープンソースのアーティファクトウェアハウスです。これは元々中国で作成された最初のオープンソースプロジェクトであり、CNCFの卒業生になりました。ユーザーは、ポリシーとロールベースのアクセス制御を通じて製品(コンテナイメージ、ヘルムチャートなど)を保護し、イメージをスキャンして、セキュリティの脆弱性を回避できます。Harbourは、オープンソースプロジェクトのDocker Distributionを拡張し、ユーザーが必要とする機能(セキュリティ、ID、脆弱性スキャン、管理など)を追加しました。

動作環境

オペレーティング・システム:

Linux <CentOS 7+>
Linuxは、自由に使用でき、自由に普及しているUnixライクなオペレーティングシステムです。POSIXとUNIXをベースにした、マルチユーザー、マルチタスク、マルチスレッド、マルチCPUのオペレーティングシステムです。主要なUNIXツール、アプリケーション、およびネットワークプロトコルを実行できます。32ビットおよび64ビットのハードウェアをサポートします。Linuxは、Unixのネットワーク中心の設計哲学を継承しており、安定したパフォーマンスを備えたマルチユーザーネットワークオペレーティングシステムです。

Webサーバー

Tomcat <8+>
Tomcatサーバーは、無料のオープンソースWebアプリケーションサーバーです。軽量のアプリケーションサーバーです。中小規模のシステムで、同時ユーザーが少ない場合に一般的に使用されます。開発と開発に使用されます。 JSPプログラムをデバッグします。

Nginx
軽量Webサーバー/リバースプロキシサーバーおよび電子メール(IMAP / POP3)プロキシサーバー

NodeJs
サーバー側JavaScript環境

この記事がお役に立てば、

私にトリプルを与えることを忘れないでください:

いいね、再投稿、コメント

またね!

白い売春婦に匹敵するお気に入り 親指を立てるの は真実です!

終わり

乾物共有

これは皆へのささやかな贈り物です。公式アカウントに従って、次のコードを入力してください。Baiduネットワークディスクアドレスを取得できます。ルーチンはありません。

001:「プログラマーにとって必読の本」
002:「中小規模のインターネット企業向けのバックエンドサービスアーキテクチャと運用および保守アーキテクチャをゼロから構築する」
003:「インターネット企業向けの高同時実行ソリューション」
004:「インターネットアーキテクチャ教育ビデオ "
006:
注文システムのSpringBoot実現" 007: "SpringSecurity実際の戦闘ビデオ"
008: "Hadoop実際の戦闘教育ビデオ"
009: "Tencent 2019 Techo Developer Conference PPT"

010:WeChat交換グループ

最近のホット記事トップ

1.アーキテクトの道-仮想化テクノロジーとコンテナーDocker

2.あなたの技術的なブログを構築するために使用Hexo

3.データベース最適化スキル-SQLステートメントの最適化

4.データベースの最適化-インスタンスパラメータの最適化

私はあなたが「見ている」ことを知っていました

おすすめ

転載: blog.csdn.net/jianzhang11/article/details/107031917