Quota configuration helps to achieve fairness and budgeting in service usage.

The quota configuration works this way:

  • The service configuration defines a set of metrics.
  • For API calls, the quota.metric_rules maps methods to metrics with
    corresponding costs.
  • The quota.limits defines limits on the metrics, which will be used for
    quota checks at runtime.
    An example quota configuration in yaml format:
    quota:
    limits:
    • name: apiWriteQpsPerProject
      metric: library.googleapis.com/write_calls
      unit: "1/min/{project}" # rate limit for consumer projects
      values:
      STANDARD: 10000
      # The metric rules bind all methods to the read_calls metric,
      # except for the UpdateBook and DeleteBook methods. These two methods
      # are mapped to the write_calls metric, with the UpdateBook method
      # consuming at twice rate as the DeleteBook method.
      metric_rules:
    • selector: "*"
      metric_costs:
      library.googleapis.com/read_calls: 1
    • selector: google.example.library.v1.LibraryService.UpdateBook
      metric_costs:
      library.googleapis.com/write_calls: 2
    • selector: google.example.library.v1.LibraryService.DeleteBook
      metric_costs:
      library.googleapis.com/write_calls: 1
      Corresponding Metric definition:
      metrics:
    • name: library.googleapis.com/read_calls
      display_name: Read requests
      metric_kind: DELTA
      value_type: INT64
    • name: library.googleapis.com/write_calls
      display_name: Write requests
      metric_kind: DELTA
      value_type: INT64

Generated from protobuf message google.api.Quota

CloneableInstantiable
ExtendsGoogle\Protobuf\Internal\Message
Methods
public __construct( $data = NULL)
 
Constructor.

    public Google\Protobuf\Internal\Message::byteSize()
     


    • ignore
    public Google\Protobuf\Internal\Message::clear()
    public Google\Protobuf\Internal\Message::discardUnknownFields()
    public getLimits()
     
    List of `QuotaLimit` definitions for the service.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.QuotaLimit limits = 3;

    public getMetricRules()
     
    List of `MetricRule` definitions, each one mapping a selected method to one or more metrics.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.MetricRule metric_rules = 4;

    public Google\Protobuf\Internal\Message::jsonByteSize()
     


    • ignore
    public Google\Protobuf\Internal\Message::mergeFrom( $msg)
    public Google\Protobuf\Internal\Message::mergeFromJsonString( $data)
    public Google\Protobuf\Internal\Message::mergeFromString( $data)
    public Google\Protobuf\Internal\Message::parseFromJsonStream( $input)
     


    • ignore
    public Google\Protobuf\Internal\Message::parseFromStream( $input)
     


    • ignore
    public Google\Protobuf\Internal\Message::serializeToJsonStream( $output)
     


    • ignore
    public Google\Protobuf\Internal\Message::serializeToJsonString()
     
    Serialize the message to json string.

    • return string Serialized json protobuf data.
    public Google\Protobuf\Internal\Message::serializeToStream( $output)
     


    • ignore
    public Google\Protobuf\Internal\Message::serializeToString()
     
    Serialize the message to string.

    • return string Serialized binary protobuf data.
    public setLimits( $var)
     
    List of `QuotaLimit` definitions for the service.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.QuotaLimit limits = 3;

    • return $this
    public setMetricRules( $var)
     
    List of `MetricRule` definitions, each one mapping a selected method to one or more metrics.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.MetricRule metric_rules = 4;

    • return $this
    Methods
    protected Google\Protobuf\Internal\Message::mergeFromArray(array $array)
    protected Google\Protobuf\Internal\Message::mergeFromJsonArray( $array)
    protected Google\Protobuf\Internal\Message::readOneof( $number)
    protected Google\Protobuf\Internal\Message::readWrapperValue( $member)
    protected Google\Protobuf\Internal\Message::whichOneof( $oneof_name)
    protected Google\Protobuf\Internal\Message::writeOneof( $number, $value)
    protected Google\Protobuf\Internal\Message::writeWrapperValue( $member, $value)
    Properties
    private $limits
     
    List of `QuotaLimit` definitions for the service.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.QuotaLimit limits = 3;

    private $metric_rules
     
    List of `MetricRule` definitions, each one mapping a selected method to one or more metrics.

    Used by metric-based quotas only.

    Generated from protobuf field repeated .google.api.MetricRule metric_rules = 4;

    Methods
    private Google\Protobuf\Internal\Message::appendHelper( $field, $append_value)
    private Google\Protobuf\Internal\Message::convertJsonValueToProtoValue( $value, $field, $is_map_key = false)
    private Google\Protobuf\Internal\Message::defaultValue( $field)
     


    • ignore
    private Google\Protobuf\Internal\Message::existField( $field)
     


    • ignore
    private Google\Protobuf\Internal\Message::fieldByteSize( $field)
     


    • ignore
    private Google\Protobuf\Internal\Message::fieldDataOnlyByteSize( $field, $value)
     


    • ignore
    private Google\Protobuf\Internal\Message::fieldDataOnlyJsonByteSize( $field, $value)
     


    • ignore
    private Google\Protobuf\Internal\Message::fieldJsonByteSize( $field)
     


    • ignore
    private Google\Protobuf\Internal\Message::initWithDescriptor(Google\Protobuf\Internal\Descriptor $desc)
     


    • ignore
    private Google\Protobuf\Internal\Message::initWithGeneratedPool()
     


    • ignore
    private Google\Protobuf\Internal\Message::kvUpdateHelper( $field, $update_key, $update_value)
    private Google\Protobuf\Internal\Message::mergeFromArrayJsonImpl( $array)
    private static Google\Protobuf\Internal\Message::normalizeArrayElementsToMessageType( $value, $class)
     
    Tries to normalize the elements in $value into a provided protobuf wrapper type $class. If $value is any type other than array, we do not do any conversion, and instead rely on the existing protobuf type checking. If $value is an array, we process each element and try to convert it to an instance of $class.

      private static Google\Protobuf\Internal\Message::normalizeToMessageType( $value, $class)
       
      Tries to normalize $value into a provided protobuf wrapper type $class.

      If $value is any type other than an object, we attempt to construct an
      instance of $class and assign $value to it using the setValue method
      shared by all wrapper types.

      This method will raise an error if it receives a type that cannot be
      assigned to the wrapper type via setValue.

        private Google\Protobuf\Internal\Message::parseFieldFromStream( $tag, $input, $field)
         


        • ignore
        private static Google\Protobuf\Internal\Message::parseFieldFromStreamNoTag( $input, $field, $value)
         


        • ignore
        private Google\Protobuf\Internal\Message::repeatedFieldDataOnlyByteSize( $field)
         


        • ignore
        private Google\Protobuf\Internal\Message::serializeFieldToJsonStream( $output, $field)
         


        • ignore
        private Google\Protobuf\Internal\Message::serializeFieldToStream( $output, $field)
         


        • ignore
        private Google\Protobuf\Internal\Message::serializeMapFieldToStream( $field, $output)
         


        • ignore
        private Google\Protobuf\Internal\Message::serializeRepeatedFieldToStream( $field, $output)
         


        • ignore
        private Google\Protobuf\Internal\Message::serializeSingularFieldToStream( $field, $output)
         


        • ignore
        private Google\Protobuf\Internal\Message::skipField( $input, $tag)
         


        • ignore
        Methods
        private static Google\Protobuf\Internal\Message::normalizeArrayElementsToMessageType( $value, $class)
         
        Tries to normalize the elements in $value into a provided protobuf wrapper type $class. If $value is any type other than array, we do not do any conversion, and instead rely on the existing protobuf type checking. If $value is an array, we process each element and try to convert it to an instance of $class.

          private static Google\Protobuf\Internal\Message::normalizeToMessageType( $value, $class)
           
          Tries to normalize $value into a provided protobuf wrapper type $class.

          If $value is any type other than an object, we attempt to construct an
          instance of $class and assign $value to it using the setValue method
          shared by all wrapper types.

          This method will raise an error if it receives a type that cannot be
          assigned to the wrapper type via setValue.

            private static Google\Protobuf\Internal\Message::parseFieldFromStreamNoTag( $input, $field, $value)
             


            • ignore
            © 2020 Bruce Wells
            Search Namespaces \ Classes
            ConfigurationNumbers (0-9.) only