JP2018097837A - サービスシステム、その制御方法、およびそのプログラム - Google Patents

サービスシステム、その制御方法、およびそのプログラム Download PDF

Info

Publication number
JP2018097837A
JP2018097837A JP2017094975A JP2017094975A JP2018097837A JP 2018097837 A JP2018097837 A JP 2018097837A JP 2017094975 A JP2017094975 A JP 2017094975A JP 2017094975 A JP2017094975 A JP 2017094975A JP 2018097837 A JP2018097837 A JP 2018097837A
Authority
JP
Japan
Prior art keywords
api
limit value
api execution
external
service
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.)
Granted
Application number
JP2017094975A
Other languages
English (en)
Other versions
JP2018097837A5 (ja
JP6957194B2 (ja
Inventor
俊介 茂垣
Shunsuke Mogaki
俊介 茂垣
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of JP2018097837A publication Critical patent/JP2018097837A/ja
Publication of JP2018097837A5 publication Critical patent/JP2018097837A5/ja
Application granted granted Critical
Publication of JP6957194B2 publication Critical patent/JP6957194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1287Remote printer device, e.g. being remote from client or server via internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0246Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
    • H04L41/0273Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using web services for network management, e.g. simple object access protocol [SOAP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Abstract

【課題】 複数の仮想サーバーで提供されているWebサービスが、APIスロットリング機能を実装している場合に、各仮想サーバーのAPI実行回数制限値を自動で決定する仕組みがなかった。
【解決手段】 Webサービスを実現している仮想サーバーの台数とAPI実行回数制限値とに基づき、仮想サーバー1台のAPI実行回数制限値を決定する決定手段と、APIが呼び出された場合、決定手段によって決定されたAPI実行回数制限値に基づき、Webサービスを提供する、またはAPIの呼び出しをエラーとして処理する制御手段と、を有するサービスシステム。
【選択図】 図4

Description

本発明は、公開されたAPIが実行されたことに応じてWebサービスを提供するサービスシステム、その制御方法、およびそのプログラムに関するものである。
近年、複数のWebサービスを連携させる形態が増えている。例えば、公開されたWebサービスのAPI(Application Programming Interface)を利用し、Webサービス同士を連携させるマッシュアップと呼ばれる方法がある。この方法は、連携先のWebサービスが公開しているAPIを連携元のWebサービスが実行し連携先Webサービスを利用することでWebサービス同士の連携を行う方法である。
そのWebサービスにおける従来技術として、APIスロットリングと呼ばれる機能がある。Webサービスにおいて、単位時間当たりに実行できるAPI実行回数に制限値を設け、ユーザー端末またはその他のWebサービスを始めとしたクライアントサービスから大量にAPIが実行されることを抑制する。クライアントが実行したAPIの実行回数が制限値を超えた場合に一定時間Webサービスの利用を禁止するといったペナルティを課すWebサービスなども存在する。特許文献1には、APIスロットリング機能を用いて、大容量データの処理を行う電子システムについて開示されている。
さらに、Webサービスにおける従来技術として、Webサービスを複数の仮想サーバーによって提供することがある。仮想サーバーとは、物理的なサーバーコンピューター群を仮想化技術によって論理的なコンピューターに分割し、分割された論理コンピューター中に独立したOSを具備させた論理的なコンピューターのことである。
特開2016−126801
複数の仮想サーバーで提供されているWebサービスが、APIスロットリング機能を実装した場合に、各仮想サーバーが実行可能なAPIの実行回数の制限値(以下、API実行回数制限値)を各仮想サーバーに自動で決定する仕組みがない。
本願発明は、各仮想サーバーの新たなAPI実行回数制限値を自動で決定することで、ユーザーが手動でAPI実行回数制限値を決定する煩わしさを解消することを目的とする。
夫々の仮想サーバー上にWebサービスを実現し、公開されたAPIがクライアントサービスに呼び出されたことに応じて前記Webサービスを提供するサービスシステムであって、
前記Webサービスを実現している仮想サーバーの台数と前記APIが実行される回数を制限するために利用されるAPI実行回数制限値とに基づき、仮想サーバー1台のAPI実行回数制限値を決定する決定手段と、前記APIが呼び出された場合、前記決定手段によって決定されたAPI実行回数制限値に基づき、前記Webサービスを提供する、または前記APIの呼び出しをエラーとして処理する制御手段と、を有するサービスシステム。
各仮想サーバーのAPI実行回数制限値を自動で決定することで、ユーザーが手動でAPI実行回数制限値を決定する煩わしさを解消することが可能となる。
サービスシステム全体図である。 情報処理装置200の内部構成図である。 各装置の機能のブロック図である。 本発明の実施例1の処理の流れを示すフローチャートである。 本発明の実施例1の処理の流れを示すフローチャートである。 本発明の実施例2の処理の流れを示すフローチャートである。 本発明の実施例3の処理(パターン2)の流れを示すフローチャートである。 本発明の実施例3〜5の処理(パターン1)の流れを示すフローチャートである。 本発明の実施例4、5の処理(パターン2)の流れを示すフローチャートである。 (a)、(b)、(c)、(d)本発明の実施例2、3、4(パターン1)を示すイメージ図である。 (a)、(b)、(c)、(d)本発明の実施例2、3、4(パターン2)を示すイメージ図である。
以下、本発明を実施するための最良の形態について実施例を用いて説明する。Webサービスとは、サービスシステムを構成するサーバーコンピューター上で実行されたWebアプリケーションが提供する機能または機能群のことである。本願発明におけるWebサービスは仮想サーバーにおいて実現される。仮想サーバーとは、物理的なサーバーコンピューター群を仮想化技術によって論理的なコンピューターに分割し、分割された論理コンピューター中に独立したOSを具備させた論理的なコンピューターである。
図1を用いて、本実施形態に係るサービスシステム140とそのネットワークを構成している各種装置について説明する。図1では、インターネット100を経由してクライアントシステム110、外部サービスシステム120または端末130が、サービスシステム140を構築するサーバーコンピューターまたはサーバーコンピューター群と接続している状態が示されている。クライアントシステム110は、サービスシステム140が公開するAPIを実行するサービスシステムである。外部サービスシステム120は、各APIによって実行されたWebサービスが利用するサービスシステムであり、マッシュアップする際に連携先となるWebサービスである。端末130は、WebブラウザーがインストールされているPCやスマートフォン、タブレットなどの携帯端末や画像形成装置を想定している。以下、単にAPIと称した場合はサービスシステム140が公開するAPIを指し示しており、外部APIと称した場合は外部サービスシステム120が公開するAPIを指し示していることに留意されたい。
次に図2を用いて、図1に示したサービスシステム140を構成するサーバーコンピューターである情報処理装置200の内部構成について説明する。図2は、情報処理装置200の内部構成について示したブロック図である。ユーザーインターフェース201は、ディスプレイ、キーボード、マウスなどによる情報の入出力を行うハードウェアである。これらのハードウェアを備えないコンピューターは、リモートデスクトップなどにより他のコンピューターから接続・操作することも可能である。
ネットワークインターフェース202は、LANなどのネットワークに接続して、他のコンピューターやネットワーク機器との通信を行うハードウェアである。CPU203は、ROM204、RAM205、二次記憶装置206などからプログラムを取り出してプログラムの命令を実行し、情報処理装置200の制御を行うユニットである。
ROM204は、アプリケーションプログラムおよびOSを含む組込済みプログラム、およびデータ等が記録されている記憶装置である。RAM205は、CPU203が命令を実行する際に使用するワークメモリである。ROM204に保存されていたプログラムがRAM205へとロードされ、そのプログラムの命令をCPU203が順次読みだし命令を実行する。二次記憶装置206は、HDDに代表されるような外部記憶装置である。各部は入出力インターフェース207を介して接続されている。
以上、サービスシステム140の情報処理装置200について述べたが、外部サービスシステム120を構成するサーバーコンピューターおよび端末130も情報処理装置200と同様の構造である。
特筆する点として1点ここで説明をしておくと、端末130は二次記憶装置206に保存されているアプリケーションプログラムがRAM205にロードされることで、端末130はWebブラウザーの機能を実現する。ユーザーがそのWebブラウザーからWebサービスにアクセスしWebサービスの画面を操作することで、WebブラウザーによってAPIが実行される。その結果、サービスシステム140のWebサービスをユーザーが端末130を用いて利用できる。即ち、Webサービスはマッシュアップ以外の方法でも利用されるということである。
次に図3を用いてWebサービスを実現するための機能を説明する。以降の説明では、仮想サーバーにオートスケーリング機能が実装されているものとして説明するが、オートスケーリング機能が実装されていない場合でも本願発明は成り立つ。オートスケーリング機能とは、サービスシステム140の負荷に応じて自動で仮想サーバーの台数を増減させる機能のことである。オートスケーリング機能により、サービスシステムの負荷が一定以上に高まると仮想サーバー台数を増やして性能劣化を防ぎ、負荷が一定以下に低いときには仮想サーバーの台数を減らして仮想サーバー運用コストを削減することが可能となる。実施例では、後述するオートスケーリンググループ303によってオートスケーリング機能が実現する。
図3は、オートスケーリンググループ303が管理する仮想サーバー302、DBサーバー305および負荷分散装置350の各装置に構成されるモジュール群を示したブロック図である。仮想サーバー302は、ROM204に組み込まれた仮想サーバー302を実現するためのプログラムをRAM205にロードすることで実現され、RAM205の一部または全体は仮想サーバー302を実現するために使用される。仮想サーバー302上には、仮想的な二次記憶装置とRAMとROMとが存在し、仮想的な二次記憶装置に保存されていたプログラムを仮想的なRAMへロードさせることで、仮想サーバー302はアプリケーションモジュール300やAPI実行制御モジュール301を実現する。アプリケーションモジュール300やAPI実行制御モジュール301によりWebサービスが実現される。
なお、仮想サーバー302は、1台のサーバーコンピューター上に複数台の仮想サーバーを構築する場合もあれば、複数のサーバーコンピューターにより一つの仮想サーバーを構築する場合も考えられる。図3では、オートスケーリンググループ303に2つの仮想サーバー302が含まれているが、一つの仮想サーバー302を含む場合、あるいは3つ以上の仮想サーバー302を含む場合等も考えられる。
アプリケーションモジュール300はWebサービスを実現する機能を有しており、そのWebサービスを実行させるためのAPIを外部に公開し、クライアントシステム110や端末130からの実行要求に応じてWebサービスを提供する。実施例1におけるWebサービスは、クラウドシステム上に実装された他のWebサービスを利用する際の認証および認可処理を行う認証・認可サービスを想定しているが、Webサービスの内容はこれに限るものではない。帳票データを作成するデータ処理を実行する帳票サービス、印刷データを作成するデータ処理を実行する印刷サービス、およびプリンターの情報を管理しレポートデータを作成するデータ処理を実行するプリンター管理サービス等も考えられる。アプリケーションモジュール300により実現されるWebサービスは、DBサーバー305または外部サービスシステム120が公開する外部APIを実行することも可能であり、外部APIを実行した結果を利用し自身のWebサービスを実行することによりマッシュアップが可能となる。
オートスケーリンググループ303は、仮想サーバー302の台数を監視する機能であり、必要に応じて仮想サーバー302の台数の増減を行い、その増減結果を管理する。オートスケーリンググループ303は、ROM204に保存されていたプログラムをRAM205へロードし、RAM205に保存されたプログラムから命令を順次読みだし、読みだした命令を実行することで実現される。
オートスケーリンググループ303は、管理している仮想サーバー302の負荷を監視し、負荷が大きくなった場合に仮想サーバー302の台数を増やし、負荷が小さくなった場合に仮想サーバー302の台数を減らす。このように仮想サーバー302の台数を負荷の監視結果に基づき増減させることをオートスケーリングと称する。本願発明における負荷の確認とは、仮想サーバー302におけるCPU使用量とメモリ使用量などのリソースの消費量、および仮想サーバー302が受け付けるアクセス数などを監視し、負荷の状況を把握することである。オートスケーリンググループ303が仮想サーバー302の台数を変更する際の判定方法は仮想サーバー302の負荷を監視する方法に限らない。例えば、後述の負荷分散モジュール304へのアクセス数の監視の他、仮想サーバー302が処理するリクエストをキューに保存する場合はそのキューに格納されたジョブ数を監視する方法が考えられる。
負荷分散モジュール304は、インターネット100を介して送信されてきたリクエストを分散して仮想サーバー302へ配信する機能を提供し、具体的にはSLB(Server Load Balancer)がある。ただし、負荷分散モジュール304はサービスシステム140とは別のサービスシステムで実現してもよく、サービスシステム140が負荷分散装置350と同等の機能を有するようにしてもよい。負荷分散モジュール304は、二次記憶装置206に保存されていたプログラムをRAM205へロードさせることで実現される。DB(DataBase)サーバー305は、仮想サーバー302が利用するデータを管理するサーバーである。なお、DBサーバー305は仮想サーバー302上に構成されていても良く、不図示のイントラネットで接続された別のサービスシステムとして構成されても良い。
DBサーバー305はデータ管理モジュール310を持つ。DBサーバー305は、二次記憶装置206に保存されていたプログラムをRAM205へロードさせることでデータ管理モジュール310を実現する。データ管理モジュール310の実現により、Webサービスが利用するデータの管理、およびアクセス要求したWebサービスが各データにアクセスできるか否かのアクセス可否を判断する。DBサーバー305は必ずしも必要というわけではなく、APIの機能を実現する上で必要なデータをDBサーバー305ではなく外部サービスシステム120などから取得することも可能である。
API実行制御モジュール301は、Webサービスが公開しているAPIの実行要求に対し実行可能か否かを判定し、その結果に基づいてAPIの実行を制御するAPIスロットリング機能を提供している。APIスロットリング機能を提供するため、API実行制御モジュール301は二次記憶装置206に保存されていたプログラムをRAM205へロードさせることでその機能を実現する。API実行制御モジュール301は各APIの単位時間あたりのAPI実行回数制限値を管理している。本願発明におけるAPI実行回数とは、APIが実行された結果カウントされる回数であり、例えば、APIが1回実行されると「1」が記憶される。API実行制御モジュール301が、API実行回数制限値とAPI実行回数とを比較して、API実行回数がAPI実行回数制限値以下であれば、APIを実行するための処理を行い、API実行回数がAPI実行回数制限値を上回れば、呼び出されたAPIをエラーとして処理する。これについては、後述の図5で説明する。また、API実行回数とAPI実行回数制限値との比較は、Webサービスが公開する全てのAPIに対して行うとは限らず、特定のAPIが呼び出された場合でも、その特定のAPIのAPI実行回数とAPI実行回数制限値とを比較することもある。後述の実施例では、Webサービスが公開する全てのAPIに対して、比較を行う場合を例に説明する。
WebサービスがDBサーバー305や外部APIを実行する場合、DBサーバー305や外部サービスシステム120がそのリクエストの処理に耐えられない可能性がある。そうした場合に備え、Webサービス自身のAPIの実行回数に制限をかけるが、必ずしも外部と連携することだけを想定してAPIの実行に制限をかけるものではない。本願発明は仮想サーバー302がオートスケーリングし仮想サーバー302の台数が変動したとしても、API実行回数制限値を超えることのないよう、もしくはAPI実行回数に大幅な余剰が発生しないようにAPIスロットリングを行うことを目的としていることを改めて記載しておく。
なお、API実行回数制限値はDBサーバー305や外部サービスシステム120の許容できる上限値を考慮した値である必要もなく、またその上限値そのままの値を利用する必要もない。例えば、外部サービスシステム120の仕様を考慮し単位時間当たりに実行可能なAPIの実行回数が100回である場合、API実行回数制限値は「100」ではなく「75」としてもよい。API実行回数制限値「100」をそのままAPI実行回数制限値として利用してしまうと、APIの実行回数が1回でもAPI実行回数制限値「100」を超えた場合に外部サービスシステム120がWebサービスにペナルティを課すことも考えられるので制限値に余裕を持たせている。しかし、値「100」をAPI実行回数制限値としてそのまま利用しても本願発明は実施可能である。
[実施例1]
実施例1では、本願発明の目的を達成するための基本的な形態を説明する。まずは、図4を用いてAPI実行時におけるフローを説明する。なお、APIの実行処理は各仮想サーバー302で独立して実行されている。Webサービスが機能群である場合は複数のAPIを公開することもあり、実施例1ではアプリケーションモジュール300におけるWebサービスが「API1」、「API2」、「API3」の3つのAPIを公開する場合を考える。表1にAPI実行制御モジュール301が管理しているAPI実行回数制限値を示す。表1で示したAPI実行回数制限値は、DBサーバー305の実行制限値を考慮してサービスシステム140を構築時にユーザーが設定しAPI実行制御モジュール301がその設定値を保存しているものとする。
Figure 2018097837
図4のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図4のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS401において、現在の仮想サーバーの台数を取得する。今回は、API実行制御モジュール301はオートスケーリンググループ303で管理している現在起動中の仮想サーバー302の台数を取得しその台数を確認する。なお、現在の仮想サーバー302の台数取得方法はこの方法に限らず、例えば負荷分散モジュール304が分散先として管理している仮想サーバー302の台数を負荷分散モジュール304から取得し確認しても良い。また、仮想サーバー302の台数を確認するタイミングは、仮想サーバー302のAPI実行回数制限値を決定(または更新)するタイミングでもよく、または定期的に台数を確認する形態等でも問題はない。
実施例1では、現在の仮想サーバー302は「仮想サーバーA302」と「仮想サーバーB302」の2台が存在しているものとする。表2にAPI実行制御モジュール301が管理している仮想サーバー302の台数を示す。
Figure 2018097837
ステップS402において、仮想サーバーの台数とAPI実行回数制限値から、各仮想サーバーに割り振られる新たなAPI実行回数制限値を決定する。今回は、API実行制御モジュール301が仮想サーバー302の台数とAPI実行回数制限値とに基づき各仮想サーバー302に割り振られる新たなAPI実行回数制限値を計算し決定するものとする。具体的には、表1で示したAPI実行回数制限値を表2で示した仮想サーバー302の台数で割り、その値を新たなAPI実行回数制限値として決定する。実施例1では、API実行制御モジュール301が仮想サーバー302の台数をオートスケーリンググループ303から取得して台数を確認し、仮想サーバー302の台数を算出する方法を挙げた。
しかし、オートスケーリンググループ303が仮想サーバー302の台数を管理して新たなAPI実行回数制限値を計算し、API実行制御モジュール301がその計算結果を利用する方法であってもよい。
今回は、仮想サーバー302の台数が2台であるため、表3のように仮想サーバー1台あたりのAPI実行回数制限値としてAPI1は50回、API2は25回、API3は50回がAPI実行制御モジュール301に設定される。
実施例1では、表1で示した各API実行回数制限値を表2に示した仮想サーバー302の台数で割り、仮想サーバー1台あたりのAPI実行回数制限値を算出して決定した。ただし、API実行回数制限値の決定方法はこの算出方法に限らず、不均等にAPI実行回数制限値を各仮想サーバー302に振り分けて、新たなAPI実行回数制限値としてもよい。不均等に割り振る際には仮想サーバー302の台数を把握して割り振り、API実行回数制限値を1回も割り振られない仮想サーバー302はないものとする。
Figure 2018097837
ステップS403において、APIの実行判定を行う。今回は、API実行制御モジュール301がステップS402の結果に基づいてAPIの実行判定を行う。本処理の詳細については図5で後述する。
ステップS404において、APIが実行可能か否かの判定を行う。ステップS403の結果より実行可能と判定された場合はステップS405に進み、アプリケーションモジュール300は要求されたAPIの処理を実行する。ステップS403の結果より実行不可能と判定された場合はステップS407に進む。
ステップS407において、APIの実行エラーを応答する。具体的には、S404においてアプリケーションモジュール300が、APIの実行回数がAPI実行回数制限値を上回ったと判断すると、エラーとなったことをAPIの実行元であるクライアントシステム110または端末130に応答する。
ステップS405において要求されたAPIの処理を実行後、ステップS406において処理が実行できたか否かを判定する。ステップS406において処理が失敗したと判定された場合は、ステップS409でアプリケーションモジュール300が処理の失敗をクライアントシステム110または端末130に応答する。処理が実行された場合はステップS408に進み、処理結果をクライアントシステム110または端末130に応答する。なお、実施例1における図4はAPI実行要求受信時に毎回実行するフローとして説明したが、API実行要求を受信せずとも定期的にフローを実行する形態であってもよい。
図5を用いてステップS403のAPIの実行判定の詳細を説明する。なおAPIの実行判定は、各API実行回数制限値を利用して判定を行う。実施例1では単位時間を1分として説明を行うが、この値に限らず30秒や1時間などとしてもよい。また本判定フローについては幾つかの方法があり、実施例1ではそのうちの代表的な方法を示す。
図5は現在時刻をAPIの実行回数をカウントする基準日時とした場合のAPI実行判定のフローである。ステップS501において、API実行制御モジュール301はAPIの実行履歴から単位時間あたりの各APIの実行回数を取得する。今回は、現在時刻から過去1分間のAPIの実行回数を取得する。表4にAPIの実行履歴を示す。APIの実行履歴は、アプリケーションモジュール300でAPIが実行された際に記録され、実行されたAPIとその実行時間を含む。
実施例1では、「2016年10月1日 10:00:10」にAPIの実行要求がされたものとする。API実行制御モジュール301は、API実行を要求された時間から過去1分間で実行されたAPI1の実行回数を算出する。表4から、APIの実行要求された時刻の1分前である「2016年10月1日 09:59:10」から「2016年10月1日 10:00:10」の間にAPI1は3回実行されているので、API1の実行回数は「3」と判断される。
Figure 2018097837
ステップS502において、APInの実行回数がAPInのAPI実行回数制限値未満かどうかを判定する。今回、API実行制御モジュール301はステップS501の結果とS402で算出したAPInのAPI実行回数制限値との比較を行い、APInのAPI実行回数がAPInのAPI実行回数制限値未満であるか否かを判定する。ステップS502の結果、API1のAPI実行回数がAPI1のAPI実行回数制限値未満だった場合はステップS503に進み、API1のAPI実行回数制限値以上だった場合はステップS504に進む。API1の場合は、ステップS501の結果よりAPI1のAPI実行回数「3」がAPI1のAPI実行回数制限値「50」(表3)を下回るので、ステップS503に進む。
ステップS503において実行可能判定を行い、ステップS504では実行不可能判定を行う。S503、S504はそれぞれAPI実行制御モジュール301によって行われる。ステップS505において、全てのAPIの実行判定が行われたと判断されるまで、ステップS502〜ステップS505の過程は繰り返される。
続いて、単位時間を一定間隔で区切り区切られた間隔でAPI実行回数をカウントし、API実行判定を行うフローを説明する。図5中のステップS501の代わりに、後述のステップS520を実施することで本フローを実施する。ステップS520において、APIのAPI実行回数履歴から過去1分間のAPI実行回数を一定間隔で取得する。S520はAPI実行制御モジュール301によって取得される。表5にこの方式におけるAPI1のAPI実行回数履歴の例を示す。今回は、API実行回数制限値の単位時間を1分としているため、15秒間隔でAPI1のAPI実行回数をカウントしている方式で説明する。なお本方式でのAPI実行回数のカウント間隔は15秒とは限らず、単位時間を複数に分割した時間であればどのような間隔でもよい。
実施例1では、「2016年10月1日 10:00:10」にAPI1の実行要求を受信されたものとする。API実行制御モジュール301は、API1の実行要求された時間を元に過去1分間のAPI1のAPI実行回数をカウントする。具体的には、「2016/10/1 09:59:15−29」、「2016/10/1 09:59:30−44」、「2016/10/1 09:59:45−59」、「2016/10/1 10:00:00−14」の実行回数を加算する。表5から、API1のAPI実行回数は「45」と判断される。
Figure 2018097837
ステップS502からステップS505までは、図5で説明したフローと同じなので、詳細な説明は省略する。今回は、API1のAPI実行回数がAPI1のAPI実行回数制限値以下なので、API1は実行可能と判定される。
続いて、図4、図5を用いて、オートスケーリング機能が実行されて仮想サーバー302の台数が増減した場合について具体的に説明する。まず、Webサービスが仮想サーバーA302と仮想サーバーB302の2台の仮想サーバー302によって提供されている状態で、オートスケーリング機能により仮想サーバーC302が追加されたものとする。
ステップS400でAPI実行制御モジュール301がAPIの実行要求を受信した後、ステップS401において、API実行制御モジュール301によって仮想サーバー302の台数が取得される。今回は、仮想サーバー302の台数が3台となるため、仮想サーバー302の台数「3」が取得される。ステップS402において、表1のAPI実行回数制限値をそれぞれ「3」で割って、API1は33回、API2は16回、API3は33回が仮想サーバー1台当たりのAPI実行回数制限値であると判定される。起動中の仮想サーバーの台数を基に任意の割合でAPI実行回数制限値を各仮想サーバー302に振り分け新たなAPI実行回数制限値としてもよい。また、今回は表1のAPI実行回数制限値が仮想サーバー302の台数である「3」では割りきれなかったため、表6ではその余りを切り捨てた状態で表示しているが、任意の仮想サーバー302にその余りを割り振っても良い。表6に仮想サーバー1台当たりのAPI実行回数制限値を示す。
Figure 2018097837
続いて、ステップS501において、API実行制御モジュール301はAPI実行回数の履歴からAPI実行回数を取得する。今回はAPI1のAPI実行回数を例に説明する。表7Aと表7Bと表7Cに、仮想サーバーA302と仮想サーバーB302と仮想サーバーC302のAPI1の実行履歴を示す。実施例1では各仮想サーバー302に対し「2016年10月1日 10:00:10」にAPI1の実行要求がされたものとする。実行要求されてから過去1分間のAPI1のAPI実行回数は、仮想サーバーA302では表7Aより27回、仮想サーバーB302では表7Bより40回、仮想サーバーC302では表7CよりAPI1が実行されなかったことが確認できる。
Figure 2018097837
Figure 2018097837
Figure 2018097837
ステップS502からステップS505において、API実行制御モジュール301は表6のAPI実行回数制限値と表7のAPI実行回数とを比較して、仮想サーバーA302はAPI実行可能、仮想サーバーB302はAPI実行不可能、仮想サーバーC302は実行可能と判定される。
次に、Webサービスへのアクセス数の減少によりオートスケーリング機能が実行されて、仮想サーバー302の台数が減少した場合について説明する。Webサービスが仮想サーバーA302と仮想サーバーB302と仮想サーバーC302の3台の仮想サーバー302によって提供されていた状態からオートスケーリング機能により仮想サーバーが2台(仮想サーバーA302と仮想サーバーB302)になったものとする。
S400においてAPI実行制御モジュール301がAPIの実行要求を受信した後、ステップS401において、仮想サーバー302の台数がAPI実行制御モジュール301によって取得される。仮想サーバー302の台数が2台になったため、仮想サーバー302の台数「2」が取得される。
ステップS402において、API実行制御モジュール301は仮想サーバー302の台数とAPI実行回数制限値とに基づき各仮想サーバー302に割り振られる新たなAPI実行回数制限値を算出する。表1のAPI実行回数制限値を仮想サーバーの台数「2」で割り、API1は50回、API2は25回、API3は50回が新たなAPI実行回数制限値であると判断される。
続いて、ステップS501において、API実行制御モジュール301がAPI実行回数履歴からAPI実行回数を取得する。表8Aは仮想サーバーA302のAPI1のAPI実行回数履歴を示し、表8Bは仮想サーバーB302のAPI1のAPI実行回数履歴を示す。仮想サーバーA302と仮想サーバーB302に対し、「2016年10月1日 10:01:40」にAPI1の実行要求がされたものとする。実行要求されてから過去1分間のAPI1のAPI実行回数は表8Aより仮想サーバーA302では35回であると判定される。API1のAPI実行回数制限値「50」を表8AのAPI実行回数「35」と、を比較して仮想サーバーA302はAPI実行可能と判定される。
一方、仮想サーバーB302の場合は、実行要求されてから過去1分間のAPI1のAPI実行回数は表8Bより30回と判定される。API1のAPI実行回数制限値「50」と比較して、仮想サーバーB302はAPI実行可能と判定される。
Figure 2018097837
Figure 2018097837
実施例1により、オートスケーリング機能を実行する際に各仮想サーバー302での新たなAPI実行回数制限値を計算しAPI実行回数制限値を更新できる。これにより、公開しているAPIが大量に実行されてサービスシステム140の負荷が高まった際でも、オートスケーリング機能によりWebサービスを停止せずにリクエスト処理しつつ、スロットリング機能によるAPIの実行制限を起動中の仮想サーバー302にかけることができる。一方で、公開しているAPI実行回数が減少した場合には、各仮想サーバー302のAPIの実行能力を十分に生かしたWebサービスを実現できる。
また、オートスケーリング機能が実装されていない場合でも本願発明を用いることで、仮想サーバーの台数(表2)と、予め設定されているAPI実行回数制限値(表1)とに基づき、各仮想サーバー302の新たなAPI実行回数制限値(表3)を決定することができる。
[実施例2]
実施例2では、APIによって実行されたWebサービスが外部APIを実行する場合に、API実行制御モジュール301において新たなAPI実行回数制限値を設定する形態を説明する。
外部サービスシステム120において外部API実行回数制限値が設定されている場合、その回数を超えて外部APIを実行すると外部サービスシステム120の機能を利用できなくなる。ここで、外部API実行回数制限値とは、外部APIが実行された結果カウントされる回数(以下、外部API実行回数)に制限を設けるための値のことである。外部API実行回数が外部API実行回数制限値を上回り、外部サービスシステム120の機能が利用できなくなると、ペナルティにより外部APIを利用しているAPIも使えなくなってしまい、サービスシステム140が停止してしまう。そのため、外部APIを利用する場合は、外部API実行回数制限値に応じてAPI実行回数制限値を設定する必要がある。
本形態では、図6のフローチャートを用いてAPI実行回数制限値を設定する方法について説明する。
また、クライアントサービス400によって実行されたAPI1、API2、API3がWebサービスを実行し、そのWebサービスが外部API1、外部API2、外部API3を実行しているものとする。そのイメージ図を図10(a)に示す。また、以下、区別するために、クライアントシステム110が実現するWebサービスをクライアントサービス400と呼称し、サービスシステム140が実現するWebサービスをリソースサービス401と呼称し、外部サービスシステム120が実現するWebサービスを外部Webサービス402と呼称する(図10、図11を参照)。今回は一例として、クライアントサービス400がAPIを実行する場合を示しているが、端末130が実現するWebブラウザーの機能がAPIを実行する場合も考えられる。
図6のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図6のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS601において、各APIによって実行されたWebサービスが実行する外部APIの情報を取得し、管理する。今回は、各APIによって実行されたリソースサービス401が実行する外部APIの情報を取得する。具体的には、API1によって実行されたリソースサービス401が外部API1を実行し、API2によって実行されたリソースサービス401が外部API2を実行し、API3によって実行されたリソースサービス401が外部API3を実行することを、API実行制御モジュール301が情報として取得し、管理する。
ステップS602において、外部API実行回数制限値を取得し、管理する。今回は、外部API実行回数制限値「600」がAPI実行制御モジュール301によって取得され、表9のようにAPI実行制御モジュール301で管理されるものとする。
Figure 2018097837
ステップS603において、外部API実行回数制限値をAPI数で割り、各API実行回数制限値を算出する。今回は、API実行制御モジュール301が外部API実行回数制限値とAPI数から、各APIのAPI実行回数制限値を決定する。各APIのAPI実行回数制限値を算出する際、ステップS602において取得した外部API実行回数制限値をそのまま外部API実行回数制限値として利用する方法のみならず、外部API実行回数制限値を超えて外部APIが実行されても、外部APIを実行できる値を設定する方法でもよい。今回は後者の方法を採用し、外部API実行回数制限値の75%である「450」を外部API実行回数制限値とする。なお、外部API実行回数制限値を設定する際の割合は75%以外の割合でもよい。後述の実施例でも同様である。また、今回は3つのAPIをリソースサービス401が公開しているため、API数は「3」となる。外部API実行回数制限値「450」をAPI数「3」で割り、算出した値「150」を各APIのAPI実行回数制限値とする。
S604において、サービスシステムが予め保有しているAPI実行回数制限値と、算出したAPI実行回数制限値と、を比較して、より小さい値を新たなAPI実行回数制限値として設定する。今回は、サービスシステム140のAPI実行制御モジュール301が保有しているAPI実行回数制限値(表1)とS603で算出した各APIのAPI実行回数制限値「150」とを比較して、より小さい値を新たなAPI実行回数制限値として設定する。S604で比較した結果を表10に示す。
Figure 2018097837
表1で示したAPI実行回数制限値とステップS603の計算結果とを比較したのは、DBサーバー305の制限値を考慮した上での比較である。DBサーバー305を使用しない場合であれば、ステップS603で得られたAPI実行回数制限値「150」を新たなAPI実行回数制限値として設定してもよい。また、API実行回数制限値が、表1のAPI実行回数制限値を上回っても外部API実行回数制限値を考慮したAPI実行回数制限値(S603)を上回らなければ、少なくともペナルティにより外部Webサービス402が使用できなくなるようなことは起こらないので、S603で算出したAPI実行回数制限値を表1の値と比較するステップは必須ではない。さらに、DBサーバー305を使用している一部APIのAPI実行回数制限値を設定する場合は、そのAPI実行回数制限値を設定するときのみ表1の値と比較すればよい。後述の実施例でも同様である。
表9のように、外部サービスシステム120が公開する外部API実行回数制限値が複数の外部APIの合計値で示されている場合(以下、パターン1)のみならず、複数の外部APIのそれぞれで外部API実行回数制限値が設定されている場合(以下、パターン2)も考えられる。パターン2において新たなAPI実行回数制限値を設定する方法を、図6のフローチャートと図11(a)のイメージ図を用いて説明する。今回は一例として、クライアントサービス400がAPIを実行している場合を示しているが、端末130が実現するWebブラウザーの機能がAPIを実行する場合も考えられる。今回のパターン2は、図6中のステップS603を後述のステップS1000に置き換えることで実現する。
ステップS400とステップS601は実施例2のパターン1と同様の処理で同様の結果が得られるので、詳細の説明は省略する。
ステップS602において、各APIによって実行されたリソースサービス401が実行する外部APIの情報を取得し、管理する。今回、S602はAPI実行制御モジュール301によって実施されるものとする。具体的には、外部API1、外部API2、外部API3の外部API実行回数制限値を取得し、其々「200」であるものとし、表11のようにAPI実行制御モジュール301で管理されるものとする。
Figure 2018097837
ステップS1000において、各外部の外部API実行回数制限値を各API実行回数制限値として設定する。API実行回数制限値を設定する際、ステップS602において取得した外部API実行回数制限値(表11)の75%である「150」をAPI実行回数制限値とする。なお、制限値を設定する際の割合は75%以外の割合でもよい。パターン2の場合は、各外部APIで外部API実行回数制限値があらかじめ決められているため、ステップS603のように外部API実行回数制限値をAPI数で割って各APIのAPI実行回数制限値を算出する必要はない。S604は、実施例2のパターン1と同様の処理で同様の結果(表10)が得られる。
実施例2で設定したAPI実行回数制限値(表10)を仮想サーバー302の台数で割ることで、各仮想サーバー302のAPI実行回数制限値が得られる。仮想サーバー302が2台あるものとすると、実施例2の場合、ステップS604で得られた各API実行回数制限値(表10)を仮想サーバー302の台数である「2」で割り、得られた値「50」が仮想サーバー1台当たりのAPI1とAPI3のAPI実行回数制限値となり、「25」が仮想サーバー1台当たりのAPI2のAPI実行回数制限値となる。
ただし、API実行回数制限値の決定方法はこの算出方法に限らず、不均等にAPI実行回数制限値を各仮想サーバー302に振り分けて、新たなAPI実行回数制限値としてもよい。不均等に割り振る際には、API実行回数制限値を1回も割り振られない仮想サーバー302はないものとする。
実施例2より、仮想サーバー302にオートスケーリング機能が実装されているかどうかに関わらず、外部API実行回数制限値に応じて、各仮想サーバーにおけるAPI実行回数制限値を設定できる。この方法により、外部APIがAPIの機能によって実行され、外部API実行回数制限値によって外部Webサービス402が停止したり、そのペナルティによりリソースサービス401が停止しないように制御することができる。また、外部API実行回数制限値が変更になった場合にも、自動でAPI実行回数制限値を変更して、適切な値を維持することができる。
[実施例3]
実施例3以降では、クライアントサービス400または端末130が実現するWebブラウザーの機能がAPIを1回実行すると、そのAPIによって実行されたリソースサービス401が外部APIを複数回実行する場合を考える。その際の実行回数を、「API実行回数1回当たりの外部API実行回数」と呼称する。(クライアントサービス400または端末130が実現するWebブラウザーの機能がAPIを実行する回数を「API実行回数」、APIによって実行されたリソースサービス401が外部APIを実行する回数を「外部API実行回数」とした。)
上記の実施例2では、API実行回数1回当たりの外部API実行回数が1回の場合で説明している。実施例2で設定した外部API実行回数制限値「200」を、API実行回数1回当たりの外部API実行回数が「2」以上の場合にも適応すると、たとえAPI実行回数が「200」でも外部API実行回数が「400」以上になってしまい、外部API実行回数制限値「200」を越えてしまう。その結果、外部サービスシステム120が利用できなくなり、そのペナルティによりその外部APIを利用しているAPIも使えなくなり、サービスシステム140が停止してしまう。そのため、API実行回数1回当たりの外部API実行回数を考慮してAPI実行回数制限値を設定する必要がある。
パターン1については、図8のフローチャートを用いてAPI実行回数制限値を設定する方法について説明する。また、クライアントサービス400によって実行されたAPI1、API2、API3がリソースサービス401を実行し、そのリソースサービス401によって外部API1、外部API2、外部API3を実行されているものとする。そのイメージ図を図10(b)に示す。
図8のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図8のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS601は実施例2のパターン1と同様の処理で得られるので、詳細の説明は省略する。今回は、API1によって実行されたリソースサービス401が外部API1を2回、API2の場合は外部API2を1回、API3の場合は外部API3を2回実行しているものとする。それに関する情報を、API実行制御モジュール301が取得し、管理する。
ステップS602において、外部API実行回数制限値を取得し、管理する。今回は、API実行制御モジュール301によって外部API実行回数制限値「600」が取得され、実施例2のパターン1のときと同様の情報(表9)がAPI実行制御モジュール301で管理されるものとする。
ステップS801において、API実行回数1回あたりの外部API実行回数の合計値を取得し、管理する。今回、API実行回数1回当たりの外部API実行回数が、API1とAPI2とAPI3で合計5回なので、API実行制御モジュール301は表12のように、このAPI実行回数1回当たりの外部API実行回数の合計値を管理するものとする。
Figure 2018097837
ステップS802において、外部API実行回数制限値を、API実行回数1回当たりの外部API実行回数で割り、API実行回数1回当たりの外部API実行回数に対する外部API実行回数制限値を算出する。具体的には、ステップS602で取得した外部API実行回数制限値(表10)を、ステップS801で取得したAPI実行回数1回当たりの外部API実行回数の合計値(表12)で割ることで、API実行回数1回当たりの外部API実行回数に対する外部API実行回数制限値を算出する。その際、ステップS602で取得した外部API実行回数制限値をそのまま外部API実行回数制限値として利用する方法のみならず、外部API実行回数制限値を超えて外部APIが実行されても外部APIが実行できる値を設定する方法でもよい。今回は後者の方法を採用し、外部API実行回数制限値の75%である「450」を外部API実行回数制限値とする。「450」をAPI実行回数1回当たりの外部API実行回数の合計値「5」で割り、得られた値「90」がAPI実行回数1回当たりの外部API実行回数に対する外部API実行回数制限値となる。その結果、API実行制御モジュール301において、表13のように外部API実行回数制限値が設定されたものとする。
Figure 2018097837
S703において、サービスシステムが予め保有しているAPI実行回数制限値と外部API実行回数制限値と、を比較して、より小さい値を新たなAPI実行回数制限値として設定する。今回は、API実行制御モジュール301が保有しているAPI実行回数制限値(表1)とS802において算出した外部API実行回数制限値(表13)とを比較し、その結果を表14に示す。
Figure 2018097837
表1で示したAPI実行回数制限値とステップS802の計算結果とを比較したのは、DBサーバー305の制限値を考慮した上での比較である。DBサーバー305を使用しない場合であれば、ステップS802で得られたAPI実行回数制限値「90」を各APIのAPI実行回数制限値として設定してもよい。後述の実施例でも同様である。
次にパターン2の場合に、API実行回数制限値を設定する方法を、図7のフローチャートと図11(b)のイメージ図を用いて説明する。今回は一例として、クライアントサービス400がAPIを実行する場合を示しているが、端末130が実現するWebブラウザーの機能がAPIを実行する場合も考えられる。
図7のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図7のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS601は実施例3のパターン1と同様の処理で同様の結果が得られるので、説明は省略する。
ステップS602において、外部API実行回数制限値を取得し、管理する。今回はAPI実行制御モジュール301が、外部API1、外部API2、外部API3の外部API実行回数制限値を取得し、其々が「200」であるものとする。実施例2のパターン2のときと同様の情報(表11)がAPI実行制御モジュール301で管理されるものとする。
ステップS701において、API実行回数1回当たりの外部API実行回数を取得し、管理する。今回は、API1によって実行されたリソースサービス401が外部API1を2回、API2の場合は外部API2を1回、API3の場合は外部API3を2回実行しているので、表15のようにAPI実行制御モジュール301がAPI実行回数1回当たりの外部API実行回数を管理する。
Figure 2018097837
ステップS702において、外部APInの外部API実行回数制限値を、API実行回数1回当たりの外部API実行回数で割り、API実行回数1回当たりの外部API実行回数に対する外部APInの外部API実行回数制限値を算出する。その際、これまでの実施例と同様に、ステップS602において取得した外部API実行回数制限値(表10)の75%である「150」をAPI実行回数制限値とする。API1(n=1)の場合は、ステップS602で得られた外部API1の外部API実行回数制限値「150」を、ステップS701で得られたAPI実行回数1回当たりの外部API実行回数「2」で割り、得られた値「75」が、API1によって実行されたリソースサービス401が外部APIを実行する回数1回に対するAPI1のAPI実行回数制限値となる。
ステップS703は、実施例3のパターン1と同様の処理なので、説明は省略する。API1の場合、API実行制御モジュール301が保有しているAPI1のAPI実行回数制限値「100」と、ステップS702で設定したAPI1のAPI実行回数制限値「75」とを比較し、より小さい値である「75」をAPI1の新たなAPI実行回数制限値として設定する。
ステップS704において、全APIのAPI実行回数制限値を設定したかどうかを判定する。全てのAPI実行回数制限値が設定されたと判断されるまで、ステップS702〜ステップS704の工程は繰り返される。表16に、実施例3のパターン2で設定したAPI実行回数制限値を示す。
Figure 2018097837
実施例3で設定したAPI実行回数制限値(表14、表16)を仮想サーバー302の台数で割ることで、各仮想サーバー302の新たなAPI実行回数制限値が得られる。仮想サーバー302が2台あるものとすると、実施例3のパターン1の場合、表14のAPI実行回数制限値を仮想サーバー302の台数である「2」で割り、得られた値「45」が仮想サーバー1台当たりのAPI1とAPI3のAPI実行回数制限値となり、「25」が仮想サーバー1台当たりのAPI2のAPI実行回数制限値となる。
実施例2のパターン2の場合、表16のAPI実行回数制限値を仮想サーバー302の台数「2」で割り、得られた値「37」が仮想サーバー1台当たりのAPI1とAPI3のAPI実行回数制限値となり、「25」が仮想サーバー1台当たりのAPI2のAPI実行回数制限値となる。ただし、API1とAPI3の各仮想サーバーにおけるAPI実行回数制限値を算出した際の余りは、任意の仮想サーバー302に割り振っても良い。
また、API実行回数制限値の決定方法はこの算出方法に限らず、不均等にAPI実行回数制限値を各仮想サーバー302に振り分けて、新たなAPI実行回数制限値としてもよい。不均等に割り振る際には、API実行回数制限値を1回も割り振られない仮想サーバー302はないものとする。
実施例3より、仮想サーバー302にオートスケーリング機能が実装されているかどうかに関わらず、APIによって実行されたリソースサービス401が外部APIを実行する回数に応じて、各仮想サーバーにおけるAPI実行回数制限値を設定できる。この方法により、外部APIがAPIの機能によって実行され、外部API実行回数制限値によってリソースサービス401や外部Webサービス402が停止しないように制御することができる。また、外部API実行回数制限値が変更になった場合にも、自動でAPI実行回数制限値を変更し、適切な値を維持することができる。
[実施例4]
実施例4では、APIによって実行されたリソースサービス401が複数の外部APIを実行する場合にAPI実行回数制限値を設定する過程を説明する。
パターン1について、図8のフローチャートを用いてAPI実行回数制限値を設定する方法について説明する。また、クライアントサービス400によって実行されたAPI1とAPI2がリソースサービス401を実行し、そのリソースサービス401が外部API1、外部API2、外部API3を実行しているものとする。そのイメージ図を図10(c)に示す。今回は一例として、クライアントサービス400がAPIを実行する場合を示しているが、端末130が実現するWebブラウザーの機能がAPIを実行する場合も考えられる。
図8のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図8のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS601において、各APIによって実行されたWebサービスが呼び出し実行する外部APIの情報を取得する。今回は、API1によって実行されたリソースサービス401が外部API1を1回、外部API2を2回、API2の場合は外部API3を2回実行している。それに関する情報をAPI実行制御モジュール301が取得し、管理しているものとする。
ステップS602において、外部API実行回数制限値を取得し、管理する。今回は、外部API実行回数制限値「600」がAPI実行制御モジュール301によって取得され、実施例2のパターン1のときと同様の情報(表9)がAPI実行制御モジュール301で管理されるものとする。
ステップS801において、API実行回数1回当たりの外部API実行回数の合計値を取得し、管理する。今回、API1とAPI2によって実行されたリソースサービス401が合計で5回外部APIを実行するので、API実行制御モジュール301は表17のように管理するものとする。
Figure 2018097837
ステップS802は、実施例3のパターン1と同様の処理で同様の結果(表13)が得られる。次に、S703において、サービスシステムが予め保有しているAPI実行回数制限値と外部API実行回数制限値と、を比較して、より小さい値を新たなAPI実行回数制限値として設定する。今回は、API実行制御モジュール301が保有しているAPI実行回数制限値(表1)とS802で算出した外部APIの実行回数制限値とを比較して、より小さい値をAPIの新たな実行回数制限値として設定する。比較した結果を表18に示す。
Figure 2018097837
表1で示したAPI実行回数制限値とステップS802の計算結果を比較したのは、DBサーバー305の制限値を考慮した上での比較である。DBサーバー305を使用しない場合であれば、ステップS802で得られた外部API実行回数制限値をAPI実行回数制限値として設定してもよい。
次にパターン2の場合にAPI実行回数制限値を設定する方法を、図9のフローチャートと図11(c)のイメージ図を用いて説明する。今回は一例として、クライアントサービス400がAPIを実行している場合を示しているが、端末130が実現するWebブラウザーの機能がAPIを実行する場合も考えられる。
図9のフローは、仮想サーバー302が起動した場合や、仮想サーバー302がAPIの実行要求をクライアントシステム110または端末130から受信した場合、または仮想サーバー302が定期的に実行することで開始される。図9のフローは例として、S400においてAPIの実行要求が受信されたことにより開始される場合を示している。
ステップS601は実施例4のパターン1と同様の処理で同様の結果が得られるので、説明は省略する。
ステップS602において、外部API実行回数制限値を取得し、管理する。今回は、API実行制御モジュール301が外部API1、外部API2、外部API3の外部API実行回数制限値を取得し、其々の値が「200」であるものとする。実施例2のパターン2のときと同様の情報(表11)がAPI実行制御モジュール301で管理される。
ステップS701において、API実行回数1回当たりの外部API実行回数を取得し、管理する。今回は、API1によって実行されたリソースサービス401が外部API1を1回、外部API2を2回、API2の場合は外部API3を2回実行しているので、表19のようにAPI実行制御モジュール301がAPI実行回数1回当たりの外部API実行回数を管理しているものとする。
Figure 2018097837
ステップS901において、各外部APIの外部API実行回数制限値を、API実行回数1回当たりの外部API実行回数で割り、API実行回数1回当たりの外部API実行回数に対する各外部APIの外部API実行回数制限値を算出する。今回は、ステップS602で取得した外部API実行回数制限値とステップS701で取得したAPI実行回数1回当たりの外部API実行回数とを用いて、API実行回数1回当たりの外部API実行回数に対する各外部の外部API実行回数制限値を算出する。算出する際は、ステップS602において取得した外部API実行回数制限値の75%である「150」をAPI実行回数制限値とする。具体的に外部API1の場合、API1が実行したリソースサービス401によって1回実行されているので、ステップS602で設定した外部API実行回数制限値「150」が、API実行回数1回当たりの外部API実行回数に対する外部API1実行回数制限値となる。また、外部API2の場合は、API1が実行したリソースサービス401によって2回実行されるので、ステップS602で設定した外部API実行回数制限値「150」をAPI実行回数1回当たりの外部API実行回数「2」で割って得られた値「75」が、API実行回数1回当たりの外部API実行回数に対する外部API2の外部API実行回数制限値となる。表20には、API実行回数1回当たりの外部API実行回数に対する外部API実行回数制限値を示し、API実行制御モジュール301に設定されたものとする。
Figure 2018097837
ステップS902において、API実行回数1回当たりの外部API実行回数に対する各外部APIの外部API実行回数制限値の中で、最小値をAPInのAPI実行回数制限値として設定する。具体的にAPI1の場合(n=1)、API1が実行したリソースサービス401が外部API1と外部API2とを実行しているので、ステップS901で算出した結果(表20)である「150」と「75」とを比較して、より小さい値である「75」がAPI1のAPI実行回数制限値として設定される。
ステップS604は、実施例4のパターン1と同様の処理なので、説明は省略する。API1の場合、API実行制御モジュール301が保有しているAPI1のAPI実行回数制限値「100」と、ステップS902で設定したAPI1のAPI実行回数制限値「75」とを比較し、より小さい値である「75」をAPI1のAPI実行回数制限値として設定する。
ステップS903において、全APIのAPI実行回数制限値を設定したかどうかを判定する。全てのAPI実行回数制限値が設定されたと判断されるまで、ステップS902〜ステップS903の工程は繰り返される。表21に、実施例4のパターン2で設定したAPI実行回数制限値を示す。
Figure 2018097837
実施例4は、各APIが実行したリソースサービス401が重複せずに外部APIを実行する形態に関するものである。次に、各APIが実行したリソースサービス401が重複して外部APIを実行する形態でAPI実行回数制限値を設定する形態を説明する。具体的には、図10(d)や図11(d)のように、複数のAPIが実行したリソースサービス401が一つの外部APIを実行する形態を考える。
パターン1(図10(d))については、図10(b)や図10(c)のときと同様に、図8のフローチャートを用いてAPI実行回数制限値は設定される。また、実施例3のパターン1(図10(b))と本形態では、外部API実行回数制限値とAPI実行回数1回当たりの外部API実行回数の合計値とAPI数が同じである。そのため、外部APIを重複して実行しているかどうかに関わらず、実施例3のパターン1と同様の結果(表14)が得られる。したがって、図10(d)の場合においてAPI実行回数制限値を設定することに関する説明は省略する。
パターン2(図11(d))についても、実施例4のパターン2(図11(c))のときと同様に、図9のフローチャートを用いてAPI実行回数制限値は設定される。したがって、図11(c)のときと同様のステップに関する詳細な説明は省略し、異なる結果が得られるステップ(ステップS701、ステップS901)のみを以下で説明する。
ステップS701で、API実行回数1回あたりの外部API実行回数を取得し、管理する。今回は図11(d)より、API実行制御モジュール301において表22のようにAPI実行回数1回当たりの外部API実行回数が管理される。
Figure 2018097837
ステップS901において、API実行回数1回当たりの外部API実行回数に対する各外部APIの外部API実行回数制限値を算出する。今回は、ステップS602で取得した外部API実行回数制限値(表11)と、ステップS701で取得したAPI実行回数1回当たりの外部API実行回数とを用いて、API実行回数1回当たりの外部API実行回数に対する各外部APIの外部API実行回数制限値を算出する。ここで、これまでの実施例と同様に、外部API実行回数制限値「200」の75%である「150」を外部API実行回数制限値とする。
図11(d)では、外部API1はAPI1とAPI3によって実行されたリソースサービス401によって1回ずつ実行されているので、外部API実行回数制限値「150」をAPI実行回数1回当たりの外部API実行回数の合計値「2」で割って得られた「75」が、API実行回数1回当たりの外部API実行回数に対する外部API1の外部API実行回数制限値となる。また、外部API3は、API1とAPI3によって実行されたリソースサービス401によって1回ずつ実行されているので、外部API実行回数制限値「150」をAPI実行回数1回当たりの外部API実行回数の合計値「2」で割って得られた値「75」が、API実行回数1回当たりの外部API実行回数に対する外部API3の外部API実行回数制限値となる。外部API2は、API2によって実行されたリソースサービス401によって1回実行されているので、ステップS602で設定した外部API実行回数制限値「150」をAPI実行回数1回当たりの外部API実行回数の合計値「1」で割って得られた値「150」が、API実行回数1回当たりの外部API実行回数に対する外部API2の外部API実行回数制限値となる。表23には、API実行回数1回当たりの外部API実行回数に対する各外部APIの外部API実行回数制限値を示し、API実行制御モジュール301に設定されたものとする。
Figure 2018097837
ステップS903において、全てのAPI実行回数制限値が設定されたと判断されるまで、ステップS902〜ステップS903の工程は繰り返され、その結果、図11(d)の形態において設定したAPI実行回数制限値は、実施例3のパターン2(表16)と同様の結果となる。
実施例4で設定したAPI実行回数制限値(表16)を仮想サーバー302の台数で割ることで、各仮想サーバー302のAPI実行回数制限値が得られる。
仮想サーバー302が2台あるものとし、実施例4で算出した結果を仮想サーバー302の台数である「2」で割り、得られた値が各仮想サーバー302でのAPI実行回数制限値となる。実施例4のパターン1(図10(c))の場合、表18のAPI実行回数制限値を仮想サーバー302の台数である「2」で割り、得られた値「45」が仮想サーバー1台当たりのAPI1のAPI実行回数制限値となり、「25」が仮想サーバー1台当たりのAPI2のAPI実行回数制限値となる。API実行回数制限値が仮想サーバー302の台数で割りきれない場合は、その余りを任意の仮想サーバー302に割り振っても良い。それ以外のパターンの場合も同様である。
API実行回数制限値の決定方法はこの算出方法に限らず、不均等にAPI実行回数制限値を各仮想サーバー302に振り分けて、新たなAPI実行回数制限値としてもよい。不均等に割り振る際には、API実行回数制限値を1回も割り振られない仮想サーバー302はないものとする。
実施例4より、仮想サーバー302にオートスケーリング機能が実装されているかどうかに関わらず、APIによって実行されたリソースサービス401が複数の外部APIを実行する場合や、複数のAPIによって実行されたリソースサービス401が一つの外部APIを実行する場合でも、各仮想サーバーにおけるAPI実行回数制限値を設定することができる。この方法により、外部APIがAPIの機能によって実行され、外部API実行回数制限値によって外部Webサービス402が停止したり、そのペナルティによってリソースサービス401が停止することがないように制御できる。また、外部API実行回数制限値が変更になった場合にも、自動でAPI実行回数制限値を変更し、適切な値を維持することができる。
[その他の実施例]
上記の実施例では、APIが2〜3つ、外部APIが3つである場合を示したが、任意のAPI数や外部API数、API実行回数1回当たりの外部API実行回数等の場合でも本フローは成り立つ。また、実施例2〜4に記載されていない部分は、実施例1に記載されていることと同じである。
さらに実施例3〜実施例4のパターン1では、図8のフローチャートを用いてAPI実行回数制限値を算出する方法を説明した。しかし、その方法に限らず、外部API実行回数制限値をAPI数で割って、各外部API実行回数制限値を最初に設定することで、パターン2で示した図7や図9の方法でAPI実行回数制限値を算出することもできる。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
110 クライアントシステム
120 外部サービスシステム
350 負荷分散装置
300 アプリケーションモジュール
301 API実行制御モジュール
302 仮想サーバー
303 オートスケーリンググループ
304 負荷分散モジュール
305 DBサーバー
310 データ管理モジュール
400 クライアントサービス
401 Webサービス
402 外部Webサービス

Claims (16)

  1. 夫々の仮想サーバー上にWebサービスを実現し、公開されたAPIがクライアントサービスに呼び出されたことに応じて前記Webサービスを提供するサービスシステムであって、
    前記Webサービスを実現している仮想サーバーの台数と前記APIが実行される回数を制限するために利用されるAPI実行回数制限値とに基づき、
    仮想サーバー1台のAPI実行回数制限値を決定する決定手段と、
    前記APIが呼び出された場合、前記決定手段によって決定されたAPI実行回数制限値に基づき、前記Webサービスを提供する、または前記APIの呼び出しをエラーとして処理する制御手段と、
    を有するサービスシステム。
  2. 前記サービスシステムは、
    前記サービスシステムの負荷に応じて前記Webサービスを実現している仮想サーバーの台数を変更するオートスケーリング機能と、
    前記オートスケーリング機能により変更される前記仮想サーバーの台数を確認する確認手段と、
    をさらに有し、
    前記決定手段は、前記確認手段により確認された前記仮想サーバーの台数と前記API実行回数制限値とに基づき、仮想サーバー1台の新たなAPI実行回数制限値を決定することを特徴とする請求項1に記載のサービスシステム。
  3. 前記確認手段は、
    前記決定手段により決定された仮想サーバー1台のAPI実行回数制限値を更新するタイミングで、前記オートスケーリング機能により変更される前記仮想サーバーの台数を確認することを特徴とする請求項2に記載のサービスシステム。
  4. 前記確認手段は、
    前記サービスシステムの負荷に応じて前記Webサービスを実現する新たな仮想サーバーを起動する他、前記サービスシステムのオートスケーリング機能により変更される前記仮想サーバーの台数を管理する管理手段に対し、
    前記仮想サーバーの台数を問い合わせることで前記仮想サーバーの台数を確認することを特徴とする請求項2乃至3のいずれか1項に記載のサービスシステム。
  5. 前記オートスケーリング機能は、
    前記サービスシステムの負荷が一定以上に増加したことに応じて、前記仮想サーバーの台数を増加させ、前記サービスシステムの負荷が一定以下に減少したことに応じて、前記仮想サーバーの台数を減少させることを特徴とする請求項2乃至4のいずれか1項に記載のサービスシステム。
  6. 前記オートスケーリング機能は、
    前記仮想サーバーの使用するリソース及びキューに格納されたジョブの少なくとも一つに基づいて、前記サービスシステムの負荷を判定し、前記仮想サーバーの台数を変更することを特徴とする請求項2乃至5のいずれか1項に記載のサービスシステム。
  7. 前記Webサービスは前記APIを複数公開しており、
    前記決定手段は、前記Webサービスを実現している仮想サーバーの台数と夫々のAPI毎に定められた前記API実行回数制限値とに基づき、仮想サーバー1台のAPI実行回数制限値を決定することを特徴とする請求項1乃至6のいずれか1つに記載のサービスシステム。
  8. 前記制御手段は、
    特定のAPIが呼び出された場合、前記決定手段により決定された前記特定のAPIに対応するAPI実行回数制限値に基づき、前記Webサービスを提供する、または前記APIの実行をエラーとして処理することを特徴とする請求項7に記載のサービスシステム。
  9. 前記Webサービスは、
    認証および認可に関するデータ処理を実行する認証・認可サービス、帳票データを作成するデータ処理を実行する帳票サービス、印刷データを作成するデータ処理を実行する印刷サービス、およびプリンターの情報を管理しレポートデータを作成するデータ処理を実行するプリンター管理サービスのうちいずれか1つであることを特徴とする請求項1乃至8のいずれか1つに記載のサービスシステム。
  10. 前記決定手段は、
    前記API実行回数制限値を前記仮想サーバーの台数で割ることで仮想サーバー1台のAPI実行回数制限値を決定することを特徴とする請求項1乃至9のいずれか一つに記載のサービスシステム。
  11. 前記決定手段は、
    前記API実行回数制限値に達するまで夫々の前記仮想サーバーに対し任意の数を割り当てていくことで前記仮想サーバー1台のAPI実行回数制限値を決定することを特徴とする請求項1乃至9のいずれか一つに記載のサービスシステム。
  12. 前記サービスシステムは、前記サービスシステムとは異なる外部サービスシステムと連携する機能をさらに有し、
    前記決定手段は、
    前記Webサービスが、外部サービスシステムにおいて提供されている外部Webサービスによって公開された外部APIを実行する回数を制限するために利用される外部API実行回数制限値と、前記API実行回数制限値と、前記仮想サーバーの台数とに基づいて、
    前記仮想サーバー1台のAPI実行回数制限値を決定することを特徴とする請求項1乃至11のいずれか一つに記載のサービスシステム。
  13. 前記決定手段は、
    前記外部API実行回数制限値をAPI実行回数1回当たりの外部API実行回数で割ることにより、新たな外部API実行回数制限値を算出し、
    前記新たな外部API実行回数制限値と、前記API実行回数制限値と、前記仮想サーバーの台数とに基づいて、
    前記仮想サーバー1台のAPI実行回数制限値を決定することを特徴とする請求項12に記載のサービスシステム。
  14. 前記API実行回数は、
    前記APIが前記クライアントサービスによって実行される回数であり、
    前記外部API実行回数は、前記外部APIが前記Webサービスによって実行される回数であることを特徴とする請求項13に記載のサービスシステム。
  15. 夫々の仮想サーバー上にWebサービスを実現し、公開されたAPIがクライアントサービスに呼び出されたことに応じて前記Webサービスを提供する制御方法であって、
    前記Webサービスを実現している仮想サーバーの台数と前記APIが実行される回数を制限するために利用されるAPI実行回数制限値とに基づき、
    仮想サーバー1台のAPI実行回数制限値を決定する決定ステップと、
    前記APIが呼び出された場合、前記決定ステップによって決定されたAPI実行回数制限値に基づき、前記Webサービスを提供する、または前記APIの呼び出しをエラーとして処理する制御ステップと、
    を有する制御方法。
  16. 夫々の仮想サーバー上にWebサービスを実現し、公開されたAPIがクライアントサービスに呼び出されたことに応じて前記Webサービスを提供する制御方法を実現するためのプログラムであって、
    前記Webサービスを実現している仮想サーバーの台数と前記APIが実行される回数を制限するために利用されるAPI実行回数制限値とに基づき、
    仮想サーバー1台のAPI実行回数制限値を決定する決定ステップと、
    前記APIが呼び出された場合、前記決定ステップによって決定されたAPI実行回数制限値に基づき、前記Webサービスを提供する、または前記APIの呼び出しをエラーとして処理する制御ステップと、
    を有する制御方法を実現するためのプログラム。
JP2017094975A 2016-12-13 2017-05-11 サービスシステム、その制御方法、およびそのプログラム Active JP6957194B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016241706 2016-12-13
JP2016241706 2016-12-13

Publications (3)

Publication Number Publication Date
JP2018097837A true JP2018097837A (ja) 2018-06-21
JP2018097837A5 JP2018097837A5 (ja) 2020-05-21
JP6957194B2 JP6957194B2 (ja) 2021-11-02

Family

ID=60915167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017094975A Active JP6957194B2 (ja) 2016-12-13 2017-05-11 サービスシステム、その制御方法、およびそのプログラム

Country Status (5)

Country Link
US (1) US11303546B2 (ja)
EP (1) EP3336700A1 (ja)
JP (1) JP6957194B2 (ja)
KR (1) KR102227061B1 (ja)
CN (1) CN108228346B9 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020173778A (ja) * 2019-04-11 2020-10-22 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971637B (zh) * 2018-09-30 2022-02-08 武汉斗鱼网络科技有限公司 一种调用第三方服务接口的方法、调度器以及存储介质
US20230342224A1 (en) * 2022-04-25 2023-10-26 Docusign, Inc. Enforcing application programming interface limits in a document management system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981401A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd 大域的なリソースキャッピング方法
JP2011090594A (ja) * 2009-10-26 2011-05-06 Hitachi Ltd サーバ管理装置およびサーバ管理方法
JP2015125510A (ja) * 2013-12-25 2015-07-06 キヤノン株式会社 権限管理サーバー及び権限管理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489995B2 (en) * 2008-03-18 2013-07-16 Rightscale, Inc. Systems and methods for efficiently managing and configuring virtual servers
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US8301761B2 (en) 2009-03-31 2012-10-30 International Business Machines Corporation Determining server load capacity with virtual users
JP2010267009A (ja) 2009-05-13 2010-11-25 Canon Inc ライセンス管理システム、ライセンス管理方法及びコンピュータプログラム
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US9665410B2 (en) 2013-03-12 2017-05-30 Google Inc. Processing of application programming interface traffic
CN103618758B (zh) 2013-10-31 2017-01-11 新浪网技术(中国)有限公司 Web服务器及其系统资源访问控制方法
JP6312536B2 (ja) 2014-06-13 2018-04-18 キヤノン株式会社 システム、方法、サーバーシステム、およびプログラム
CN104168133B (zh) 2014-07-11 2017-07-18 广州联智信息科技有限公司 一种动态配置api访问量的方法和网关及系统
US9558020B2 (en) 2014-09-17 2017-01-31 International Business Machines Corporation Method of processing javascript (JS) API requests
US9766818B2 (en) 2014-12-31 2017-09-19 Samsung Electronics Co., Ltd. Electronic system with learning mechanism and method of operation thereof
CN104580489A (zh) 2015-01-20 2015-04-29 浪潮电子信息产业股份有限公司 一种云环境下的Web应用弹性扩展方法
US10341426B2 (en) * 2015-04-30 2019-07-02 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups
CN105740376A (zh) 2016-01-27 2016-07-06 北京铭万智达科技有限公司 一种微服务中api调用统计和监控的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981401A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd 大域的なリソースキャッピング方法
JP2011090594A (ja) * 2009-10-26 2011-05-06 Hitachi Ltd サーバ管理装置およびサーバ管理方法
JP2015125510A (ja) * 2013-12-25 2015-07-06 キヤノン株式会社 権限管理サーバー及び権限管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020173778A (ja) * 2019-04-11 2020-10-22 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム
US11146502B2 (en) 2019-04-11 2021-10-12 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for allocating resource
JP7127010B2 (ja) 2019-04-11 2022-08-29 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム

Also Published As

Publication number Publication date
CN108228346B9 (zh) 2022-04-22
JP6957194B2 (ja) 2021-11-02
EP3336700A1 (en) 2018-06-20
US20180167288A1 (en) 2018-06-14
CN108228346B (zh) 2022-01-18
US11303546B2 (en) 2022-04-12
KR102227061B1 (ko) 2021-03-15
KR20180068300A (ko) 2018-06-21
CN108228346A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
US9652161B2 (en) System, method, and medium of optimizing load reallocation in an in-memory data management grid
JP5256744B2 (ja) 資源割当てシステム、資源割当て方法及びプログラム
JP5653151B2 (ja) クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
US8533775B2 (en) Hierarchical policy management
US8005950B1 (en) Application server scalability through runtime restrictions enforcement in a distributed application execution system
WO2012056596A1 (ja) 計算機システム及び処理制御方法
US8239872B2 (en) Method and system for controlling distribution of work items to threads in a server
US9635102B2 (en) Broker module for managing and monitoring resources between internet service providers
JP6957194B2 (ja) サービスシステム、その制御方法、およびそのプログラム
US11665229B1 (en) Allocation of server resources in remote-access computing environments
EP2631797A2 (en) Thin client system with virtual machine management and server, method and program for connection management
JP2021196704A (ja) 情報処理システム、および制御方法
CN112449005B (zh) 请求分配方法、装置、电子设备及可读存储介质
CN110413369B (zh) 用于虚拟化环境中的备份的系统和方法
US9891909B2 (en) Dynamic reconnect of work processes in a zero downtime maintenance procedure
JP2008204243A (ja) ジョブ実行制御方法およびシステム
US10375161B1 (en) Distributed computing task management system and method
KR20230063015A (ko) 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법
KR101955715B1 (ko) 복수의 자가적응형 어플리케이션들을 포함하는 임베디드 시스템
JP6562744B2 (ja) システム、及び制御方法
JP2013186520A (ja) コンピュータシステム、サーバ装置、負荷分散方法、及びプログラム
US20050086430A1 (en) Method, system, and program for designating a storage group preference order
JP2016015074A (ja) 負荷分散処理プログラム及び負荷分散処理装置
JP2017033142A (ja) データ管理システム、および、その制御方法
US9189222B1 (en) Updating a computer system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210830

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: 20210907

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211006

R151 Written notification of patent or utility model registration

Ref document number: 6957194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151