Skip to content

Commit

Permalink
Upgrade to Hugo v0.66.0 (grpc#113)
Browse files Browse the repository at this point in the history
* Upgrade to Hugo v0.66.0

Fixes grpc#89
Closes grpc#111

* Match old support for markdown-embedded HTML

* Fix About page markdown and embedded HTML
  • Loading branch information
chalin committed Mar 5, 2020
1 parent 07b1440 commit 4980b45
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 159 deletions.
2 changes: 1 addition & 1 deletion Makefile
@@ -1,4 +1,4 @@
HUGO_VERSION = 0.55.0
HUGO_VERSION = 0.66.0
DOCKER_IMG := klakegg/hugo:$(HUGO_VERSION)
SERVE_CMD = server --buildDrafts --buildFuture --disableFastRender --ignoreCache

Expand Down
3 changes: 3 additions & 0 deletions config.toml
Expand Up @@ -93,3 +93,6 @@ weight = 5
name = "gRPC Wire Format"
url = "https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md"
weight = 6

[markup.goldmark.renderer]
unsafe = true
272 changes: 115 additions & 157 deletions content/about.md
@@ -1,18 +1,20 @@
---
title: "About gRPC"
date: 2018-09-11T14:11:42+07:00
draft: false
title: About gRPC
---

gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.
gRPC is a modern open source high performance RPC framework that can run in any
environment. It can efficiently connect services in and across data centers with
pluggable support for load balancing, tracing, health checking and
authentication. It is also applicable in last mile of distributed computing to
connect devices, mobile applications and browsers to backend services.

<b>The main usage scenarios:</b>
**The main usage scenarios:**

* Efficiently connecting polyglot services in microservices style architecture
* Connecting mobile devices, browser clients to backend services
* Generating efficient client libraries

<b>Core Features that make it awesome:</b>
**Core Features that make it awesome:**

* Idiomatic client libraries in 10 languages
* Highly efficient on wire and with a simple service definition framework
Expand All @@ -21,167 +23,116 @@ gRPC is a modern open source high performance RPC framework that can run in any

<hr>

## Cases: Who’s using it and why?

Many companies are already using gRPC for connecting multiple services in their environments. The use case varies from connecting a handful of services to hundreds of services across various languages in on-prem or cloud environments. Below are details and quotes from some of our early adopters.

Check out what people are saying below:
## Who’s using gRPC and why?

Many companies are already using gRPC for connecting multiple services in their
environments. The use case varies from connecting a handful of services to
hundreds of services across various languages in on-prem or cloud environments.
Below are details and quotes from some of our early adopters.

Check out what people are saying below.

<div class="testimonialrow">
<div class="testimonialsection">
<div>
<a href="https://www.youtube.com/watch?v=-2sWDr3Z0Wo">
<div class="testimonialimage"> <img src="../img/square-icon.png" style="width:45%"/></a></div>
<div>
<div class="testimonialquote">“ </div>
At Square, we have been collaborating with Google so that we can replace all uses of our custom RPC solution to use gRPC. We decided to move to gRPC because of its open support for multiple platforms, the demonstrated performance of the protocol, and the ability to customize and adapt it to our network. Developers at Square are looking forward to being able to take advantage of writing streaming APIs and in the future, push gRPC to the edges of the network for integration with mobile clients and third party APIs.
</div>

</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="https://github.com/Netflix/ribbon">
<img src="../img/netflix-logo.png" /> </a></div>
<div>
<div class="testimonialquote"> “ </div>
In our initial use of gRPC we've been able to extend it easily to live within our opinionated ecosystem. Further, we've had great success making improvements directly to gRPC through pull requests and interactions with Google's team that manages the project. We expect to see many improvements to developer productivity, and the ability to allow development in non-JVM languages as a result of adopting gRPC.
</div>

</div>
<div class="testimonialsection">
<div class="testimonialimage"><a href="https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2/">
<img src="../img/coreos-1.png" style="width:30%"/></a></div>
<div>
<div class="testimonialquote">“ </div>
At CoreOS we are excited by the gRPC v1.0 release and the opportunities it opens up for people consuming and building what we like to call Google Infrastructure for Everyone Else. Today gRPC is in use in a number of our critical open source projects such as the etcd consensus database and the rkt container engine.
</div>

</div>
</div>
<div class="testimonialsection">
<div class="testimonialimage"> <a href="https://github.com/cockroachdb/cockroach">
<img src="../img/cockroach-1.png" /> </a></div>
<div>
<div class="testimonialquote">“ </div>
Our switch from a home-grown RPC system to gRPC was seamless. We quickly took advantage of the per-stream flow control to provide better scheduling of large RPCs over the same connection as small ones.
</div>

</div>
<div class="testimonialsection">
<div class="testimonialimage">
<a href="https://www.youtube.com/watch?v=-2sWDr3Z0Wo"><img src="../img/square-icon.png" style="width:45%"/></a>
</div>
<div>
<span class="testimonialquote">“ </span>
At Square, we have been collaborating with Google so that we can replace all uses of our custom RPC solution to use gRPC. We decided to move to gRPC because of its open support for multiple platforms, the demonstrated performance of the protocol, and the ability to customize and adapt it to our network. Developers at Square are looking forward to being able to take advantage of writing streaming APIs and in the future, push gRPC to the edges of the network for integration with mobile clients and third party APIs.
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="https://github.com/CiscoDevNet/grpc-getting-started">
<img src="../img/cisco.svg" /></a></div>
<div>
<div class="testimonialquote">“ </div>
With support for high performance bi-directional streaming, TLS based security, and a wide variety of programming languages, gRPC is an ideal unified transport protocol for model driven configuration and telemetry.
</div>
<div class="testimonialsection">
<div class="testimonialimage">
<a href="https://github.com/Netflix/ribbon"><img src="../img/netflix-logo.png" /></a>
</div>
<div>
<span class="testimonialquote"> “ </span>
In our initial use of gRPC we've been able to extend it easily to live within our opinionated ecosystem. Further, we've had great success making improvements directly to gRPC through pull requests and interactions with Google's team that manages the project. We expect to see many improvements to developer productivity, and the ability to allow development in non-JVM languages as a result of adopting gRPC.
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage">
<a href="https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2/">
<img src="../img/coreos-1.png" style="width:30%"/>
</a>
</div>
<div>
<span class="testimonialquote">“ </span>
At CoreOS we are excited by the gRPC v1.0 release and the opportunities it opens up for people consuming and building what we like to call Google Infrastructure for Everyone Else. Today gRPC is in use in a number of our critical open source projects such as the etcd consensus database and the rkt container engine.
</div>
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="http://www.carbon3d.com">
<img src="../img/carbon3d.svg" /></a></div>
<div>
<div class="testimonialquote">“ </div>
Carbon3D uses gRPC to implement distributed processes both within and outside our 3D printers. We actually switched from using Thrift early on for a number of reasons including but not limited to robust support for multiple languages like C++, Nodejs and Python. Features like bi-directional streaming are a huge win in keeping our systems implementations simpler and correct. Lastly the gRPC team/community is very active and responsive which is also a key factor for us in selecting an open source technology for mission critical projects.
</div>
<div class="testimonialrow">
<div class="testimonialsection">
<div class="testimonialimage">
<a href="https://github.com/cockroachdb/cockroach"><img src="../img/cockroach-1.png"/></a>
</div>
<div>
<span class="testimonialquote">“ </span>
Our switch from a home-grown RPC system to gRPC was seamless. We quickly took advantage of the per-stream flow control to provide better scheduling of large RPCs over the same connection as small ones.
</div>
</div>

</div>
<div class="testimonialsection">
<div class="testimonialimage">
<a href="https://github.com/CiscoDevNet/grpc-getting-started"><img src="../img/cisco.svg"/></a>
</div>
<div>
<span class="testimonialquote">“ </span>
With support for high performance bi-directional streaming, TLS based security, and a wide variety of programming languages, gRPC is an ideal unified transport protocol for model driven configuration and telemetry.
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><img src="../img/wisc-mad.jpg" /></a></div>
<div>
<div class="testimonialquote">“ </div>
We've been using gRPC for both classes and research at University of Wisconsin. Students in our distributed systems class (CS 739) utilized many of its powerful features when building their own distributed systems. In addition, gRPC is a key component of our OpenLambda research project (https://www.open-lambda.org/) which aims to provide an open-source, low-latency, serverless computational framework.
</div>
<div class="testimonialsection">
<div class="testimonialimage">
<a href="http://www.carbon3d.com"><img src="../img/carbon3d.svg"/></a>
</div>
<div>
<span class="testimonialquote">“ </span>
Carbon3D uses gRPC to implement distributed processes both within and outside our 3D printers. We actually switched from using Thrift early on for a number of reasons including but not limited to robust support for multiple languages like C++, Nodejs and Python. Features like bi-directional streaming are a huge win in keeping our systems implementations simpler and correct. Lastly the gRPC team/community is very active and responsive which is also a key factor for us in selecting an open source technology for mission critical projects.
</div>
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="https://github.com/Juniper/open-nti">
<img src="../img/juniperlogo.png" /> </a></div>
<div class="testimonialrow">
<div class="testimonialsection">
<div class="testimonialimage"><a href="https://www.wisc.edu/"><img src="../img/wisc-mad.jpg"/></a></div>
<div>
<div class="testimonialquote">“ </div>
The fact that gRPC is built on HTTP/2 transport brings us native bi-directional streaming capabilities and flexible custom-metadata in request headers. The first point is important for large payloadexchange and network telemetry scenarios while the latter enables us to expand and include capabilities including but not limited to various network element authentication mechanisms.

In addition, the wide language binding support that gRPC/proto3 bringsenables us to provide a flexible and rapid development environment for both internal and external consumers.

Last but not least, while there are a number of network communicationprotocols for configuration, operational state retrieval and network telemetry, gRPC provides us with a unified flexible protocol and transport to ease client/server interaction.
<span class="testimonialquote">“ </span>
We've been using gRPC for both classes and research at University of Wisconsin. Students in our distributed systems class (CS 739) utilized many of its powerful features when building their own distributed systems. In addition, gRPC is a key component of our OpenLambda research project (https://www.open-lambda.org/) which aims to provide an open-source, low-latency, serverless computational framework.
</div>
</div>

</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="http://www.pingcap.com">
<img src="../img/pingcap5.png" /></a></div>
<div>
<div class="testimonialquote">“ </div>
At PingCAP, we use gRPC in almost every project that involves interactions or communications through network. As has been proven, gRPC has well met our demands in terms of performance and usability. We also provide a production-ready gRPC library for Rust.
</div>
<div class="testimonialsection">
<div class="testimonialimage"><a href="https://github.com/Juniper/open-nti"><img src="../img/juniperlogo.png"/></a></div>
<div>
<span class="testimonialquote">“ </span>
<p>The fact that gRPC is built on HTTP/2 transport brings us native bi-directional streaming capabilities and flexible custom-metadata in request headers. The first point is important for large payloadexchange and network telemetry scenarios while the latter enables us to expand and include capabilities including but not limited to various network element authentication mechanisms.</p>
<p>In addition, the wide language binding support that gRPC/proto3 bringsenables us to provide a flexible and rapid development environment for both internal and external consumers.</p>
<p>Last but not least, while there are a number of network communicationprotocols for configuration, operational state retrieval and network telemetry, gRPC provides us with a unified flexible protocol and transport to ease client/server interaction.</p>
</div>
</div>

<div class="testimonialsection">
<div class="testimonialimage"><a href="http://www.pingcap.com"><img src="../img/pingcap5.png"/></a></div>
<div>
<span class="testimonialquote">“ </span>
At PingCAP, we use gRPC in almost every project that involves interactions or communications through network. As has been proven, gRPC has well met our demands in terms of performance and usability. We also provide a production-ready gRPC library for Rust.
</div>
</div>
</div>

<div class="aboutsection2">
<h2>Officially Supported Platforms</h2>

<div class="clearfix"></div>

<table style="width:80%;margin-top:5%;margin-bottom:5%">
<tr style="width:100%">
<th style="width:20%">Language </th><th> Platform </th><th>Compiler</th>
</tr>
## Officially supported platforms

<tr>
<td>C/C++</td><td>Linux/Mac</td><td>GCC 4.9+ <br> Clang 3.4+</td>
</tr>

<tr>
<td>C/C++</td><td>Windows 7+</td><td>Visual Studio 2015+</td>
</tr>

<tr>
<td>C#</td><td>Linux/Mac</td><td>.NET Core, Mono 4+</td>
</tr>

<tr>
<td>C#</td><td>Windows 7+</td><td>.NET Core, .NET 4.5+</td>
</tr>

<tr>
<td>Dart</td><td>Windows/Linux/Mac</td><td>Dart 2.0+</td>
</tr>

<tr>
<td>Go</td><td>Windows/Linux/Mac</td><td>Go 1.6+</td>
</tr>

<tr>
<td>Java</td><td>Windows/Linux/Mac</td><td>JDK 8 recommended. Gingerbread+ for Android</td>
</tr>

<tr>
<td>Node.js</td><td>Windows/Linux/Mac</td><td>Node v4+</td>
</tr>

<tr>
<td>Objective-C</td><td>Mac OS X 10.11+/iOS 7.0+</td><td>Xcode 7.2+</td>
</tr>

<tr>
<td>PHP (Beta) </td><td>Linux/Mac</td><td>PHP 5.5+ and PHP 7.0+</td>
</tr>

<tr>
<td>Python </td><td>Windows/Linux/Mac</td><td>Python 2.7 and Python 3.4+</td>
</tr>

<tr>
<td>Ruby </td><td>Windows/Linux/Mac</td><td>Ruby 2.3+</td>
</tr>

</table>
<!--
<style>
th:first-child { width: 20%; }
</style>

| Language | Platform | Compiler |
| -------- | -------- | -------- |
Expand All @@ -194,15 +145,22 @@ Check out what people are saying below:
| Java | Windows/Linux/Mac | JDK 8 recommended. Gingerbread+ for Android |
| Node.js | Windows/Linux/Mac | Node v4+ |
| Objective-C | Mac OS X 10.11+/iOS 7.0+ | Xcode 7.2+ |
| PHP * | Linux/Mac | PHP 5.5+ and PHP 7.0+ |
| PHP (beta) | Linux/Mac | PHP 5.5+ and PHP 7.0+ |
| Python | Windows/Linux/Mac | Python 2.7 and Python 3.4+ |
| Ruby | Windows/Linux/Mac | Ruby 2.3+ |
_* still in beta_
-->

<h2>The story behind gRPC</h2>
Google has been using a single general-purpose RPC infrastructure called Stubby to connect the large number of microservices running within and across our data centers for over a decade. Our internal systems have long embraced the microservice architecture gaining popularity today. Stubby has powered all of Google’s microservices interconnect for over a decade and is the RPC backbone behind every Google service that you use today. In March 2015, we decided to build the next version of Stubby in the open so we can share our learnings with the industry and collaborate with them to build the next version of Stubby both for microservices inside and outside Google but also for last mile of computing (mobile, web and IOT).
<br>
For more background on why we created gRPC, read the <a href="/blog/principles">gRPC Motivation and Design Principles blog</a>.
<br><br>
</div>

## The story behind gRPC

Google has been using a single general-purpose RPC infrastructure called Stubby
to connect the large number of microservices running within and across our data
centers for over a decade. Our internal systems have long embraced the
microservice architecture gaining popularity today. Stubby has powered all of
Google’s microservices interconnect for over a decade and is the RPC backbone
behind every Google service that you use today. In March 2015, we decided to
build the next version of Stubby in the open so we can share our learnings with
the industry and collaborate with them to build the next version of Stubby both
for microservices inside and outside Google but also for last mile of computing
(mobile, web and IOT).

For more background on why we created gRPC, see [gRPC Motivation and Design
Principles blog](/blog/principles).
2 changes: 1 addition & 1 deletion netlify.toml
Expand Up @@ -3,7 +3,7 @@ publish = "public"
command = "make production-build"

[build.environment]
HUGO_VERSION = "0.55.0"
HUGO_VERSION = "0.66.0"

[context.deploy-preview]
command = "make preview-build"
Expand Down

0 comments on commit 4980b45

Please sign in to comment.