Skip to content

Commit eb2c876

Browse files
author
Martin Taillefer
committed
Turn Mixer into a proper name...
1 parent 1c6a679 commit eb2c876

File tree

9 files changed

+67
-62
lines changed

9 files changed

+67
-62
lines changed

docs/concepts/attributes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ original IP address of a TCP connection. Here are a few examples of attributes:
2727

2828
A given Istio deployment has a fixed vocabulary of attributes that it understands. The specific vocabulary is
2929
determined by the set of attribute producers being used in the deployment. The primary attribute producer in Istio
30-
is the proxy, although specialized mixer adapters and services can also introduce attributes.
30+
is Envoy, although specialized Mixer adapters and services can also introduce attributes.
3131

3232
The common baseline set of attributes available in most Istio deployments is defined
3333
[here]({{site.baseurl}}/docs/reference/attribute-vocabulary.html).

docs/concepts/mixer-config.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ affair potentially involving dozens of microservices, with a swarm of Istio prox
2222
support them. In large deployments, many different operators, each with different scope and areas of responsibility,
2323
may be involved in managing the overall deployment.
2424

25-
The mixer's configuration model makes it possible to exploit all of the mixer's capabilities and flexibility, while
25+
Mixer's configuration model makes it possible to exploit all of its capabilities and flexibility, while
2626
remaining relatively simple to use. The model's scoping features enable large
2727
support organizations to collectively manage complex deployments with ease. Some of the model's key
2828
features include:
2929

3030
- **Designed for Operators**. Service operators control all operational and policy
31-
aspects of a mixer deployment by manipulating configuration records.
31+
aspects of a Mixer deployment by manipulating configuration records.
3232

3333
- **Scoped**. Configuration is described hierarchically, enabling both coarse global control as well
3434
as fine-grained local control.
@@ -45,14 +45,14 @@ can be added to Istio and be fully manipulated using the same general mechanisms
4545

4646
## Concepts
4747

48-
The mixer is an attribute processing machine. Requests arrive at the mixer with a set of [*attributes*]({{site.baseurl}}/docs/attributes.html),
49-
and based on these attributes, the mixer generates calls to a variety of backend systems. The set of
50-
attributes determines which backend systems the mixer calls for a given request and what parameters
51-
they are given. In order to hide the details of individual backend systems, the mixer uses modules
48+
Mixer is an attribute processing machine. Requests arrive at Mixer with a set of [*attributes*]({{site.baseurl}}/docs/attributes.html),
49+
and based on these attributes, Mixer generates calls to a variety of backend systems. The set of
50+
attributes determines which backend systems Mixer calls for a given request and what parameters
51+
they are given. In order to hide the details of individual backend systems, Mixer uses modules
5252
known as [*adapters*]({{site.baseurl}}/docs/concepts/mixer.html#adapters) which you can think of as
5353
*device drivers* for backend systems.
5454

55-
The mixer's configuration has two central responsibilities:
55+
Mixer's configuration has two central responsibilities:
5656

5757
- Describe which adapters are being used and how they operate.
5858
- Describe how to map request attributes into adapter parameters.
@@ -73,11 +73,11 @@ The following sections explain these concepts in detail.
7373
### Adapters
7474

7575
[Adapters]({{site.baseurl}}/docs/concepts/mixer.html#adapters) are the foundational work horses that the Istio mixer is built around. Adapters
76-
encapsulate the logic necessary to interface the mixer with specific external backend systems such as Prometheus or NewRelic. Individual adapters
76+
encapsulate the logic necessary to interface Mixer with specific external backend systems such as Prometheus or NewRelic. Individual adapters
7777
generally need to be provided some basic operational parameters in order to do their work. For example, a logging adapter may need
7878
to know the IP address and port where it's log data should be pumped.
7979

80-
The mixer can use a suite of adapters, and each requires separate configuration parameters.
80+
Mixer can use a suite of adapters, and each requires separate configuration parameters.
8181
Here's an example showing how to configure an adapter:
8282

8383
```yaml
@@ -210,7 +210,7 @@ aspect configuration formats can be found in *TBD*.
210210

211211
#### Attribute Expressions
212212

213-
The mixer features a number of independent [request processing phases]({{site.baseurl}}/docs/concepts/mixer#request-phases).
213+
Mixer features a number of independent [request processing phases]({{site.baseurl}}/docs/concepts/mixer#request-phases).
214214
The *Attribute Processing* phase is responsible for ingesting a set of attributes and producing the adapter parameters
215215
necessary to invoke individual adapters. The phase operates by evaluating a series of *attribute expressions*.
216216

@@ -285,8 +285,8 @@ was not defined.
285285

286286
### Descriptors
287287

288-
Descriptors are used to prepare the mixer, its adapters, and its backend systems to receive
289-
particular types of data. For example, declaring a set of metric descriptors tells the mixer
288+
Descriptors are used to prepare Mixer, its adapters, and its backend systems to receive
289+
particular types of data. For example, declaring a set of metric descriptors tells Mixer
290290
the type of data different metrics will carry and the set of labels used to identity different
291291
instances of these metric.
292292

@@ -320,7 +320,7 @@ The above is declaring that the system can produce metrics called `request_count
320320
Such metrics will hold 64-bit integer values and be managed as absolute counters. Each
321321
metric reported will have five labels, two specifying the source and
322322
target names, one being the service name, one being the name of an API method and
323-
the other being the response code for the request. Given this descriptor, the mixer
323+
the other being the response code for the request. Given this descriptor, Mixer
324324
can ensure that generated metrics are always properly formed, can arrange for efficient
325325
storage for these metrics, and can ensure backend systems are ready to accept
326326
these metrics. The `display_name` and `description` fields are optional and

docs/concepts/mixer.md

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,64 +7,69 @@ layout: docs
77
type: markdown
88
---
99
{% capture overview %}
10-
The page explains the Istio mixer's role and general architecture.
10+
The page explains Istio's Mixer's role and general architecture.
1111
{% endcapture %}
1212

1313
{% capture body %}
1414
## Background
1515

16-
The mixer provides the control-plane abstractions necessary to support most real-world multi-tenant services,
17-
such as precondition checks, telemetry reporting, and quota management. The proxy delegates precondition
18-
checking (permissions, whitelist, etc) to the mixer and dispatches its telemetry data
19-
to the mixer, which proceeds to repackage and redirect the data towards configured backends.
16+
Mixer provides the control-plane abstractions necessary to support most real-world multi-tenant services,
17+
such as precondition checks, telemetry reporting, and quota management. Envoy delegates precondition
18+
checking (permissions, whitelist, etc) to Mixer and dispatches its telemetry data
19+
to Mixer, which proceeds to repackage and redirect the data towards configured backends.
2020

21-
Services within the Istio mesh can also directly integrate with the mixer. For example, services may wish to provide rich telemetry
22-
for particular operations beyond what the proxy automatically collects. Or services may use the mixer for resource-oriented quota
23-
management. Services that leverage the mixer in this way are abstracted from environment-specific control plane details, greatly
21+
Services within the Istio mesh can also directly integrate with Mixer. For example, services may wish to provide rich telemetry
22+
for particular operations beyond what Envoy automatically collects. Or services may use Mixer for resource-oriented quota
23+
management. Services that leverage Mixer in this way are abstracted from environment-specific control plane details, greatly
2424
easing the process of hosting the code in different environments (different clouds and on-prem)
2525

2626
<img style="display:block;width:60%;margin:auto;" src="./mixer/traffic.svg" alt="Flow of traffic." />
2727
<p style="text-align:center;">Mixer Traffic Flow</p>
2828

29-
The mixer provides three core features:
29+
Mixer provides three core features:
3030

3131
- **Precondition Checking**. Enables callers to verify a number of preconditions before responding to an incoming request from a service consumer.
3232
Preconditions can include whether the service consumer is properly authenticated, is on the service's whitelist, passes ACL checks, and more.
3333

3434
- **Telemetry Reporting**. Enables services to produce logging and monitoring. In the future, it will also enable tracing and billing
3535
streams intended for both the service operator as well as for service consumers.
3636

37-
- **Quota Management**. Enables services to allocate and free quota on a number of dimensions, Quotas are used as a relatively simple resource management
38-
tool to provide some fairness between service consumers when contending for limited resources.
37+
- **Quota Management**. Enables services to allocate and free quota on a number of dimensions, Quotas are used as a relatively simple resource
38+
management tool to provide some fairness between service consumers when contending for limited resources. Rate limits are
39+
examples of quotas.
3940

4041
These mechanisms are applied based on a set of [attributes]({{site.baseurl}}/docs/concepts/attributes.html) that are
41-
materialized for every request into the mixer.
42+
materialized for every request into Mixer. Within Istio, Envoy depends heavily on Mixer. Services running within the mesh
43+
can also use Mixer to report telemetry or manage quotas.
4244

4345
## Adapters
4446

45-
Adapters are binary-level plugins to the mixer which make it possible to customize the mixer’s behavior. Adapters allow the mixer to interface
47+
Mixer abstracts away the implementation details of individual policy and telemetry backend systems. This insulates
48+
Envoy and services within the mesh from those details, keeping them portable.
49+
50+
Adapters are binary-level plugins to Mixer which allow Mixer to interface
4651
to different backend systems that deliver core control-plane functionality, such as logging, monitoring, quotas, ACL checking, and more. Adapters
47-
enable the mixer to expose a single consistent control API, independent of the backends in use. The exact set of adapters
52+
enable Mixer to expose a single consistent control API, independent of the backends in use. The exact set of adapters
4853
used at runtime is determined through configuration.
4954

50-
<img style="width:65%;display:block;margin:auto;" src="./mixer/adapters.svg" alt="The mixer and its adapters." />
55+
<img style="width:65%;display:block;margin:auto;" src="./mixer/adapters.svg" alt="Mixer and its adapters." />
5156

52-
## Descriptors and policy objects
57+
## Descriptors and Adapter Parameters
5358

54-
The mixer is essentially an attribute processing machine. It takes in a number of attributes from
59+
Mixer is essentially an attribute processing machine. It takes in a number of attributes from
5560
its caller and produces as a result a set of calls into its adapters, which in turn trigger calls to
56-
associated backend systems such as Prometheus or NewRelic. As the mixer calls its adapters, it provides them what are
57-
called *policy objects* as input. These policy objects are the parameters telling the adapters what to do. For example, when
58-
reporting metrics to an adapter, the mixer produces a policy object that holds the metric data.
61+
associated backend systems such as Prometheus or NewRelic. As Mixer calls its adapters, it provides them
62+
*adapter parameters* as input. These tell the adapters what to do. For example, when
63+
reporting metrics to an adapter, Mixer produces parameters that hold the metric data.
5964

60-
Descriptors let you define the *shape* of the policy objects produced during the mixer's [attribute processing phase](#request-phases).
61-
In other words, descriptors let you control the set and type of values carried by individual policy objects. Some facts:
65+
Descriptors let you define the *shape* of the parameters produced during Mixer's [attribute processing phase](#request-phases).
66+
In other words, descriptors let you control the set and type of values carried by these parameters. Some facts:
6267

63-
- The mixer supports a variety of different descriptor kinds (`MetricDescriptor`, `LogEntryDescriptor`, `QuotaDescriptor`, etc)
68+
- Mixer supports a variety of different descriptor kinds (Metric Descriptor, Log Entry Descriptor, Quota Descriptor, etc)
6469

6570
- For each descriptor kind, you can declare any number of descriptors within a given deployment.
6671

67-
- While handling a request, the mixer's attribute processing phase can produce any number of policy objects for each of the
72+
- While handling a request, Mixer's attribute processing phase can produce any number of distinct adapter parameters for each of the
6873
configured descriptors.
6974

7075
An example can help clarify the concepts. Let's consider the `MetricDescriptor` type which is defined as follows:
@@ -118,7 +123,7 @@ listed labels. Producing a policy object for such a descriptor requires 6 pieces
118123
- a method string
119124
- a 64-bit integer response code
120125

121-
Here is an example snippet of Istio configuration which produces a policy object for the above descriptor:
126+
Here is an example snippet of Istio configuration which produces adapter parameters given the above descriptor:
122127

123128
```yaml
124129
descriptor_name: request_count
@@ -131,14 +136,14 @@ labels:
131136
response_code: response.code | 200
132137
```
133138

134-
Many such policy objects are created as part of attribute processing and they ultimately serve as input to
135-
adapters.
139+
Many such parameters are are typically created as part of attribute processing and they ultimately determine what
140+
adapters do.
136141

137-
Explicitly defining descriptors and creating policy objects for them is akin to types and objects in a traditional
142+
Explicitly defining descriptors and creating adapter parameters using them is akin to types and objects in a traditional
138143
programming language. Doing so enables a few important scenarios:
139144

140145
- Having the set of descriptors explicitly defined enables Istio to program backend systems to accept traffic produced
141-
by the mixer. For example, a `MetricDescriptor` provides all the information needed to program a backend system to accept metrics
146+
by Mixer. For example, a `MetricDescriptor` provides all the information needed to program a backend system to accept metrics
142147
that conform to the descriptor's shape (it's value type and its set of labels).
143148

144149
- It enables type checking of the deployment's configuration. Since attributes have strong types, and so do descriptors,
@@ -150,30 +155,30 @@ plays the same role as types in a programming language.
150155

151156
## Configuration state
152157

153-
The mixer's core runtime methods (`Check`, `Report`, and `Quota`) all accept a set of attributes on input and
158+
Mixer's core runtime methods (`Check`, `Report`, and `Quota`) all accept a set of attributes on input and
154159
produce a set of attributes on output. The work that the individual methods perform is dictated by the set of input
155-
attributes, as well as by the mixer's current configuration. To that end, the service operator is responsible
160+
attributes, as well as by Mixer's current configuration. To that end, the service operator is responsible
156161
for:
157162

158163
- Configuring the set of *aspects* that the deployment uses. An aspect is essentially a chunk of configuration
159164
state that configures an adapter (adapters being binary plugins as described [below](#adapters)).
160165

161-
- Establishing the types of policy objects that the mixer can manipulate. These
166+
- Establishing the types of adapter parameters that Mixer can manipulate. These
162167
types are described in configuration through a set of *descriptors* (as described [above](#descriptors))
163168

164169
- Creating rules to map the attributes of every incoming request into a
165-
specific set of aspects and policy objects.
170+
specific set of aspects and adapter parameters.
166171

167-
The above configuration state is required to have mixer know what to do with incoming attributes
172+
The above configuration state is required to have Mixer know what to do with incoming attributes
168173
and dispatch to the appropriate backend systems.
169174

170-
Refer to *TBD* for detailed information on mixer's configuration format.
175+
Refer to *TBD* for detailed information on Mixer's configuration format.
171176

172177
## Request phases
173178

174-
When a request comes in to the mixer, it goes through a number of distinct handling phases:
179+
When a request comes in to Mixer, it goes through a number of distinct handling phases:
175180

176-
- **Supplementary Attribute Production**. The first thing that happens in the mixer is to run a globally configured
181+
- **Supplementary Attribute Production**. The first thing that happens in Mixer is to run a globally configured
177182
set of adapters that are responsible for introducing new attributes. These attributes are combined with the attributes
178183
from the request to form the total set of attributes for the operation.
179184

@@ -195,14 +200,14 @@ associated with each aspect and passes them those parameters.
195200

196201
## Scripting
197202

198-
> This section is preliminary and subject to change. We're still experimenting with the concept of scripting in the mixer.
203+
> This section is preliminary and subject to change. We're still experimenting with the concept of scripting in Mixer.
199204

200-
The mixer's attribute processing phase is implemented via a scripting language (exact language *TBD*).
205+
Mixer's attribute processing phase is implemented via a scripting language (exact language *TBD*).
201206
The scripts are provided a set of attributes and are responsible for producing the adapter parameters and dispatching
202207
control to individual configured adapters.
203208

204209
For common uses, the operator authors adapter parameter production rules via a relatively simple declarative format
205-
and expression syntax. The mixer ingests such rules and produces a script that performs the necessary runtime work
210+
and expression syntax. Mixer ingests such rules and produces a script that performs the necessary runtime work
206211
of accessing the request's incoming attributes and producing the requisite adapter parameters.
207212

208213
For advanced uses, the operator can bypass the declarative format and author directly in the scripting

docs/concepts/mixer/traffic.svg

Lines changed: 1 addition & 1 deletion
Loading

docs/concepts/service-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ The actual choice of the service version is determined dynamically by the
7676
Istio Proxy based on the routing rules set forth by the operator. This
7777
model enables the application code to decouple itself from the
7878
evolution of its dependent services, while providing other benefits as well
79-
(see [mixer](mixer.md)). Routing rules allow the proxy to select a version based on
79+
(see [mixer](mixer.md)). Routing rules allow Envoy to select a version based on
8080
criterion such as (headers, url, etc.), tags associated with
8181
source/destination and/or by weights assigned to each version.
8282

docs/reference/attribute-vocabulary.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ and what they are used for [here]({{site.baseurl}}/docs/concepts/attributes.html
1212

1313
A given Istio deployment has a fixed vocabulary of attributes that it understands. The specific vocabulary is
1414
determined by the set of attribute producers being used in the deployment. The primary attribute producer in Istio
15-
is the proxy, although the mixer and services can also introduce attributes.
15+
is Envoy, although Mixer and services can also introduce attributes.
1616

1717
## Standard Istio attribute vocabulary
1818

1919
The table below shows the set of canonical attributes and their respective types. Most Istio
20-
deployments will have agents (proxy or mixer adapters) that produce these attributes.
20+
deployments will have agents (Envoy or Mixer adapters) that produce these attributes.
2121

2222
| Name | Type | Description | Kubernetes Example |
2323
|------|------|-------------|--------------------|

docs/reference/contribute/writing-a-new-topic.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ is the best fit for your content:
2323
<tr>
2424
<td>Concept</td>
2525
<td>A concept page explains some significant aspect of Istio. For example, a concept page might describe the
26-
mixer's configuration model and explain some of its subtleties.
26+
Mixer's configuration model and explain some of its subtleties.
2727
Typically, concept pages don't include sequences of steps, but instead provide links to
2828
tasks or tutorials that do.</td>
2929
</tr>

0 commit comments

Comments
 (0)