基于Golang的微服务——上手篇

这一系列文章会记录个人Golang学习历程,知识结构可能会很杂乱,也可能会很基础,可是最终的目标是开发基于Golang的微服务。文章知识很基础,主要给想尝试后端技术栈的前端看的,后端大佬别看了,极可能浪费你的时间。欢迎你们一块儿讨论进步,文章标题不表明这篇文章内容...前端

心路历程剖析

先说下为啥要写微服务相关的文章。 从我学Golang这门语言提及吧,本身一直是作前端开发的,平时也会用Node.js和Laravel写后端项目,可是始终以为Node.js和PHP去操做系统底层很吃力(我的主观感觉),总想有一门语言能够深刻系统底层一点,C语言家族在知足深刻系统底层一点当之无愧的。可是入门时间过久,基本功要求也很高。最后发现了Golang,深刻底层,网络开发,Web开发,还有我一直想尝试的微服务开发都有相应的解决方案。我的以为本身有幸抓住了互联网浪潮的尾巴,下一个5G物联网浪潮可不能错过,互联网时代,边缘计算,分布式,微服务,大数据都是很好的方向。Golang语言做为一个互联网时代的C语言,能够很好的知足这些需求。抓住这个机遇,兴许能够凭借Go弯道超车。git

Go使用遇到的问题

0.镜像文件下载

这个问题刚开始遇到的时候把本身的学习热情消磨殆尽,真的是很坑,后来找到了设置代理镜像的方式: GOPROXY.IO才算把这坑躺过去。期间也尝试了不少笨办法,直接下载 github仓库的源码,结果发现下载的包还有依赖,不停的下载,不停的报依赖错误。。。等全部的依赖处理好后黄花菜都凉了。github

1.GOPATH

我在安装完Go后(MAC机器),运行npm

go envjson

发现本身的 GOPATH 配置惨不忍睹,设置了不少个路径,多是刚开始尝试Go只顾着网上教程配置,没有深刻理解GOPATH含义,因而想着怎么让配置简单明了,最后找到了配置方法。vim

vim ~./bash_profile后端

$HOME/go目录添加到PATH里面,这一步设置后再查看GOPATH,能够看到GOPATH值为Users/winyh/go了,后期下载依赖包文件时会默认下载到 GOPATH(路径有多个时,如/usr/local/bin:/Users/winyh/go)第一个路径。bash

export GOPATH=$HOME/gomarkdown

$HOME/go/bin添加到PATH,后期能够直接执行 这个目录下的 命令行网络

export PATH=$PATH:$HOME/go/bin

2.Go项目目录设置

在 GOPATH 目录下新建

bin pkg src

三个文件夹,咱们平常开发的源码就放在src里,新建一个项目目录src/techgo 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包依赖记录文件。至关于 LaravelvendorComposer.jsonNode.jspackage.json

4.后记

在尝试的过程当中,一步一步解决问题的感受仍是挺有成就感的,固然也会有烦躁不安的时候,好比被墙了,被新概念困扰了,可是多尝试几回不断试错以后会问题的根本缘由和底层原理会愈来愈明朗,跨过去就行了,小伙伴们加油!

任何优秀的微服务框架都须要解决这三个基础问题:

  • 服务发现
  • 同步通讯
  • 异步通讯

下一篇文章将深刻Micro微服务框架默认的服务注册与发现中心Consul 《基于Golang的微服务——Consul》

相关文章
相关标签/搜索