Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭

Posted DevLink

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭相关的知识,希望对你有一定的参考价值。

DevLink与Go语言北京用户组联合举办的X to Go语言“小课桌”技术分享活动,将于9月3日在上地福道大厦链家网举办,活动面向对Go感兴趣的开发者,希望能够帮助到大家快速了解Go这个新时代的编程语言。


会前我们对本次活动的讲师之一,亚信数据平台部工程师——刘旭老师进行了文字专访。


1
刘旭老师您好,能否简单介绍一下自己?

大家好,我是刘旭。前游戏开发者。目前在亚信数据云平台部做研发工作,主要参与大数据PaaS平台DataFoundry和P2P数据交易平台DataHub等项目的后台开发。

2
在使用Go作为主要开发语言之前,您的开发工具是什么?为什么会选择转到Go呢?

之前做游戏开发工作,主要是用ActionScript3作为前端语言写过一些Flash Web和手机游戏。另外也使用过C写过游戏后台服务器程序。


在转Go之前,曾经花了不少时间使用Java写过一个不大不小的网站后台,这个网站运行在Google App Engine上。在做这个网站的过程中,饱受Java的摧残。当时GAE只支持Python和Java两种语言,考虑到Java的运行效率更高这个原因,当时选择了Java作为后台语言。后来证明这是一个大错特错的决定。GAE价格最低的实例的配置为600MHz CPU+128M 内存,这样的配置跑Java后台程序相当的吃力,内存基本不够用。而且一个Java实例从启动到初始化完成能够处理用户请求常常需要20多秒,这导致在部署新版本的时候,用户体验相当的不好。Java的另一个致命缺点是开发效率太低,编译时间太长。


后来决定替代Java,考察了很多语言,最后选择了Go(我对程序运行效率比较在意,所以否掉了很多脚本语言)。事实证明,这个选择很正确。Go程序运行效率不输Java,内存使用、启动速度和开发效率完胜Java。同样规模的程序,Go的内存使用只有Java的1/5还少,这决定了服务器租赁费用的大大降低。即使对于一个很复杂的Go程序,启动速度也可以说是秒启,因此在部署新版本的时候,用户体验基本不会受到影响。


使用Go相比Java还有一个很大的优势:学习成本低太多了,你不用去花n多的时间去学习语言本身之外的各种Frameworks的使用。

3
我们知道,您在亚信负责大数据和交易平台方面的研发工作,能聊聊Go在这些方面有什么独有的优势么?

目前Golang有两个应用热点,一个是微服务,一个是网络平台工具软件,另外目前在数据库领域的使用也比较活跃。


目前在亚信数据参与的两个项目都采用了微服务架构的模式,好处是便于分工和维护。Go标准库原生完美支持http/socket编程和各种编码协议,这使得编写微服务相当的轻松。Golang开源社区非常活跃,很容易找到各种需要的第三方开源库,我们的微服务项目中使用较多的包括http router和Shopify维护的sarama kafka客户端等。


Golang目前在网络平台工具软件领域占据很大份额,大家耳熟能详的很多软件,比如docker, kubernetes, etcd等等,都是使用Golang开发的。亚信数据的DataFoundry是基于kubernetes/Openshift Origin开发的面向大数据的PaaS平台。Golang的接口特性和对并发的原生支持给复杂网络应用程序的设计提供了很大的便利。

4
与其他讲师的分享内容相比,这次您的讲解的内容偏重底层,能否提前跟大家分享下,为什么会选择这样的分享主题呢?

不好意思,演讲题目《Golang语法细节底层挖掘》里的底层有点噱头。这里的底层主要是指一些语法规则背后的原因。对于Golang运行时的底层实现,本次演讲并未过多涉及。


选择这个主题源于我学习Golang的整个经历。Golang确实是一门语法比较简单比较忠于传统的语言。但是在使用Golang的时候,特别是刚开始的时候,常常遇到很多官方文档也没有提及的细节和用法。所以本次演讲的目的就是展示这些细节,希望这些细节能使大家对Golang有更深的理解。当然,这次演讲不可能涉及所有Golang中的细节,我正在编写一个Golang小册子,里面会包含尽量多的Golang细节。

5
对Go开发者和希望了解Go的同学们有什么要说的么?

第一,Golang绝对是当前最值得学习的一门语言之一。Golang是目前在执行效率、内存消耗、启动速度和开发速度这几大指标上综合得分最高的语言(本人认为没有之一)。


第二,不要抱着Golang是一门完美的语言的期望来学习Golang。Golang中的很多语法设计细节是在多方面权衡下的结果,不可能让每一个人都满意。




本次刘旭老师演讲的议题及提纲

Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭
Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭

Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭 Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭 


DevLink与Go语言北京用户组联合举办的X to Go的“小课桌”技术分享活动,将于9月3日在上地福道大厦举办,本次活动旨在面向Golang的初学者,从Go语言的独有特性,到入门上手、性能优化,为他们制定了一个下午的分享议题,希望能够帮助到其他开发者快速了解、接触到Go这个新时代的编程语言。


Go 作为一个相对较新的语言,在网络编程、并发能力、部署方便性上有其自身的优势。有很多开发者在持续关注 Go 语言的进展,并正在考虑是否利用 Go 写一些东西,试着接触下这个人称“网络时代的 C 语言”的神器。


特别感谢本次活动的联合主办方,Go语言北京用户组(GopherBeijing),该用户组由《Go并发编程实战》的作者郝林发起,并有多位业界公认的Go技术大牛领衔。成立至今,我们主办的活动以每年两场中型聚会和一次小型特色竞赛或会议的频率进行。GopherBeijing的主旨是推广Go语言以及相关技术,帮助Go语言用户更好的使用相关技术和服务,促进Go语言用户及相关公司之间的交流和接洽,凝聚社区的力量,并服务于社区。

您可以扫描下面的二维码加入Go语言北京用户组:

更多市场合作请发邮件至hushuqi@devlink.cn或致电13752002090


此次活动正在火热报名中,您可以点击页面下方的【阅读原文】了解更多详情并购票参会。

以上是关于Go语言在微服务架构上的优势,专访亚信数据平台部工程师——刘旭的主要内容,如果未能解决你的问题,请参考以下文章

从微服务到Serverless 架构应用与实践

go语言能做啥?

Golang Kubenetes容器多集群平台开发实践

专访Go语言布道师Dave Cheney:Go语言这十年,只能用“成功”一词总结

Go使用grpc+http打造高性能微服务

方圆-罗辑思维Go语言微服务改造实践