From cc95a393eb063405b0060a2b5b62a8ac3c4c7711 Mon Sep 17 00:00:00 2001 From: Matt Klein Date: Sat, 10 Sep 2016 13:41:55 -0700 Subject: [PATCH] docs: final updates for 1.0.0 --- README.md | 2 +- docs/configuration/cluster_manager/sds_api.rst | 3 ++- docs/envoy-logo-bg.png | Bin 0 -> 40937 bytes docs/intro/arch_overview/service_discovery.rst | 11 ++++++----- docs/intro/arch_overview/terminology.rst | 6 +++--- docs/intro/what_is_envoy.rst | 4 ++++ docs/landing_generated/footer/index.html | 4 ++-- docs/landing_generated/index.html | 4 +++- docs/landing_generated/sitemap.xml | 4 ++-- .../source/localizable/footer.html.erb | 2 +- .../source/localizable/index.html.erb | 2 ++ 11 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 docs/envoy-logo-bg.png diff --git a/README.md b/README.md index c5b9111eabff..8b5be91f0afc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Envoy +![Envoy Logo](docs/envoy-logo-bg.png) C++ L7 proxy and communication bus diff --git a/docs/configuration/cluster_manager/sds_api.rst b/docs/configuration/cluster_manager/sds_api.rst index 50bd49840f70..4f10d1331927 100644 --- a/docs/configuration/cluster_manager/sds_api.rst +++ b/docs/configuration/cluster_manager/sds_api.rst @@ -3,7 +3,8 @@ Service discovery service REST API ================================== -Envoy expects the service discovery service to expose the following API: +Envoy expects the service discovery service to expose the following API (See Lyft's +`reference implementation `_): .. http:get:: /v1/registration/(string: service_name) diff --git a/docs/envoy-logo-bg.png b/docs/envoy-logo-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..33a4d49d9c6ac52dc5366607a612ed6ba3bf8d6d GIT binary patch literal 40937 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
  • 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 literal 0 HcmV?d00001 diff --git a/docs/intro/arch_overview/service_discovery.rst b/docs/intro/arch_overview/service_discovery.rst index 53a8c8e674c8..f67ccad5296d 100644 --- a/docs/intro/arch_overview/service_discovery.rst +++ b/docs/intro/arch_overview/service_discovery.rst @@ -52,14 +52,15 @@ Service discovery service (SDS) The *service discovery service* is a generic :ref:`REST based API ` used by Envoy to fetch cluster members. Lyft provides a reference implementation via the Python -discovery service. That implementation uses AWS DynamoDB as the backing store, however the API is -simple enough that it could easily be implemented on top of a variety of different backing stores. -For each SDS cluster, Envoy will periodically fetch the cluster members from the discovery service. -SDS is the preferred service discovery mechanism for a few reasons: +`discovery service `_. That implementation uses AWS DynamoDB as +the backing store, however the API is simple enough that it could easily be implemented on top of a +variety of different backing stores. For each SDS cluster, Envoy will periodically fetch the cluster +members from the discovery service. SDS is the preferred service discovery mechanism for a few +reasons: * Envoy has explicit knowledge of each upstream host (vs. routing through a DNS resolved load balancer) and can make more intelligent load balancing decisions. -* Extra attributes carried in the discovery API response for each host inform Envoy of the host’s +* Extra attributes carried in the discovery API response for each host inform Envoy of the host’s load balancing weight, canary status, zone, etc. These additional attributes are used globally by the Envoy mesh during load balancing, statistic gathering, etc. diff --git a/docs/intro/arch_overview/terminology.rst b/docs/intro/arch_overview/terminology.rst index dffe1906473a..8e63b3c8ab8f 100644 --- a/docs/intro/arch_overview/terminology.rst +++ b/docs/intro/arch_overview/terminology.rst @@ -3,10 +3,10 @@ Terminology A few definitions before we dive into the main architecture documentation. Some of the definitions are slightly contentious within the industry, however they are how Envoy uses them throughout the -documentation and codebase, so c'est la vie. +documentation and codebase, so *c'est la vie*. **Host**: An entity capable of network communication (application on a mobile phone, server, etc.). -In this documentation a host is a logical network application. A physical piece of hardware could +In this documentation a host is a logical network application. A physical piece of hardware could possibly have multiple hosts running on it as long as each of them can be independently addressed. **Downstream**: A downstream host connects to Envoy, sends requests, and receives responses. @@ -20,7 +20,7 @@ connect to. **Cluster**: A cluster is a group of logically similar upstream hosts that Envoy connects to. Envoy discovers the members of a cluster via :ref:`service discovery `. It optionally determines the health of cluster members via :ref:`active health checking -`. The cluster member that Envoy routes a request to is determined +`. The cluster member that Envoy routes a request to is determined by the :ref:`load balancing policy `. **Mesh**: A group of hosts that coordinate to provide a consistent network topology. In this diff --git a/docs/intro/what_is_envoy.rst b/docs/intro/what_is_envoy.rst index 5b3743a01f06..b1c020aedd64 100644 --- a/docs/intro/what_is_envoy.rst +++ b/docs/intro/what_is_envoy.rst @@ -69,6 +69,10 @@ and responses. The two systems are very complementary. web applications. Envoy :ref:`supports ` L7 sniffing, statistics production, and logging for MongoDB connections. +**DynamoDB L7 support**: `DynamoDB `_ is Amazon’s hosted key/value +NOSQL datastore. Envoy :ref:`supports ` L7 sniffing and statistics production +for DynamoDB connections. + **Service discovery:** :ref:`Service discovery ` is a critical component of service oriented architectures. Envoy supports multiple service discovery methods including asynchronous DNS resolution and REST based lookup via a :ref:`service discovery service diff --git a/docs/landing_generated/footer/index.html b/docs/landing_generated/footer/index.html index a2d65e10ac5c..379fae7f81eb 100644 --- a/docs/landing_generated/footer/index.html +++ b/docs/landing_generated/footer/index.html @@ -46,7 +46,7 @@