検索
ホームページphp教程PHP开发Spider RPC 開発ガイド

Spider RPC 開発ガイド

Nov 21, 2016 pm 01:55 PM

プロトコルと互換性

spiderはJava言語を使用して開発され、IoCコンテナとしてSpringを使用し、TCP/IPプロトコルを採用し、これに基づいてSaaSシステムモデルの特性と組み合わせて、より多くの条件を満たすためにターゲットを絞った設計が行われます。マルチテナント システム、高可用性、分散展開の要件。

シリアル化メカニズムとして JSON を使用することで、後続のバージョンでは protobuf のサポートが検討される可能性があります (java/c++/c# はクラス ライブラリでサポートされます)。

パフォーマンスと安定性を最大化するために、スパイダーは Sun JDK1.8 に基づいてコンパイルされており、非推奨の機能の使用を避ける必要があります。

さまざまな環境やインターネットアプリケーションに可能な限り適応するために、Spider は少なくとも Tomcat/jboss アプリケーションサーバーの下で実行できる必要があります。

展開モード

Spider は、いつでも集中管理モードまたは独立管理モードで実行できます。

集中管理モード: 集中モードでは、サービス センターが有効になっている必要があります。数十のノードが実行されている大規模な展開では、通常、ノードの追加または削減やサービスの分割に大量の構成ファイルが必要になります。通常、新しいノードの上流にある各ノードは、対応するルーティングおよびマッピング サーバーのパラメータを変更する必要があります。集中管理モデルを使用すると、サービス センターにログインするだけで関連する構成を変更でき、ノードの変更は対応する上流ノードに自動的にプッシュされます。集中管理モードで実行すると、プラットフォーム全体のすべてのノードの健全性ステータス、TPS、各サービスの応答時間などをサービス センターで表示できます。

独立管理モード: 独立管理モードでは、サービス センターを有効にする必要はありません。ノードの数が少ない場合、たとえばプラットフォーム全体が 10 ノードを超えない場合、通常は集中管理モードよりも独立モードを採用する方が簡単です。独立管理モードで実行している場合、スパイダーが提供する RESTful API を通じて現在のノードの実行ステータスを表示できます。

サービス識別

Spider は、2 種類のサービス公開アノテーションをサポートしています。

Spider は、スパイダー サービスを識別するための 2 つのカスタム アノテーションを定義します。

Service module

@Retention(RetentionPolicy.RUNTIME)

public @interface ServiceModule {

String subSystemId() default "0";

}

@ServiceModule は単なるクラスのアノテーションであり、このアノテーションを持つインターフェイスこのインターフェースでの定義は、スパイダーサービスとして識別されるための必須条件です。

Service インターフェース

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Service {
    String serviceId(); // 服务编号,8位ASCII字符,其中00000000-00000099为spider内部保留,00000100-00000199为服务中心保留
    String desc(); //服务描述
    int timeout() default 0; //超时时间,单位毫秒
    boolean needLog() default false; //设置是否记录日志
    int broadcast() default 0;  //设置该请求是否广播,0:不广播;1:广播但无需相应;2:广播并响应
}

@Service はメソッド アノテーションであり、スパイダー サービス番号、スパイダー サービスの説明、およびスパイダー サービスのタイムアウトを設定するために使用される 3 つの属性が含まれています。タイムアウトはオプションであり、spider.xml で定義されていない場合、デフォルトは 300 秒です。

@ServiceModule アノテーションが付けられたインターフェイスで定義された @Service でアノテーションが付けられたメソッドのみがスパイダー サービスとして識別され、インターフェイスはリモート サービスへのサービスまたはプロキシ呼び出しを提供するために使用できます。 C Broadcast = 2 のサービスの場合、その戻り値は com.ld.net.spider.pojo.BroadCastResult のデータ プロパティにパッケージ化する必要があります。このクラスの Javadoc の説明を参照してください。

環境変数

spider には、関連オプションを制御するためのいくつかの環境変数があります。現在、以下に示すように、設定可能な環境変数があります:

l SPIDER_LOG、デフォルトは /tmp/spider/stat/${nodeName}

l SPIDER_HOME、デフォルトは /usr/local/spider/${nodeName}

l SPIDER_CONFIG、spider.xml 起動ファイルを指定します、デフォルトのクラスパス: Spider.xml、構成ファイルのセクションを参照してください。

設定ファイル

設定ファイルのセクションを参照してください。

サービスの公開と代理店

サービスの公開: Spider.localService プラグインの serviceExportPackage 要素は、スパイダー ノードがサーバーとして機能するときに自動的に公開されるスパイダー サービスのパッケージ パスを、; で区切って定義します。サーバーがこのパラメーターに関連するパスを設定している限り、Java クライアントは、serviceProxyPackage パラメーターに対応するパスを設定している限り、@Autowired 依存関係挿入を通じてリモート サーバー パッケージによって提供される対応するサービスを直接呼び出すことができます。

サービス プロキシ: Java クライアントの場合、スパイダーは自動プロキシ機能を提供します。開発者は、ローカル Spring サービスを呼び出すのと同じように、spider.localService プラグの下で serviceExportPackage 要素を呼び出すだけで済みます。 in. 自動プロキシを必要とするスパイダー サービスのパッケージ パスを、; で区切って定義します。 C# クライアントや C++ クライアントなどの非 Java クライアントの場合、開発者は対応する SDK クライアントを呼び出す必要があります。

公開サービスとエージェントのサービスは重複できません。サービスをローカルで処理し、スパイダー エージェントによってダウンストリーム サーバーに転送する必要がある場合は、リリース リストで構成します。現時点では、これらのサービスをユーザー プログラミングを通じてリモートから呼び出すことはできません。通常、これらのサービスは特別な目的に使用され、ブロードキャストというラベルが付けられます。

追記: 技術的に言えば、クライアントとサーバー上の同じサービスのメソッド署名とサービス番号が同じである限り、呼び出すことができます (つまり、メソッド名は関係ありません)。これは推奨されませんが、将来のバージョンでは可能になる可能性があります。完全一致が必要です。

スパイダー ノードが NB の役割を果たしたい場合、公開パスは serviceExportPackage で構成され、サービスのルーティング エントリがローカルに解析される場合は、特定のサービスの実装も含まれることにも注意してください。処理中、サービスは NB ノードで処理され、それ以上転送されないことに注意してください。したがって、NB の役割については、ブロードキャスト サービスを除き、serviceExportPackage の下で設定しないことをお勧めします。

さまざまなデータ型のサポート

スパイダーの現在のバージョンは、一般的なオブジェクトを含む、byte[] を除くすべてのデータ型を基本的にサポートしています。

サービスインターフェース定義要件

柔軟性、パフォーマンス、開発効率を考慮すると、サービスパラメータと戻り値の両方にオブ​​ジェクトを使用することが推奨されます(gRPC、ICEなどの既存のRPCフレームワークは基本的にこのモードを採用しています) , while パラメーター SpiderBizHead クラス (動的ルーティングの設定などの関連情報が含まれます) を継承します。以下に示すように:

入力パラメータ DTO:

public class ServiceReq extends SpiderBizHead /*動的ルーティング機能が不要な場合はSpiderBizHeadを継承する必要はありません*/ {

}

サービスシグネチャ:

@ServiceModule ()

パブリック インターフェイス DemoService {

@Service()

‐ ‐ ‐ ‐ ‐ ‐ ‐ public ServiceResp addServer(ServerReq req)

}

' s 'の ‐ to ‐ ‐ public ServiceResp addServer(ServerReq req);

C# の場合は、System.Runtime.Remoting.Proxies.RealProxy クラスの実装を参照してください。

============================================= == ==========================

大規模で同時実行性の高い j2ee soa システム アーキテクチャの設計と実装が得意で、j2ee システムのパフォーマンスに熟練している分析と最適化

oltp&dss oracle&mysql データベース設計、パフォーマンス分析と最適化、HA、サブデータベース、サブテーブル アプリケーション アーキテクチャの設計と実装に精通しています
私のオープンソース プロジェクト mysqlawr、dlcache、logpool、drpcp。 https://git.oschina.net/zhjh256
各州のGSP規制要件を満たすインテリジェントテクノロジー医療機器管理システムを提供します

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境