这一系列文章会记录我的Golang学习历程,知识结构可能会很杂乱,也可能会很基础,但是最终的目标是开发基于Golang的微服务。文章知识很基础,主要给想尝试后端技术栈的前端看的,后端大佬别看了,很可能浪费你的时间。欢迎大家一起讨论进步,文章标题不代表这篇文章内容...
心路历程剖析
先说下为啥要写微服务相关的文章。 从我学Golang这门语言说起吧,自己一直是做前端开发的,平时也会用Node.js和Laravel写后端项目,但是始终觉得Node.js和PHP去操作系统底层很吃力(个人主观感受),总想有一门语言可以深入系统底层一点,C语言家族在满足深入系统底层一点当之无愧的。但是入门时间太久,基本功要求也很高。最后发现了Golang,深入底层,网络开发,Web开发,还有我一直想尝试的微服务开发都有相应的解决方案。个人觉得自己有幸抓住了互联网浪潮的尾巴,下一个5G物联网浪潮可不能错过,互联网时代,边缘计算,分布式,微服务,大数据都是很好的方向。Golang语言作为一个互联网时代的C语言,可以很好的满足这些需求。抓住这个机遇,兴许可以凭借Go弯道超车。
Go使用遇到的问题
0.镜像文件下载
这个问题刚开始遇到的时候把自己的学习热情消磨殆尽,真的是很坑,后来找到了设置代理镜像的方式: GOPROXY.IO才算把这坑躺过去。期间也尝试了很多笨办法,直接下载 github仓库的源码,结果发现下载的包还有依赖,不停的下载,不停的报依赖错误。。。等所有的依赖处理好后黄花菜都凉了。
1.GOPATH
我在安装完Go后(MAC机器),运行
go env
发现自己的 GOPATH 配置惨不忍睹,设置了很多个路径,可能是刚开始尝试Go只顾着网上教程配置,没有深入理解GOPATH含义,于是想着怎么让配置简单明了,最后找到了配置方法。
vim ~./bash_profile
将 $HOME/go
目录添加到PATH里面,这一步设置后再查看GOPATH,可以看到GOPATH值为Users/winyh/go
了,后期下载依赖包文件时会默认下载到 GOPATH(路径有多个时,如/usr/local/bin:/Users/winyh/go
)第一个路径。
export GOPATH=$HOME/go
将 $HOME/go/bin
添加到PATH,后期可以直接执行 这个目录下的 命令行
export PATH=$PATH:$HOME/go/bin
2.Go项目目录设置
在 GOPATH 目录下新建
bin pkg src
三个文件夹,我们日常开发的源码就放在src里,新建一个项目目录src/tech
,go get xxx
下载到的依赖包默认下载到 pkg 文件夹下,在 src 下的项目里执行 go install tech
命令时,生成的二进制文件会保存到 bin 目录下,切换目录到 bin , 可以 ./tech
直接执行我们开发好的tech项目。
3.项目包依赖
我选择的是govendor工具,个人感觉比较好用.
go get -u github.com/kardianos/govendor
具体使用方法可以自己看下文档,因为我经常接触Node.js 和Laravel,说下我的理解,类比于PHP的Composer
, Node.js的 npm
,就是第三方的包依赖管理,在自己项目govendor init
会初始化一个 vendor
文件夹和vendor.json
包依赖记录文件。相当于 Laravel
的vendor
和 Composer.json
和 Node.js
的package.json
。
4.后记
在尝试的过程中,一步一步解决问题的感觉还是挺有成就感的,当然也会有烦躁不安的时候,比如被墙了,被新概念困扰了,但是多尝试几次不断试错之后会问题的根本原因和底层原理会越来越明朗,跨过去就好了,小伙伴们加油!
任何优秀的微服务框架都需要解决这三个基础问题:
- 服务发现
- 同步通信
- 异步通信
下一篇文章将深入Micro微服务框架默认的服务注册与发现中心Consul 《基于Golang的微服务——Consul》