download:Go开发工程师
Go开发工程师:迎接上升风口,踏入蓝海行业!
适合零基础小白学习吗
小同学,当你问出这句话的时候,就说明你已经不是小白了,你是个很有主见的“大人”了,要是你问零基础适合学习么?我肯定的告诉你:非常适合,而且要相信自己不是小白,而是小牛~祝你更进一步,加油~
课程中的项目是真的企业级/商业级项目么?
同学这个问题是我见过问得最有水平的问题了~ 确实网络上充斥了很多美其名曰“企业级/商业项目”,然而当你咨询想要体验一下项目效果,这么最低的标准都达不到,也就是网络充斥很多打着“企业级”名号的耍流氓项目,他们连最低的企业级标准--可部署可上线标准都达不到! 那么,同学想一下这个问题:什么样的标准才能称之为“企业级/商业级”?那么我认为有如下几点标准必须符合: 1、 【最低标准】可部署可上线(课程两个分别打开微信,搜索“租辆酷车”、“波哥电商”体验项目) 2、 真正的三端分离项目(两项目都符合,以微商城举例) 3、 满足企业真实的开发场景(以共享出行项目为例) (1) 先进的google设计理念+架构实践 (2) 符合当前最前卫的开发流程 (3) “敏捷开发”、“领域驱动DDD”等的最佳实践 4、 符合企业标准架构演进:从三端分离到微服务化项目迭代 (1) 微电商项目(前端+后端+后台管理-->搜索微服务化) (2) 共享出行项目(Typescript前端+后端+Vue3.0后台管理-->云原生微服务)
背景
在触摸Golang以前,我用C/C++、Lua及Python作为主要开发言语。
C/C++的问题:
- 开发功率低,对开发者要求高
- libc只向后兼容,运维难度偏大
Lua/Python的问题:
- 动态言语,缺少编译进程,初级过错频出
- 缺少有用的功能分析及调试工具
场景
当时刚完结了nginx WAF模块的开发工作,便开始着手搭建WAF的后台管理体系。 由于之前同事都用的fluentd作为日志搜集组件,为保持基础组件的一致性,我也挑选了fluentd。 即最终架构为fluentd->mongodb->mysql,再基于mysql做前端数据展现。 后来被坑了许屡次,就决议用Go重写fluentd以解决下面几个问题:
- fluentd在ubuntu 9.04偶尔会呈现假死,导致数据丢失
- fluentd难以接入公司现有的包发布体系,导致运维难度极大
- mongodb采用mmap完结,数据量大时占用内存过高
计划
事实上,这两个项目都是为了解决上面提到的问题。 说起来或许你不信,这两个套代码是我在业余时刻完结的,也就是说这根本不算在KPI之内。 其实一开始我也没想到能够这么快就写得七七八八,究竟是现学现用啊。 但实际情况就是,我花了一周时刻写完httpmq,一个月多时刻就写好了gofluent……当然,这两个项目还有许多不完善的地方。目前就日志搜集计划来说,我更推荐elastic/logstash-forwarder · GitHub和elastic/logstash · GitHub配合运用。
为什么挑选Golang
那么,为什么我会挑选Golang呢?其实我在做出这个挑选之前现已花了大量时刻做过翔实调研。 国外如Google、AWS、Cloudflare、CoreOS等,国内如七牛、阿里等都现已开始大规模运用Golang开发其云计算相关产品。 跟着世界级巨人的脚步应该不至于走错方向,并且在学习Golang的进程中,我也渐渐被其背后的设计哲学所折服。
别的,云风博客中曾说过这样一句话:
我发现我花了四年时刻锻炼自己用 C 言语构建体系的能力,企图找到一个规范,可以更好的编写软件。结果发现只是对 Go 的仿照。缺乏言语层面的支持,只能是一个拙劣的仿照。
以下则是我对Golang的浅陋理解:
- 有C基础,学Golang非常轻松
- 同步方式轻松完结高并发
- 代码简洁,格式统一,阅读便利
- 功能强劲的同时,开发功率又不差于Python等动态言语
效果
最开始预备上线的时分其实心里挺忐忑,究竟一旦呈现故障,不只黑锅得自己背,面子也上过不去啊。 还好结果蛮美丽,自上线后没呈现过一次突发性BUG,降低运维难度的同时还减少了机器的负载。
总而言之,从工程的角度上来看,关于大多数后台应用场景,挑选Golang是极为正确的挑选。 这样可以很轻松的兼顾运行功能、开发功率及维护难度这三大让诸多程序猿欲仙欲死的奇点。