Comments (5)
Thanks @abonas for taking time to go through the spec, here is what I could elaborate on:
- "The resource is associated with a root service" - what is a root service?
The root service is where everyone is sending traffic to. Like if you are rolling out new version of your application webapp
using TrafficSplit
. And everyone talking to webapp
, uses the URL http://webapp
to talk to it.
Even though going further you might have various other services like webapp-v1
and webapp-v2
. The root service here is still webapp
.
- In this example: https://github.com/deislabs/smi-spec/blob/master/traffic-split.md#specification 3 services receive the following traffic distribution: 10m, 100m, 1500m. What is "m"? what do 10,100, 1500 mean in relation to each other? How do they form 100% of the traffic?
Here the specification tries to align itself with the way kubernetes defines it's resources. So basically 1500m == 1.5
, 100m == 0.1
, etc. In the Istio implementation of TrafficSplit we add those all up and calculate the relative percentage to form 100%.
- In this section:
https://github.com/deislabs/smi-spec/blob/master/traffic-split.md#workflow
there is an example with traffic split of 1 and 0m. what does 1 mean? all traffic? it also doesn't have the "m" suffix while zero does have it
Yes 1 means entire traffic sent to it. The m
with zero has no sense in general terms because it is zero.
from smi-spec.
Thanks @abonas for taking time to go through the spec, here is what I could elaborate on:
- "The resource is associated with a root service" - what is a root service?
The root service is where everyone is sending traffic to. Like if you are rolling out new version of your application
webapp
usingTrafficSplit
. And everyone talking towebapp
, uses the URLhttp://webapp
to talk to it.
thanks for your explanation!
the definition of a root service should be clearly stated as part of the spec. see issue #44.
Even though going further you might have various other services like
webapp-v1
andwebapp-v2
. The root service here is stillwebapp
.
- In this example: https://github.com/deislabs/smi-spec/blob/master/traffic-split.md#specification 3 services receive the following traffic distribution: 10m, 100m, 1500m. What is "m"? what do 10,100, 1500 mean in relation to each other? How do they form 100% of the traffic?
Here the specification tries to align itself with the way kubernetes defines it's resources.
why does it need to align?
resources in k8s are not the same as the traffic flowing through it.
So basically
1500m == 1.5
,100m == 0.1
, etc. In the Istio implementation of TrafficSplit we add those all up and calculate the relative percentage to form 100%.
the math here is still unclear to me. how do those numbers sum up to 100%?
it's not intuitive.
Moreover, even the Istio example itself has percentage in titles and then it's converted to "m" units - so user needs to constantly convert percentages to some other units.
That's not a good user experience IMO.
- In this section:
https://github.com/deislabs/smi-spec/blob/master/traffic-split.md#workflow
there is an example with traffic split of 1 and 0m. what does 1 mean? all traffic? it also doesn't have the "m" suffix while zero does have itYes 1 means entire traffic sent to it. The
m
with zero has no sense in general terms because it is zero.
sometimes entire traffic is referred to as 1000, sometimes 100, sometimes 1. The spec is not consistent and IMO makes things more complex than needed.
from smi-spec.
@abonas care to take a swing at getting a list of terms to be defined in the Glossary? And then we could all jump in and clearly define them?
from smi-spec.
@abonas Istio uses percentages, we purposely avoided percentages and went for weights instead (see the tradeoffs section for more details). Because of this, you don't need anything to add up to 100, or 1, or really anything. The weights are relative and extremely configurable on purpose. There's no reason you need to use the m
terminology if you don't want to, whole numbers work as well.
from smi-spec.
@abonas care to take a swing at getting a list of terms to be defined in the Glossary? And then we could all jump in and clearly define them?
from smi-spec.
Related Issues (20)
- when to validate traffic target
- `Matches` in `TrafficSplit` is unclear HOT 12
- Add the (required) `apiVersion` field to all YAML file examples HOT 1
- Clarify behavior of overlapping rules and routing resolution in TrafficSplit HOT 1
- Support API/Interface
- Support Exact and Prefix matches for URI path in HTTPRouteGroup
- The Header Match format in HTTPRouteGroup description is not consistent with smi-sdk-go HOT 2
- TrafficTarget should be created in same namespace as destination
- No warning if incorrect yaml is applied for Traffic Split HOT 1
- Logical relationships between multiple match condition in TrafficSplit resource HOT 1
- Trafficsplit based on sourcelabel? HOT 3
- CRD installation HOT 1
- support queryParams in TrafficSpec HOT 1
- Question about A/B testing with traffic splits HOT 1
- Does the TrafficSplit spec allow for identification of a default route for unmatched traffic? HOT 3
- Depreciation of TrafficRoutes in favor of supporting Kubernetes Gateway API - WIP HOT 7
- Question: Header-based TrafficSplit
- Any plans for mirroring?
- State of SMI Spec HOT 6
- CNCF TOC annual review due HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smi-spec.