Skip to content

Commit 683cb28

Browse files
authored
chore: change Golang to Go in news (#1455)
1 parent fcdc2a1 commit 683cb28

File tree

14 files changed

+61
-61
lines changed

14 files changed

+61
-61
lines changed

content/en/docs/kitex/Getting started/prerequisite.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ keywords: ["Kitex", "Golang", "Go", "Environment Preparation"]
77
description: "Environment preparation for Kitex development"
88
---
99

10-
Kitex, as a Golang microservice RPC framework, requires the following environment preparation: a **language environment** and **code generation tools**.
10+
Kitex, as a Go microservice RPC framework, requires the following environment preparation: a **language environment** and **code generation tools**.
1111

1212
> **Note: Be sure to complete this section**
1313
14-
## Golang
14+
## Go
1515

1616
**Go** (also known as **Golang**) is a statically typed, compiled, concurrent programming language developed by Google.
1717

18-
- Refer to [Golang Installation](https://go.dev/doc/install) for the environment setup of the Go language.
19-
- It is recommended to use the latest version of Golang. We ensure compatibility with the latest three official versions (currently >= **v1.17**).
20-
- Make sure to enable go mod support (enabled by default in Golang >= 1.15).
18+
- Refer to [Go Installation](https://go.dev/doc/install) for the environment setup of the Go language.
19+
- It is recommended to use the latest version of Go. We ensure compatibility with the latest three official versions (currently >= **v1.17**).
20+
- Make sure to enable go mod support (enabled by default in Go >= 1.15).
2121
- For Windows environment, kitex version >= v0.5.2 is required.
2222

2323
After completing the installation, open your terminal and enter `go version`. If the output displays the Go version and system architecture information correctly, it means the installation was successful. For example:

content/zh/blog/news/1st_RPCKitex/index.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ keywords:
1010
"RPC",
1111
"开源",
1212
"Kite",
13-
"Golang",
13+
"Go",
1414
"Thrift",
1515
"Protobuf",
1616
"gRPC",
@@ -26,11 +26,11 @@ author: <a href="https://github.com/YangruiEmma" target="_blank">YangruiEmma</a>
2626

2727
### CloudWeGo 和 Kitex
2828

29-
[Kitex][Kitex] 是 CloudWeGo 开源的第一个微服务框架,它是一个 **支持多协议的 Golang RPC 框架** ,从网络库、序列化库到框架的实现**基本完全自研**的。
29+
[Kitex][Kitex] 是 CloudWeGo 开源的第一个微服务框架,它是一个 **支持多协议的 Go RPC 框架** ,从网络库、序列化库到框架的实现**基本完全自研**的。
3030
特别地,[Kitex][Kitex] 对 gRPC 协议的支持使用了 gRPC 官方的源码,但是我们对 gRPC 的实现做了 **深度且定制的优化** ,所以 [Kitex][Kitex] 支持的 gRPC 协议性能优于 gRPC 官方框架。
31-
同时这也是 [Kitex][Kitex] 与目前已经开源的、支持 gRPC 协议的其他 Golang 框架的主要差异。如果用户想使用 gRPC 又对性能有很高的要求,那么 [Kitex][Kitex] 框架将会是一个很不错的选择。
31+
同时这也是 [Kitex][Kitex] 与目前已经开源的、支持 gRPC 协议的其他 Go 框架的主要差异。如果用户想使用 gRPC 又对性能有很高的要求,那么 [Kitex][Kitex] 框架将会是一个很不错的选择。
3232

33-
[Kitex][Kitex] 开源后,今年 CloudWeGo 又陆续开源了 Golang HTTP 框架 [Hertz](https://github.com/cloudwego/hertz),Rust RPC 框架 [Volo](https://github.com/cloudwego/volo),同时围绕这些微服务框架和微服务的一些通用能力,
33+
[Kitex][Kitex] 开源后,今年 CloudWeGo 又陆续开源了 Go HTTP 框架 [Hertz](https://github.com/cloudwego/hertz),Rust RPC 框架 [Volo](https://github.com/cloudwego/volo),同时围绕这些微服务框架和微服务的一些通用能力,
3434
我们还开源了一些高性能的基础库。关于更多 CloudWeGo 开源的子项目,可以进入 CloudWeGo [官网](/zh/)详细了解。
3535

3636
[CloudWeGo 官网](/)
@@ -44,13 +44,13 @@ author: <a href="https://github.com/YangruiEmma" target="_blank">YangruiEmma</a>
4444

4545
### Kitex 发展历史
4646

47-
2014 年,字节跳动开始引入 Golang。2015 年,字节跳动内部的服务化开启。在 RPC 调用的场景选择了 Thrift 协议,在内部开始支持 RPC 框架。2016 年,第一个 Golang RPC 框架 Kite 正式发布。
47+
2014 年,字节跳动开始引入 Go。2015 年,字节跳动内部的服务化开启。在 RPC 调用的场景选择了 Thrift 协议,在内部开始支持 RPC 框架。2016 年,第一个 Go RPC 框架 Kite 正式发布。
4848
通常在一个公司高速发展的初期,基础能力都是为了快速支持需求落地,面对的需求场景也较单一,设计上不会有较多考量,其实这也是合理的,因为探索阶段并不完全清楚还需要支持哪些场景,过多的考虑反而会出现过度设计的问题。
4949

5050
但是,随着业务场景复杂化,需求也会多样化,而且接入服务及调用量逐年增长,Kite 已经不足以支持后续的迭代,在线上服役三年多后,2019 年我们开启了新的项目 [Kitex][Kitex],2020 年初发布了正式版本,在 2020 年底字节内部已经有 1w+ 服务接入 Kitex。
5151

52-
从 2014 年到 2020 年,Golang 已经是字节跳动内部主要的业务开发语言,应该是业界 Golang 应用最多的公司。我们的服务框架支持着数万个 Golang 微服务的可靠通信,
53-
经过数量众多的微服务和海量流量的验证,我们已经有了较为成熟的微服务最佳实践,于是考虑将内部的实践开源出去丰富云原生社区的 Golang 产品体系。
52+
从 2014 年到 2020 年,Go 已经是字节跳动内部主要的业务开发语言,应该是业界 Go 应用最多的公司。我们的服务框架支持着数万个 Go 微服务的可靠通信,
53+
经过数量众多的微服务和海量流量的验证,我们已经有了较为成熟的微服务最佳实践,于是考虑将内部的实践开源出去丰富云原生社区的 Go 产品体系。
5454
在 2021年,我们以 CloudWeGo 品牌正式开源了第一个服务框架 [Kitex][Kitex]。截至今年 8 月,[Kitex][Kitex] 已经为字节跳动内部 **6w+** 的服务提供支持, **峰值 QPS 达到上亿级别**
5555

5656
![image](/img/blog/1st_RPC_Kitex/3.png)
@@ -68,7 +68,7 @@ author: <a href="https://github.com/YangruiEmma" target="_blank">YangruiEmma</a>
6868
如此,我们就可以将 [Kitex][Kitex] Core 和 Tool 部分开源出去。我们将代码做了拆分,[Kitex][Kitex] 的核心代码和工具部分迁移到开源库,集成内部扩展的模块作为 [Kitex][Kitex] 的扩展保留在内部库,同时内部库封装一层壳保证内部用户可以无感知地升级。
6969

7070
那么 [Kitex][Kitex] 的开源就只是代码拆分这么简单吗?显然不是。2021 年 2 月,我们开始筹备 [Kitex][Kitex] 的开源,虽然基于 [Kitex][Kitex] 的扩展性,我们可以与内部基础设施集成的能力解耦,但是 [Kitex][Kitex] 仍然依赖内部的一些基础库,如果要开源必须先开源基础库的能力。
71-
所以我们首先做了依赖库的梳理,与相关的同学合作首先开源了 **bytedance/gopkg** 库。这个库由 CloudWeGo 与字节跳动的语言团队合作维护,里面包含也了对 Golang 标准库能力的增强,感兴趣的同学可以关注使用。
71+
所以我们首先做了依赖库的梳理,与相关的同学合作首先开源了 **bytedance/gopkg** 库。这个库由 CloudWeGo 与字节跳动的语言团队合作维护,里面包含也了对 Go 标准库能力的增强,感兴趣的同学可以关注使用。
7272

7373
bytedance/gopkg: https://github.com/bytedance/gopkg
7474

@@ -138,7 +138,7 @@ Protobuf 的泛化也是应用在 API 网关的场景。原来的 HTTP 泛化传
138138
**目前 [Kitex][Kitex] 的泛化主要针对后端的 Thrift 服务,无论是 Protobuf、Map 还是 JSON,[Kitex][Kitex] 都会在调用端结合 IDL 解析,将这些数据映射编码为 Thrift 包发给后端服务。**
139139

140140
那么为什么把泛化放在调用端而不是服务端呢?大家广泛了解的泛化都是服务端对泛化请求做了解析处理,当然调用端也要相应地提供泛化的 Client。
141-
但是泛化面向的是通用服务,泛化使用成本其实是比较高的,它并不适用于普通的 RPC 场景,而通用服务面向的是所有后端的服务,有 Golang/Java/C++/Python/Rust,如果每一种语言框架都支持泛化,成本是非常高的。
141+
但是泛化面向的是通用服务,泛化使用成本其实是比较高的,它并不适用于普通的 RPC 场景,而通用服务面向的是所有后端的服务,有 Go/Java/C++/Python/Rust,如果每一种语言框架都支持泛化,成本是非常高的。
142142
就算各个语言都对泛化做了支持,框架版本收敛又是一个漫长的过程,对于通用服务来说,对接所有的服务就显得不太现实。综合以上原因,泛化放在调用端支持。
143143

144144
#### 重试能力增强

content/zh/blog/news/1st_httpHertz/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ date: 2022-09-27
33
title: "助力字节降本增效,大规模企业级 HTTP 框架 Hertz 设计实践"
44
projects: ["Hertz"]
55
linkTitle: "助力字节降本增效,大规模企业级 HTTP 框架 Hertz 设计实践"
6-
keywords: ["Hertz", "HTTP", "Golang", "Gin", "高性能", "可扩展"]
6+
keywords: ["Hertz", "HTTP", "Go", "Gin", "高性能", "可扩展"]
77
description: "本文描述了字节跳动内部的大规模企业级 HTTP 框架 Hertz 的设计实践,包括 Hertz 的项目起源、架构设计、功能特性,性能表现等方面。"
88
author: <a href="https://github.com/welkeyever" target="_blank">welkeyever</a>
99
---
@@ -22,7 +22,7 @@ author: <a href="https://github.com/welkeyever" target="_blank">welkeyever</a>
2222

2323
### 基于 Gin 封装
2424

25-
众所周知,字节内部使用 Golang 比较早,在大约 2014 年左右,公司就已经开始尝试做一些 Golang 业务的转型。2016 年,我们基于已开源的 Golang HTTP 框架 Gin 框架,封装了 Ginex,这是 Ginex 刚开始出现的时期。
25+
众所周知,字节内部使用 Go 比较早,在大约 2014 年左右,公司就已经开始尝试做一些 Go 业务的转型。2016 年,我们基于已开源的 Go HTTP 框架 Gin 框架,封装了 Ginex,这是 Ginex 刚开始出现的时期。
2626

2727
同时,2016 年还是一个开荒的时代,这个时期框架伴随着业务快速野蛮地生长,我们的口号是“大力出奇迹”,把优先解决业务需求作为第一要务。Ginex 的迭代方式是业务侧和框架侧在同一个仓库里面共同维护和迭代。
2828

@@ -42,7 +42,7 @@ Ginex 是一个基于 Gin 的开源封装,所以它本身在迭代方面是受
4242

4343
- **无法满足性能敏感业务需求**
4444

45-
另外,我们能用 Gin 做的性能优化非常少,因为 Gin 的底层是基于 Golang 的一个原生库,所以如果我们要做优化,需要在原生库的基础上做很多改造,这个其实是非常困难的。
45+
另外,我们能用 Gin 做的性能优化非常少,因为 Gin 的底层是基于 Go 的一个原生库,所以如果我们要做优化,需要在原生库的基础上做很多改造,这个其实是非常困难的。
4646

4747
- **无法满足不同场景的功能需求**
4848

@@ -67,7 +67,7 @@ Ginex 是一个基于 Gin 的开源封装,所以它本身在迭代方面是受
6767

6868
- **早期基于开源框架封装**
6969

70-
基于早期开源的 Golang HTTP 框架,实现了 Ginex 的封装。
70+
基于早期开源的 Go HTTP 框架,实现了 Ginex 的封装。
7171

7272
- **随着实践发展,问题逐渐出现**
7373

content/zh/blog/news/Evolution_Kitex_HighPerformance/index.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ author: <a href="https://github.com/lsjbd" target="_blank">lsjbd</a>
1111
## 字节微服务框架的挑战和演进
1212

1313
2014 年以来,字节跳动内部业务的快速发展,推动了长连接推送服务,它们面临着高并发的业务需求问题,对性能和开发效率都有很高要求。当时的业务,大部分都是由 Python 开发,难以应对新出现的问题。
14-
项目负责人在一众现存的技术栈中选择了 Golang 这一门新兴的编程语言,快速解决了性能和开发效率的问题。随后,字节跳动内部开始逐渐推广使用 Golang 进行服务开发。
14+
项目负责人在一众现存的技术栈中选择了 Go 这一门新兴的编程语言,快速解决了性能和开发效率的问题。随后,字节跳动内部开始逐渐推广使用 Go 进行服务开发。
1515

16-
2016 年, 第一代 Golang RPC 框架 Kite 正式发布。Kite 是一个基于 Apache Thrift 进行包装的 RPC 框架,它在 Facebook 开源的 Thrift 之上提供了结合字节跳动内部基础设施的治理功能,
17-
同时还提供了一套简单易用的生成工具。随着 Kite 的发展,业务开始大规模使用 Golang。然而,在业务发展的过程中,由于研发专注于实现业务需求,对于框架的可维护性考量不足,Kite 逐渐背上了一些技术包袱,
16+
2016 年, 第一代 Go RPC 框架 Kite 正式发布。Kite 是一个基于 Apache Thrift 进行包装的 RPC 框架,它在 Facebook 开源的 Thrift 之上提供了结合字节跳动内部基础设施的治理功能,
17+
同时还提供了一套简单易用的生成工具。随着 Kite 的发展,业务开始大规模使用 Go。然而,在业务发展的过程中,由于研发专注于实现业务需求,对于框架的可维护性考量不足,Kite 逐渐背上了一些技术包袱,
1818
越来越难以满足业务在高性能和新特性方面的需求。因此我们决定对 Kite 进行重新设计,于是出现了 [Kitex][Kitex]
1919

2020
2020 年,[Kitex][Kitex] 在内部发布了 v1.0.0,并且直接接入了 1,000+ 服务。由于 [Kitex][Kitex] 的优秀性能和易用性,[Kitex][Kitex] 在内部得到了大规模发展。
@@ -23,20 +23,20 @@ author: <a href="https://github.com/lsjbd" target="_blank">lsjbd</a>
2323
![image](/img/blog/Evolution_Kitex_High-performance/GolangRPC.png)
2424

2525
<p align="center">
26-
字节跳动 Golang RPC 框架的演进
26+
字节跳动 Go RPC 框架的演进
2727
</p>
2828

2929
### Kite 的缺陷
3030

31-
Kite 作为字节跳动第一代 Golang RPC 框架,主要存在以下缺陷:
31+
Kite 作为字节跳动第一代 Go RPC 框架,主要存在以下缺陷:
3232

3333
1. Kite 为了快速支持业务发展需求,不可避免地耦合了部分中台业务的功能;
3434
2. Kite 对 Go modules 支持不友好(Go modules 在 2019 年才进入语言核心);
3535
3. Kite 自身的代码拆分成多仓库,版本更新时推动业务升级困难;
3636
4. Kite 强耦合了早期版本的 Apache Thrift,协议和功能拓展困难;
3737
5. Kite 的生成代码逻辑与框架接口强耦合,成为了性能优化的天花板。
3838

39-
因此,业务的快速发展和需求场景的多样化,催生了新一代 Golang RPC 框架 [Kitex][Kitex]
39+
因此,业务的快速发展和需求场景的多样化,催生了新一代 Go RPC 框架 [Kitex][Kitex]
4040

4141
### Kitex
4242

@@ -59,7 +59,7 @@ Kitex 的架构设计
5959

6060
由于之前已经体验过了 Kite 维护的各种问题,我们在立项之初就考虑到了未来可能会开源 [Kitex][Kitex]。因此,我们设计的第一个宗旨就是不将 [Kitex][Kitex] 和公司内部的基础设施进行强耦合或者硬编码绑定。
6161
Kitex Core 是一个非常简洁的框架,公司内部的所有基础设施都以拓展的方式注入到 Kitex Core 里。即使我们现在已经开源了,它也以这种形式存在。
62-
公司内部基础设施的更新换代,和 [Kitex][Kitex] 自身的迭代是相互独立的,这对于业务来说是非常好的体验。同时,在 [Kitex][Kitex] 的接口设计上,我们使用了 Golang 经典的 Option 模式,
62+
公司内部基础设施的更新换代,和 [Kitex][Kitex] 自身的迭代是相互独立的,这对于业务来说是非常好的体验。同时,在 [Kitex][Kitex] 的接口设计上,我们使用了 Go 经典的 Option 模式,
6363
它是可变参数,通过 Option 能够提供各种各样的功能,这为我们的开发和业务的使用都带来了非常大的灵活性。
6464

6565
### Kitex 的功能特性

content/zh/blog/news/Hertz_Open_Source/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ author: <a href="https://github.com/CloudWeGo" target="_blank">CloudWeGo</a>
1818
## 01 Hertz 概述
1919

2020
[Hertz][Hertz] 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。最初,字节跳动内部的 HTTP 框架是对 Gin 框架的封装,具备不错的易用性、生态完善等优点。
21-
随着内部业务的不断发展,对高性能、多场景的需求日渐强烈。而 Gin 是对 Golang 原生 net/http 进行的二次开发,在按需扩展和性能优化上受到很大局限。
21+
随着内部业务的不断发展,对高性能、多场景的需求日渐强烈。而 Gin 是对 Go 原生 net/http 进行的二次开发,在按需扩展和性能优化上受到很大局限。
2222
因此,为了满足业务需求,更好的服务各大业务线,2020 年初,字节跳动服务框架团队经过内部对使用场景和外部主流开源 HTTP 框架 Fasthttp、Gin、Echo 的调研后,
2323
开始基于自研网络库 [Netpoll][Netpoll] 开发内部框架 [Hertz][Hertz],让 [Hertz][Hertz] 在面对企业级需求时,有更好的性能及稳定性表现,也能够满足业务发展和应对不断演进的技术需求。
2424
2021 年 7 月,[Hertz][Hertz] 正式上线 1.0 版本。
@@ -74,7 +74,7 @@ author: <a href="https://github.com/CloudWeGo" target="_blank">CloudWeGo</a>
7474

7575
## 03 RoadMap
7676

77-
对于基础架构团队而言,[Hertz][Hertz] 不仅仅是一个开源项目,它也是一个**真实的超大规模企业级实践项目**。通过开源,我们希望 [Hertz][Hertz] 能丰富云原生社区的 Golang 中间件体系,
77+
对于基础架构团队而言,[Hertz][Hertz] 不仅仅是一个开源项目,它也是一个**真实的超大规模企业级实践项目**。通过开源,我们希望 [Hertz][Hertz] 能丰富云原生社区的 Go 中间件体系,
7878
完善 CloudWeGo 生态矩阵,为更多开发者和企业搭建云原生化的大规模分布式系统,提供一种现代的、资源高效的的技术方案。
7979

8080
如前文所述,目前 [Hertz][Hertz] 只开源了内部经过稳定性验证的部分,未来,我们会进一步推动其走向完善:

content/zh/blog/news/Kitex_Proxyless_OpenTelemetry/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ author: <a href="https://github.com/CoderPoet" target="_blank">CoderPoet</a>
1414

1515
### **Kitex Proxyless**
1616

17-
> [Kitex][Kitex] 是字节开源的 Golang RPC 框架,已经原生支持了 xDS 标准协议,支持以 Proxyless 的方式被 ServiceMesh 统一纳管。
17+
> [Kitex][Kitex] 是字节开源的 Go RPC 框架,已经原生支持了 xDS 标准协议,支持以 Proxyless 的方式被 ServiceMesh 统一纳管。
1818
>
1919
> - 详细设计见:
2020
> [Proposal: Kitex support xDS Protocol · Issue #461 · cloudwego/kitex](https://github.com/cloudwego/kitex/issues/461)

0 commit comments

Comments
 (0)