03.06 想知道现在golang语言怎样,它能不能开发网站?

觀眾839


先给结论:完全可以

商用实践:

已经通过很多大公司的商用实践,例如B站,YY,包括字节跳动,国外更不用说了,Google,所以从这个角度上来说,已经经过大规模的实践,所以如果你想用用于自己小网站的搭建是没有任何问题,如果你想用于初创公司的使用,还是需要有自己的一定积累,至少有过实践的经验

golang周边:

java在国内的强大,得益于它的生态,各种组件百花争鸣,例如消息中间件rocketmq,分库分表sharding-jdbc,spring整个生态,mybatis,jedis,elasticsearch,zookeeper,dubbo等等都非常齐全,这样可以方便大家能够快速地进行公司业务开发,可以减少重复造轮子

golang这几年也开始逐渐发力,各个组件也开始完善起来,例如etcd,消息中间件nsq,从跟上解决数据量巨大问题,pingcap公司开发了线事务处理/在线分析处理的融合型数据库产品TIDB,

web框架gin,beego,iris等等,也有各路大神提供了连接各个其他redis,elasticsearch等等组件,还是比较齐全的,rpc框架也有go-mirco,rpcx等等,只要你想要用,基本上来说,golang的生态周边还是比较全的,方便大家使用

golang的模块管理

java的方便还得益于它的包管理,maven,gradle,这样大大方便了大家的使用,可以提供大家的开发效率,而golang从1.12开始也开始有了自己内嵌的包管理工具


golang的新特性

在这边我并不是说golang好于java,但是golang毕竟属于新一代的语言,它的并发模型CSP,和java的并发模型是有很大的区别的,并发模型的易用性,从根本上来说,是好于java的

再说golang目前最大的优势,docker和kubernetes,是目前github上最火的前20名项目,并且都是golang写的,所以golang和docker,kubernetes集成有天然的优势

综上所述,我觉得golang可以开发商用网站,不管你是做大型网站还是小型demo,都可以满足你的要求


修炼IT基本功


作为一个golang开发人员,首先给你一个肯定的答案,这个完全没问题。接下来将从多维度阐述我的观点。Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。


beego框架

提到golang的web开发就不得不提beego框架。beego是一个快速开发Go应用的http框架。beego可以用来快速开发Web应用,是一个RESTFul(本人此前详细的介绍过RESTFul,如有需要可以进我个人主页查看。)的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。

架构

beego是基于八大独立的模块之上构建的,是一个高度解耦的框架。当初设计beego的时候就是考虑功能模块化,用户即使不适用beego的http逻辑,也是可以在使用这些独立模块,例如你可以使用cache模块来做你的缓存逻辑,使用日志模块来记录你的操作信息,使用config模块来解析你各种格式的文件,所以不仅仅在beego开发中,你的socket游戏开发中也是很有用的模块,这也是beego为什么受欢迎的一个原因。

执行逻辑

既然beego是基于这些模块构建的,那么他的执行逻辑是怎么样的呢?beego是一个典型的MVC架构,他的执行逻辑如下图所示:

江湖地位

说起golang的江湖地位,虽然不像Java“世界第一”,但也有一席之地。国内外众多互联网大厂都在使用。

1、Google

这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目。

2、Facebook

Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,比如著名的是平滑升级的grace。

3、腾讯

腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践。

目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。

5、阿里

阿里巴巴具体的项目不太清楚,不过听说其系统部门、CDN等正在招Go方面的人。

6、京东

京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

7、小米

小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

8、360

360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,

https://github.com/Qihoo360/poseidon。

golang前景

Go 语言于 2007 年开始构思,并于 2012 年正式发布。截止目前也只有9年的时间,完全可以说是编程界的后起之秀。随着区块链的崛起,golang也将得到迅猛的发展。下图为12月份编程语言TOP,golang作为一个诞生七年的“小屁孩儿”,依然跃居TOP 20。

golang优势

简单易学

任何语言都要吹简单易学,不然就没人学了。此处就不过多赘述了。大家懂就行。

并发能力

golang并发能力宇宙第一,拒绝任何反驳。golang并发编程主要通过goroutines channels实现的。

goroutines 可能是 Go 的最佳特性了。它是轻量级的计算线程,与操作系统线程截然不同。

当 Go 程序执行看似阻塞 I/O 的操作时,实际上 Go 运行时挂起了 goroutine ,当一个事件指示某个结果可用时恢复它。与此同时,其他的 goroutines 已被安排执行。因此在同步编程模型下,我们具有了异步编程的可伸缩性优势。

Goroutines 也是轻量级的:它们的堆栈 随需求增长和收缩,这意味着有 100 个甚至 1000 个 goroutines 都不是问题。

channel 是 goroutines 的通信方式:它们提供了一个便利的编程模型,可以在 goroutines 之间发送和接收数据,而不必依赖脆弱的低级别同步基本体。channels 有它们自己的一套 用法 模式。

但是,channels 必须仔细考虑,因为错误大小的 channels (默认情况下没有缓冲) 会导致死锁。下面我们还将看到,使用通道并不能阻止竞争情况,因为它缺乏不可变性。

丰富的标准库

Go 的 标准库 非常丰富,特别是对于所有与网络协议或 API 开发相关的: http 客户端和服务器,加密,档案格式,压缩,发送电子邮件等等。甚至还有一个html解析器和相当强大的模板引擎去生成 text & html,它会自动过滤 XSS 攻击(例如在 Hugo 中的使用)。

性能优越

与 Java 相比,在 原始性能基准测试 中,情况并不是那么清晰。Go 打败 Java 地方是内存使用和垃圾回收。

Go 的垃圾回收器的设计目的是 优先考虑延迟,并避免停机,这在服务器中尤其重要。这可能会带来更高的 CPU 成本,但是在水平可伸缩的体系结构中,这很容易通过添加更多的机器来解决。请记住,Go 是由谷歌设计的,他们从不会在资源上面短缺。

与 Java 相比,Go 的垃圾回收器(GC)需要做的更少:切片是一个连续的数组结构,而不是像 Java 那样的指针数组。类似地,Go maps 也使用小数组作为 buckets,以实现相同的目的。这意味着垃圾回收器的工作量减少,并且 CPU 缓存本地化也更好。

Go 同样在命令行实用程序中优于 Java :作为本地可执行文件,Go 程序没有启动消耗,反之 Java 首先需要加载和编译的字节码。


本文的初衷为学习笔记的分享,部分图文来源于网络,如侵,联删。


晒的被人砍


已经学会了,在写了,golang在后端开发真的好用,自己写轮子也不难。。。现在,基本是python搞数据处理,golang开发网站,爽爆[爱慕]


任T堂达人


能,完全可以,我们公司就是go做的后端。


沉沦Yesterday


我天天用打孔机打洞,代表0和1。网站跑的溜溜的,不说了,2点了,还在干



golang开发网站没有php好,后端数据处理还可以


andy1993李


是可以的,go语言现在是比较流行的一种编程语言,在web应用,API应用和各类App的开发中被广泛应用


HugoHo


可以的,golang取google的前两个字母,起点就不一样,我们公司在慢慢的切go,感觉前景不错。


rongzhenlee


只要能上网的都可以


杰米尼加隆


不能


分享到:


相關文章: