1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00

update intro

This commit is contained in:
Xargin 2018-07-23 00:22:13 +08:00
parent 0fc576a0a1
commit afa5447c33

View File

@ -2,9 +2,15 @@
从 2014 年 docker 诞生开始Go 语言开始在分布式领域崭露头角,之后 k8skonggroupcachenatsetcdtidb 让人们不断看到了 Go 在分布式领域的新的可能性。目前在大部分的分布式场景下Go 语言都有相应的产品无论是存储rpc 框架消息队列等等。Go 被称为分布式时代的 C 语言着实是言非虚。 从 2014 年 docker 诞生开始Go 语言开始在分布式领域崭露头角,之后 k8skonggroupcachenatsetcdtidb 让人们不断看到了 Go 在分布式领域的新的可能性。目前在大部分的分布式场景下Go 语言都有相应的产品无论是存储rpc 框架消息队列等等。Go 被称为分布式时代的 C 语言着实是言非虚。
从语言本身的特点来讲Go 编译后不依赖外部运行环境,部署方便,无论公司内的部署系统是古老的 ansible还是现在的 docker 镜像部署。都能够方便地与 Go 进行集成。所以 Go 天生适合分布式场景。而在没有 docker 的旧时代python、java 类的语言都会遇到部署时依赖环境冲突的问题,为此还出现了不少专门解决这些环境问题的工具 从语言本身的特点来讲Go 编译后不依赖外部运行环境,部署方便,无论公司内的部署系统是古老的 ansible还是现在的 docker 镜像部署。都能够方便地与 Go 进行集成。所以 Go 天生适合分布式场景。而在没有 docker 的旧时代python、java 类的语言需要上线时额外关注运行环境的问题。实际上是增加了工程运维方面的心智负担
比如 python 为了解决这个问题推出了 pipenv 方案。java 系统中要为无法共享 jvm 环境的应用分别设置自己的环境变量。 python 为了解决这个问题还专门推出了 pipenv 方案。java 系统中要为每个模块设置自己的 jre 路径,以保证模块能够正常运行。
而使用 Go 则完全没有这些烦恼。
需要注意的是,到了分布式环境,很多程序运行是与我们的直觉相悖的。这一点与计算机刚刚进入多核心时代类似,程序员们手忙脚乱地修改历史遗留程序,以使之适应多核环境并提高性能,但是却发现多核心也带来了一些问题,比如怎么才能合理地利用 cpu 的多级缓存来提高性能,为什么我的算法修改为多核心之后反而更慢了。
同理,分布式环境可以认为是一个分布式计算机。每台机器即是这个分布式计算机的一个核心。在这个环境下编程,你同样需要解决那些在多核心刚刚到来时困扰程序员们的那些问题。
## 锁 ## 锁