JP6595419B2 - Api提供装置及びapiリクエスト制御方法 - Google Patents

Api提供装置及びapiリクエスト制御方法 Download PDF

Info

Publication number
JP6595419B2
JP6595419B2 JP2016159565A JP2016159565A JP6595419B2 JP 6595419 B2 JP6595419 B2 JP 6595419B2 JP 2016159565 A JP2016159565 A JP 2016159565A JP 2016159565 A JP2016159565 A JP 2016159565A JP 6595419 B2 JP6595419 B2 JP 6595419B2
Authority
JP
Japan
Prior art keywords
api
enabler
api request
requests
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016159565A
Other languages
English (en)
Other versions
JP2018028756A (ja
Inventor
嵩士 白井
浩之 大柳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016159565A priority Critical patent/JP6595419B2/ja
Publication of JP2018028756A publication Critical patent/JP2018028756A/ja
Application granted granted Critical
Publication of JP6595419B2 publication Critical patent/JP6595419B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Description

本発明は、APIリクエストを制御する技術に関する。
現在、WebAPIの普及に伴い、API(Application Program Interface)のマッシュアップ(複数のAPIを連携させる技術)によるアプリケーション開発が一般的になっている。APIの用途は多様化しているが、特にイネーブラをAPIとして提供するAPI提供装置が考案されている。
API提供装置は、イネーブラの備える機能をAPIとして提供し、各APIをコールするためのエンドポイントが実装されている。このようなAPI提供装置を利用することにより、アプリケーション開発者は、提供するサービスに応じて各機能のAPIを利用可能なアプリケーションを開発することができる。
例えば、図6に示すように、イネーブラAの機能aからイネーブラDの機能dをその順番で利用するAPIリクエストにより、それら各機能を提供可能なアプリケーションを開発することができる。開発されるアプリケーションの種類は様々であるため、API提供装置には、APIリクエストが利用する各イネーブラの利用順を管理するAPIアグリゲーション部が具備されている。
特開2016−1355号公報
ここで、例えば、一連の機能を完結した上で意味を成すサービスにおいて、一部のイネーブラで輻輳が発生して処理が完結しない場合、アプリケーションはAPIリクエストを再送し、API提供装置は、その再送に応じて、APIへアクセスするAPI処理を最初から実行する必要がある。これにより、既に処理が完了していたイネーブラの機能が再実行されるため、イネーブラの再利用によりリソース消費の無駄が生じ、更に所定のイネーブラで発生した輻輳に起因して他のイネーブラにも輻輳が波及する可能性がある(図7参照)。
上記特許文献1では、API処理を実行する際に、各イネーブラの処理リソースを事前に予約する方法が提案されている。これにより、API処理の再実行を防止することができる。しかし、事前にリソースを確保しておくため、イネーブラAとイネーブラBの間で時間が空くような場合には予約したリソースを他のAPIリクエストに振り分けできない等、イネーブラのリソースを適切に活用することは難しい。
すなわち、従来のAPI提供装置は、イネーブラで輻輳等が発生した場合に、イネーブラのリソースを有効に活用できないという課題があった。
本発明は、上記事情を鑑みてなされたものであり、イネーブラのリソースを有効に活用することを目的とする。
以上の課題を解決するため、請求項1に係るAPI提供装置は、複数のイネーブラでそれぞれ提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置において、アプリケーションから要求された複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整部、を備えることを要旨とする。
請求項2に係るAPI提供装置は、請求項1に記載のAPI提供装置において、前記複数のAPIリクエストは、前記複数のイネーブラのうち少なくとも1つ以上を利用するAPIリクエストであって、前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数又は消費した各リソースの量を記憶する記憶部を更に備え、前記調整部は、前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定することを要旨とする。
請求項3に係るAPI提供装置は、請求項2に記載のAPI提供装置において、前記調整部は、前記イネーブラの数又は前記リソースの量の最も小さいAPIリクエストを破棄することを要旨とする。
請求項4に係るAPIリクエスト制御方法は、複数のイネーブラでそれぞれ提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置で行うAPIリクエスト制御方法において、アプリケーションから要求された複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整ステップ、を実行させることを要旨とする。
請求項5に係るAPIリクエスト制御方法は、請求項4に記載のAPIリクエスト制御方法において、前記複数のAPIリクエストは、前記複数のイネーブラのうち少なくとも1つ以上を利用するAPIリクエストであって、前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数又は消費した各リソースの量を記憶部に記憶する記憶ステップを更に実行させ、前記調整ステップでは、前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定することを要旨とする。
請求項6に係るAPIリクエスト制御方法は、請求項5に記載のAPIリクエスト制御方法において、前記調整ステップでは、前記イネーブラの数又は前記リソースの量の最も小さいAPIリクエストを破棄することを要旨とする。
本発明によれば、イネーブラのリソースを有効に活用することができる。
システムの全体構成を示す図である。 バッファ部の機能ブロック構成を示す図である。 APIリクエスト制御方法の動作を示す図である。 APIリクエスト処理情報の例を示す図である。 新たなAPIリクエスト情報の例を示す図である。 提供サービスのイメージを示す図である。 課題説明時の参照図である。
本発明は、アプリケーションから要求された複数のAPIリクエストの各処理優先度をそれぞれ求め、複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄することを特徴とする。これにより、処理優先度の高いAPIリクエストを優先して処理するので、イネーブラのリソースを有効に活用することができる。
また、本発明は、複数のAPIリクエストの各処理優先度を、複数のAPIリクエストが上記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数又は消費した各リソースの量に応じて決定することを特徴とする。特に、イネーブラの利用数又はリソースの消費量の最も小さいAPIリクエストを破棄することを特徴とする。つまり、イネーブラの利用数又はリソースの消費量の大きいAPIリクエストの処理を優先するので、該APIリクエストが上記所定のイネーブラを利用する迄にそれぞれ利用していたイネーブラが再利用・再実行されることを防止することができる。これにより、イネーブラの再利用・再実行による無駄なリソース消費を低減でき、イネーブラのリソースを有効に活用することができる。
以下、本発明を実施する一実施の形態について図面を用いて説明する。
<第1の実施の形態>
図1は、第1の実施の形態に係るシステムの全体構成を示す図である。本実施の形態に係るシステム1は、イネーブラ装置10と、API提供装置20と、アプリケーション利用装置30と、を備えて構成される。
イネーブラ装置10は、APIリクエストに応じて自身が備える機能を提供するイネーブラ(ソフトウェアプログラム)を備える装置である。具体的には、機能aを提供するイネーブラAを備えるイネーブラ装置10、機能aとは異なる機能bを提供するイネーブラBを備えるイネーブラ装置10等、少なくとも1つ以上のイネーブラ装置により構成される。
例えば、イネーブラAは、ユーザ単位に住所録(住所、氏名、電話番号、所定サービスのID等)を管理するデータベースの機能aを提供し、イネーブラBは、電話発信・切断する機能bを提供し、イネーブラCは、メッセージを送信する機能cを提供する。
API提供装置20は、イネーブラ装置10が備えるイネーブラの機能のAPIをアプリケーションに提供する装置であり、アプリケーションが各APIをコールするためのエンドポイントが実装されている。
例えば、上記例の場合、API提供装置20は、住所録への情報の登録・取得・変更・削除を行うAPI(イネーブラAのAPI)、電話発信・切断を行うAPI(イネーブラBのAPI)、メッセージ送信を行うAPI(イネーブラCのAPI)、を全て提供し、アプリケーションから送信されたAPIリクエストを該当のAPIを介して該当のイネーブラへ転送する。
本実施の形態に係るAPI提供装置20は、図1に示したように、APIアグリゲーション部201と、バッファ部202と、を備えて構成される。
APIアグリゲーション部201は、アプリケーション利用装置30から送信されるAPIリクエストが利用する各イネーブラの利用順を管理する機能を備える。APIリクエストが複数の場合、複数のAPIリクエストがそれぞれ利用する各イネーブラの利用順をそれぞれ管理する。例えば、あるAPIリクエストが「イネーブラAのAPI→イネーブラBのAPI→イネーブラCのAPI→イネーブラDのAPI」の順で各イネーブラを利用することを管理する。
バッファ部202は、イネーブラ毎に設けられ、輻輳等の理由により自身に対応するイネーブラが処理できない等、APIリクエストが利用予定のイネーブラで更なるAPIリクエストを受け付けられない場合に、そのイネーブラを利用予定のAPIリクエストを一時的に格納する機能を備える。
また、バッファ部202は、輻輳等の理由によりイネーブラで更なるAPIリクエストを受け付けられない場合に、APIリクエストが自身に対応するイネーブラを利用する迄に利用したイネーブラに関する情報を記憶する機能を備える。
例えば、あるAPIリクエストが「イネーブラAのAPI→イネーブラBのAPI→イネーブラCのAPI→イネーブラDのAPI」の順番で各イネーブラを経由するが、イネーブラDのイネーブラ装置10dで輻輳が発生した場合、イネーブラDに対応するバッファ部202dは、そのAPIリクエストを一旦格納し、そのAPIがこれまでに経由してきた「イネーブラAのAPI→イネーブラBのAPI→イネーブラCのAPI」に関する情報を処理済イネーブラ情報として記憶する。
引き続き、バッファ部202の構成について詳述する。図2は、本実施の形態に係るバッファ部202の機能ブロック構成を示す図である。本実施の形態に係るバッファ部202は、APIリクエスト調整部2001と、APIリクエスト格納部2002と、データ記憶部2003と、を備えて構成される。
APIリクエスト格納部2002は、上述した通り、「APIリクエストが利用予定のイネーブラで更なるAPIリクエストを受け付けられない場合に、そのイネーブラを利用予定のAPIリクエストを一時的に格納する機能」を備える。
データ記憶部2003は、上述した「APIリクエストが自身に対応するイネーブラを利用する迄に利用したイネーブラに関する情報(処理済イネーブラ情報)」等、APIリクエスト格納部2002に格納されたAPIリクエストに関する情報をAPIリクエスト処理情報として記憶する機能を備える。
APIリクエスト調整部2001は、上記APIリクエスト処理情報を用いて、受信したAPIリクエストとAPIリクエスト格納部2002に格納されている複数のAPIリクエストとの各処理優先度をそれぞれ求め、最も処理優先度の低いAPIリクエストを破棄する機能を備える。なお、処理優先度の算出方法については後述する。
次にアプリケーション利用装置30について説明する。アプリケーション利用装置30は、APIリクエストを送信し、その送信に応じて返信されたAPIレスポンスを受信するアプリケーションを備えたサーバ装置である。ここで、アプリケーションとは、1つ以上のイネーブラ装置10とAPI提供装置20とを用いて、各イネーブラの機能のAPIを活用することにより、所定のサービスを提供するソフトウェアプログラムである。
また、APIリクエストとは、複数のイネーブラのうち少なくとも1つ以上を所定順・非所定順で利用するAPIリクエストである。例えば、電話発信を行うアプリケーションの場合、APIリクエストは、相手の電話番号を住所録から取得するイネーブラAのAPIと、電話発信・切断を行うイネーブラBのAPIと、をその順序で経由する。一方、それに加えてウェブブラウジングを行うアプリケーションの場合、それら2つのAPIとウェブブラウジングを行うイネーブラEのAPIとの間で利用順はない。この場合、イネーブラEのAPIは任意のタイミングで経由される。
次に、本実施の形態に係るAPI提供装置20で行うAPIリクエスト制御方法について説明する。図3は、本実施の形態に係るAPIリクエスト制御方法の動作を示す図である。
まず、API提供装置20は、アプリケーション利用装置30のアプリケーションからAPIリクエストを受信した後(ステップS1)、そのAPIリクエストがイネーブラを要求しているか否かを判定し(ステップS2)、イネーブラを要求している場合には、要求するイネーブラのIDを判定する(ステップS3)。例えば、APIアグリゲーション部201に格納されたイネーブラの利用順情報を参照することにより、受信したAPIリクエストがイネーブラを要求しているのか、どのイネーブラのAPIを要求しているのか、更にはイネーブラへの要求が完了したかを判定することができる。
次に、受信したAPIリクエストで要求されたイネーブラのAPIがイネーブラAの場合、イネーブラAに対応するバッファ部202は、イネーブラAで輻輳が発生しているか否かを判定し(ステップS4)、イネーブラAで輻輳が発生していない場合には、受信したAPIリクエストを処理可能、すなわち、イネーブラAの機能を現在提供可能であることから、APIリクエストをそのままイネーブラAへ転送する(ステップS5)。その後、バッファ部202は、自身で記憶しているAPIリクエスト処理情報に含まれる処理済イネーブラ情報を更新し(ステップS6)、該APIリクエスト情報に更に含まれる処理済イネーブラ数を更新する(ステップS7)。
ここで、APIリクエスト処理情報の例を図4に示す。APIリクエスト処理情報には、例えば、API提供装置20又はバッファ部202がAPIリクエストを受け付けた処理順、該APIリクエストに関するAPIリクエスト情報(例えば、APIリクエストのID、パラメータ等)、該APIリクエストで既に処理されたイネーブラのIDに関する処理済イネーブラ情報、該APIリクエストで既に処理されたイネーブラの数に関する処理済みイネーブラ数、が格納されている。
例えば、受信したAPIリクエストで既にイネーブラAが利用され、次にイネーブラBを利用する場合、イネーブラBに対応するバッファ部202は、そのイネーブラBで輻輳が発生していなければ、その受信したAPIリクエストをイネーブラBへ転送し、そして、APIリクエスト処理情報の処理済イネーブラ情報を「A」から「A→B」に変更し、処理済イネーブラ数を「1」から「2」に変更する。
図3に戻り、ステップS4において、イネーブラAで輻輳が発生している場合、イネーブラAに対応するバッファ部202(APIリクエスト調整部2001)は、APIリクエスト格納部2002にAPIリクエストを格納するための空き容量があるか否かを判定する(ステップS8)。APIリクエスト格納部2002に該空き容量がある場合、APIリクエスト調整部2001は、受信したIPリクエストをただちに破棄することなくAPIリクエスト格納部2002に一旦格納し(ステップS9)、イネーブラAの輻輳が解消した後にステップS5へ進み、APIリクエスト格納部2002に格納していたAPIリクエストをイネーブラAへ順次転送する。
一方、ステップS8において、APIリクエスト格納部2002に空き容量がない場合、APIリクエスト調整部2001は、受信したAPIリクエストの処理優先度と、APIリクエスト格納部2002に格納されている各APIリクエストの処理優先度と、をそれぞれ算出する(ステップS10)。
そして、APIリクエスト調整部2001は、受信したAPIリクエストの処理優先度が複数の処理優先度のうち最も小さいか否かを判定し(ステップS11)、受信したAPIリクエストの処理優先度が最も小さい場合には、その受信したAPIリクエストを破棄する(ステップS12)。その後、ステップS5→ステップS6→ステップS7へ進む。
一方、APIリクエスト格納部2002に格納されている各APIリクエストの中に最も処理優先度が小さいものがある場合、APIリクエスト調整部2001は、その最も処理優先度の小さいAPIリクエストをAPIリクエスト格納部2002から削除し(ステップS13)、ステップS9へ進み、受信していたAPIリクエストをAPIリクエスト格納部2002に格納する。その後、ステップS5→ステップS6→ステップS7へ進む。
そして、ステップS7の後はステップS2に戻り、受信中のAPIリクエストが他のイネーブラを引き続き要求している場合には、該当のイネーブラに対応するバッファ部202が、ステップS4〜ステップS13と同様の処理を行う(ステップS100)。その後、受信中のAPIリクエストがイネーブラへの要求を完了した場合に、API提供装置20は、受信していたAPIリクエストに対するAPIレスポンスを要求元のアプリケーションへ返信する(ステップS14)。
続いて、APIリクエストの処理優先度の算出方法及び破棄するAPIリクエストの決定方法について説明する。この動作は、上述したステップS10〜ステップS13で行われる。APIリクエスト調整部2001は、データ記憶部2003に記憶しているAPIリクエスト処理情報を参照することができる。このAPIリクエスト処理情報には、図4に示したように処理済イネーブラ数が格納されている。
ここで、イネーブラのリソースの有効利用を考えると、APIリクエストが次のイネーブラを利用する迄に既に利用していた処理済のイネーブラを再び利用・実行することは避けるべきである。それゆえ、本実施の形態では、処理済イネーブラ数に応じてAPIリクエストの処理優先度を決定する。具体的には、処理済イネーブラ数の大きい方のAPIリクエストの処理優先度を高くし、処理済イネーブラ数の小さい方のAPIリクエストの処理優先度を低くする。
例えば、図4に示したAPIリクエスト処理情報のAPIリクエストがイネーブラDに対応するバッファ部202のAPIリクエスト格納部2002に格納されている場合、APIリクエスト調整部2001は、処理順「1」のAPIリクエストの処理優先度を、該APIリクエストの処理済イネーブラ数が「2」であることから、「2」と算出する。同様に、処理順「2」のAPIリクエストの処理優先度を「3」、処理順「3」のAPIリクエストの処理優先度を「0」と算出する。
ここで、新たに受信したAPIリクエストが図5(a)に示すAPIリクエスト情報を備える場合、このAPIリクエストの処理優先度についても同様の計算方法より「0」と算出する。その後、APIリクエスト調整部2001は、新たに受信したAPIリクエストとAPIリクエスト格納部2002に格納されているAPIリクエストとの各処理優先度を比較し、新たに受信したAPIリクエストの処理優先度が最も小さいので、その新たに受信したAPIリクエストを破棄する。これにより、APIリクエスト格納部2002に格納されていた処理順が「1」のAPIリクエストについて、イネーブラAとイネーブラBの処理が再利用・再実行されることを防ぐことができる。なお、処理優先度が同じ場合、APIリクエスト格納部2002に格納されているAPIリクエストの処理を優先する。
一方、新たに受信したAPIリクエストが図5(b)に示すAPIリクエスト情報を備える場合、このAPIリクエストの処理優先度についても同様の計算方法より「3」と算出する。この場合、APIリクエスト格納部2002に格納されているAPIリクエストの方に処理優先度が低いものがあるので、その中から処理優先度が最も低いAPIリクエストをAPIリクエスト格納部2002から削除し、新たに受信したAPIリクエストをAPIリクエスト格納部2002に格納する。なお、図4に示したAPIリクエスト処理情報の場合、APIリクエスト格納部2002には処理優先度が最も低いAPIリクエストが2つあるが(処理順「3」のAPIリクエストと処理順「9」のAPIリクエスト)、この場合は処理順の早い方(処理順「3」のAPIリクエスト)を優先する。
以上より、本実施の形態によれば、イネーブラ毎にバッファ部202を設け、バッファ部202は、複数のAPIリクエストが自身のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数を記憶するデータ記憶部2003と、アプリケーションから要求された複数のAPIリクエストの各処理優先度をそれぞれ求め、複数のAPIリクエストが利用予定の自身のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄するAPIリクエスト調整部2001と、を備え、APIリクエスト調整部2001は、複数のAPIリクエストの各処理優先度を各イネーブラの数に応じて決定する。具体的には、イネーブラの数の最も小さいAPIリクエストを破棄する。
つまり、過去に利用したイネーブラ数の大きいAPIリクエストの処理を優先するので、該APIリクエストが上記自身のイネーブラを利用する迄にそれぞれ利用していたイネーブラが再利用・再実行されることを防止することができる。これにより、イネーブラの再利用・再実行による無駄なリソース消費を低減でき、イネーブラのリソースを有効に活用することができる。
<第2の実施の形態>
第1の実施の形態では、APIリクエストの処理優先度を処理済イネーブラ数に応じて決定する場合について説明した。この方法は、全てのイネーブラの処理リソースが等価(例えば、イネーブラAとイネーブラBの2つのイネーブラ装置10の処理能力は等しい)であると仮定している。
一方、複数のイネーブラは、それぞれ、APIリクエストを処理するための処理リソースが異なる可能性が高い。そこで、第2の実施の形態では、APIリクエストが所定のイネーブラを利用する迄に消費したリソースの量に応じて処理優先度を決定する場合について説明する。なお、本実施の形態に係るAPI提供装置20の構成は、第1の実施の形態で用いたAPI提供装置20の構成と同様である。
リソースの量とは、イネーブラがAPIリクエストを処理するのに要した計算リソースである。例えば、「CPU使用率×時間」等、APIリクエストの処理に要したリソース要素(例えば、CPU使用率、時間、占有したメモリ量等)を加算・積算した合計値である。算出された消費リソース量は、図4に示したAPIリクエスト処理情報に追加される。なお、各APIリクエストについて、過去に同じAPIリクエストを受け付けていた場合にはその受付数、流通する任意のデータ数(例えば、APIリクエストに含まれるパラメータ数)等の統計量を算出し、その統計値を重みとして各APIリクエストの消費リソース量に加算又は積算してもよい。
ここで、第1の実施の形態と同様にイネーブラのリソースの有効利用を考えると、次のイネーブラを利用する迄に既に消費したリソース量の大きいAPIリクエストを再び処理することは避けるべきである。それゆえ、本実施の形態では、消費していたリソース量の大きい方のAPIリクエストの処理優先度を高くし、消費していたリソース量の小さい方のAPIリクエストの処理優先度を低くする。
それゆえ、図3に示したステップS1〜ステップS13において、APIリクエスト調整部2001は、受信したAPIリクエストとAPIリクエスト格納部2002に格納されている複数のAPIリクエストとの過去の各消費リソース量をそれぞれ求め、最も消費リソース量の小さいAPIリクエストを破棄する。
例えば、1秒当たり5つのAPIリクエストを処理できるイネーブラA、1秒当たり10つのAPIリクエストを処理できるイネーブラBがある場合、各イネーブラA,Bは1つのAPIリクエストを処理するのに1秒かかると仮定すると、1つのAPIリクエストが占有するCPUやメモリ量等のリソース量は、イネーブラAで20%となりイネーブラBで10%となる。この場合、イネーブラAのリソースの方がリソース消費量の点で価値が稀少なので、イネーブラBを利用したAPIリクエストよりもイネーブラAを利用したAPIリクエストを優先し、イネーブラBを利用したAPIリクエストを破棄する。
以上より、本実施の形態によれば、イネーブラ毎にバッファ部202を設け、バッファ部202は、複数のAPIリクエストが自身のイネーブラを利用する迄にそれぞれ消費した各リソースの量を記憶するデータ記憶部2003と、アプリケーションから要求された複数のAPIリクエストの各処理優先度をそれぞれ求め、複数のAPIリクエストが利用予定の自身のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄するAPIリクエスト調整部2001と、を備え、APIリクエスト調整部2001は、複数のAPIリクエストの各処理優先度を各リソースの量に応じて決定する。具体的には、消費リソース量の最も小さいAPIリクエストを破棄する。
つまり、過去に消費したリソース量の大きいAPIリクエストの処理を優先するので、該APIリクエストが上記自身のイネーブラを利用する迄にそれぞれ利用していたイネーブラが再利用・再実行されることを防止することができる。これにより、イネーブラの再利用・再実行による無駄なリソース消費を低減でき、イネーブラのリソースを有効に活用することができる。
<第3の実施の形態>
第1の実施の形態及び第2の実施の形態では、図2に示した構成に基づき、バッファ部202の内部でAPIリクエストの優先度付を行う場合について説明した。一方、図1に示したAPI提供装置20の内部構成、図2に示したバッファ部202の内部構成は、あくまでも一例である。例えば、API提供装置20が自身で全てのイネーブラを管轄する集中制御のような方法も考えられる。この場合、例えば、バッファ部202は、APIリクエスト格納部2002及びデータ記憶部2003のみを備え、APIリクエスト調整部2001は、バッファ内の機能ではなく、バッファ部202の外部において、API提供装置20の内部直下の機能として、APIアグリゲーション部201と並列に配置される。
以上、各実施の形態によれば、APIリクエストが破棄された際の再処理による無駄なリソースの利用を低減することができる。これにより、あるイネーブラにて輻輳が発生した場合に、再処理による当該イネーブラ以外のイネーブラでの輻輳を防止することができる。再処理を防止することにより、他のアプリケーションがイネーブラを利用することができ、イネーブラのリソース利用の効率化を達成することができる。
なお、イネーブラの利用順序性が無いAPIリクエスト(例えば、イネーブラA,Bを利用する必要はあるが、イネーブラA→BでもイネーブラB→Aでも提供サービスに影響がないAPIリクエスト)場合、各イネーブラのリソースの空き状況を見て、空いているイネーブラから先にリクエストすることも可能である。この場合、APIアグリゲーション部201により、APIリクエストの転送先が適宜決定される。
各実施の形態では、APIリクエストの処理優先度をイネーブラの数又はリソースの量に応じて決定する場合について説明したが、バッファ部202に記憶する情報には拡張性があるので、必ずしもイネーブラの数又はリソースの量である必要はない。APIリクエスト毎の優先度付けを行える指標であればどのような情報でも構わない。
最後に、本実施の形態で説明した、イネーブラ装置10、API提供装置20、アプリケーション利用装置30は、CPU、メモリ、ハードディスク等を備えたコンピュータ(情報処理装置)で実現できる。また、イネーブラ装置10、API提供装置20、アプリケーション利用装置30としてコンピュータを機能させるためのプログラムや該プログラムの記憶媒体を作成することも可能である。
1…システム
10…イネーブラ装置
20…API提供装置
201…APIアグリゲーション部
202…バッファ部
2001…APIリクエスト調整部
2002…APIリクエスト格納部
2003…データ記憶部
30…アプリケーション利用装置

Claims (6)

  1. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整部と、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数、又は前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ消費した各リソースの量を記憶する記憶部と、を備え、
    前記調整部は、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定する
    ことを特徴とするAPI提供装置。
  2. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整部と、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数を記憶する記憶部と、を備え、
    前記調整部は、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数に応じて決定する
    ことを特徴とするAPI提供装置。
  3. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整部と、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数又は消費した各リソースの量を記憶する記憶部と、を備え、
    前記調整部は、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定し、前記イネーブラの数又は前記リソースの量の最も小さいAPIリクエストを破棄する
    ことを特徴とするAPI提供装置。
  4. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置で行うAPIリクエスト制御方法において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整ステップと、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数、又は前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ消費した各リソースの量を記憶部に記憶する記憶ステップと、を行い、
    前記調整ステップでは、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定する
    ことを特徴とするAPIリクエスト制御方法。
  5. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置で行うAPIリクエスト制御方法において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整ステップと、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数を記憶部に記憶する記憶ステップと、を行い、
    前記調整ステップでは、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数に応じて決定する
    ことを特徴とするAPIリクエスト制御方法。
  6. 複数のイネーブラで提供される複数の機能をそれぞれAPIとしてアプリケーションに提供するAPI提供装置で行うAPIリクエスト制御方法において、
    アプリケーションから要求された複数のAPIリクエストであって、前記複数のイネーブラのうち少なくとも2つ以上を利用する複数のAPIリクエストの各処理優先度をそれぞれ求め、前記複数のAPIリクエストが利用予定の所定のイネーブラで更なるAPIリクエストを受け付けられない場合、最も処理優先度の低いAPIリクエストを破棄する調整ステップと、
    前記複数のAPIリクエストが前記所定のイネーブラを利用する迄にそれぞれ利用した各イネーブラの数又は消費した各リソースの量を記憶部に記憶する記憶ステップと、を行い、
    前記調整ステップでは、
    前記複数のAPIリクエストの各処理優先度を前記各イネーブラの数又は前記各リソースの量に応じて決定し、前記イネーブラの数又は前記リソースの量の最も小さいAPIリクエストを破棄する
    ことを特徴とするAPIリクエスト制御方法。
JP2016159565A 2016-08-16 2016-08-16 Api提供装置及びapiリクエスト制御方法 Active JP6595419B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016159565A JP6595419B2 (ja) 2016-08-16 2016-08-16 Api提供装置及びapiリクエスト制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016159565A JP6595419B2 (ja) 2016-08-16 2016-08-16 Api提供装置及びapiリクエスト制御方法

Publications (2)

Publication Number Publication Date
JP2018028756A JP2018028756A (ja) 2018-02-22
JP6595419B2 true JP6595419B2 (ja) 2019-10-23

Family

ID=61249090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016159565A Active JP6595419B2 (ja) 2016-08-16 2016-08-16 Api提供装置及びapiリクエスト制御方法

Country Status (1)

Country Link
JP (1) JP6595419B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2022190246A1 (ja) * 2021-03-10 2022-09-15

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015156058A (ja) * 2014-02-19 2015-08-27 株式会社Nttドコモ キャッシュ制御システム、キャッシュ装置、及びキャッシュ優先制御方法

Also Published As

Publication number Publication date
JP2018028756A (ja) 2018-02-22

Similar Documents

Publication Publication Date Title
US11240332B2 (en) Subscription based event notifications
JP3382953B2 (ja) 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置
US10015062B2 (en) Techniques for analytics-driven hybrid concurrency control in clouds
JP6636142B2 (ja) スケールアウト関連付けの方法および装置、ならびにシステム
JP6881575B2 (ja) 資源割当システム、管理装置、方法およびプログラム
WO2020164290A1 (zh) 策略控制方法、装置及系统
WO2017092505A1 (zh) 云计算环境下虚拟资源弹性伸展的方法,系统和设备
US20200159565A1 (en) Predicting transaction outcome based on artifacts in a transaction processing environment
CN110430142B (zh) 用于控制流量的方法和装置
US11316916B2 (en) Packet processing method, related device, and computer storage medium
WO2017032152A1 (zh) 将数据写入存储设备的方法及存储设备
CN109428926B (zh) 一种调度任务节点的方法和装置
CN113032410B (zh) 数据处理方法、装置、电子设备及计算机存储介质
US10044632B2 (en) Systems and methods for adaptive credit-based flow
US8521902B2 (en) Shared buffer for connectionless transfer protocols
JP6595419B2 (ja) Api提供装置及びapiリクエスト制御方法
JP6289879B2 (ja) 通信端末、通信方法及びプログラム
US20190319901A1 (en) Scalable, real-time messaging system
JP2008124977A (ja) メッセージ配送方法、装置及びプログラム
TWI571077B (zh) 整合網路裝置及其服務整合方法
CN109660589A (zh) 请求处理方法及装置、电子设备
CN114816713A (zh) 函数调用方法及系统
US20220350656A1 (en) Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling
JP7253104B1 (ja) メッセージ配信装置、メッセージ配信方法、及び、メッセージ配信プログラム
JP2024084228A (ja) メッセージ配信装置、メッセージ配信方法、及び、メッセージ配信プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180618

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190926

R150 Certificate of patent or registration of utility model

Ref document number: 6595419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150