java 直播-java 直播开发
上期讲了搭建直播平台的前端技术选型,从开发时间和维护成本考虑,我们选择了Flutter,也讲述了Flutter的一些优势以及Flutter实现最基础的直播推拉流的简单步骤,后面也会带大家从Flutter环境搭建开始,一步一步进行直播前端剖析。
今天本篇讲述的是搭建直播平台中的服务端技术选型。前端其实只是UI设计,对于业务而言,前端需要做到的是肉眼可见级别的精美化,没有致命的Bug,更多的其实是集成各类SDK。而服务端是真正保障平台稳定运营的坚实基础,因此平台能否正常运营或者流畅运营,服务端的技术选型就尤为重要。
目前市面直播源码搭建业务的团队,对于后台技术架构一般是Php、Java,当然这里指的后台是服务端,并不是后台管理系统,后台管理系统其实是个可视化的数据汇总和设置页面,某种程度来说也是前端技术,这里不做过多累述。
那我们从目前的技术来看下各自的优劣势,其实Php和Java都能做服务端,也没有好坏之分,否则很多公司业务也进行不下去。Php适用于小的开发公司,开发成本低,上手快,Java适用于大公司,抛开开发成本高外,更是因为Java对高并发+分布式+微服务+云部署这些都有成熟的支持。
Php:
优势:开发成本低难度小
劣势:对高并发+分布式+微服务+云部署的支持乏力
-----------------------------------------------------
Java:
优势:生态繁荣,框架和解决方案成熟丰富,对高并发场景有良好的支持
劣势:很多解决方案或者框架非常臃肿庞大
这样就不难理解市面一些提供直播源码搭建的厂商,当然除去卖盗版的,用Php写后台的,他们的产品在用户数量短时间内同时上线观看时容易出现崩溃,用Java写后台的,他们的产品价格也比较高昂,人家成本也大,并且后台运行总是感觉反应很迟缓。
那么我们该怎么选择呢?这里我们给大家介绍一个新语言 – Go语言
什么是Go语言?
● Go语言是Google推出的底层语言java 直播,主打高并发特性。是的,又是谷歌的,Flutter也是谷歌推出的,这下前后端都是使用的谷歌最先进的技术啦。
● Go语言语法简介,执行效率高,主要应用场景是:服务器后台、区块链、云服务等
● Go语言语法层面,类似Java和C
为什么是Go语言?
● 简单高效的语言设计:从学术的角度讲 Go 语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go 的设计是非常优秀的,规范足够简单灵活,有其他语言基础的程序员都能迅速上手。并且正是由于Go的语言简单灵活且是底层语言,所以Go的执行效率极高。
● 高并发性好:Go是主打并发,为并发而生的,Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个 Go 应用也能有效的利用多个 CPU 核,并行执行的性能好。
● 执行性能好:本身Go是可以跨平台的编译生成可执行程序,且基础内存占用少,轻量级对比Java优势就比较明显。
● 部署简单:这也是最重要的一条,可以降低我们的维护成本。Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。这让部署变得异常方便,目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。
除此之外,Go支持的容器化和分布式数据库,会让运营方所购买的服务器和数据库以最小的成本发挥出最大的并发性能。如Docker、Kubernetes(K8S)等容器化技术,能够简单的实现跨平台部署和云端容器集群管理,这个后面会单独花一篇文章来讲解Docker和K8S。
Go和Php、Java对比
对于Php和Java做直播平台后台技术的优劣势,刚刚已经分析过了,那么Go语言,具有了Java的高并发+分布式+云部署良好支持,也比Java轻量级。至于Php更多的其实不适合于直播这类对高并发有要求的产品应用场景,更多的应该是在网站。
如果在性能和并发性上Go和Php对比的话,参见
【Golang vs Php】
golang VS php 性能对比
这篇文章,用实现数据分析,还是非常客观的。
那Go就一点劣势都没有吗?也不尽然,Go因为最近几年才发展起来,所以解决方案和框架上并不丰富和成熟,在生态上是无法和Java去较量的,但是因为有谷歌的加持,后面的生态也会慢慢丰富起来。目前国内很多一线公司,BAT、360、头条也都开始纷纷使用和推崇这门技术。
分析了这么多技术理论,下面咱们开始一步步上手进行的搭建操作,由于篇幅和时间限制,本篇文章先带大家进行Go语言的环境搭建。
Go的环境安装
【Go官网下载地址:】
golang.org
【Go官方镜像站(推荐):】
The Go Programming Language
golang.google.cn
Go语言支持以下系统:Linux、FreeBSD、Mac OS X和Windows,选择自己需要安装的平台进行下载就行。
1、下载上图各自平台对应的二进制包
2、将下载的二进制包解压至 /usr/local目录。
tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
3、将 /usr/local/go/bin 目录添加至PATH环境变量:
export PATH=$PATH:/usr/local/go/bin
Windows 下可以使用 .msi 后缀的文件。
默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。
利用下面指令进行查看是否安装成功。
$ go version
1、下载vscode
三大主流平台都支持,请根据自己的电脑平台选择对应的安装包。
2、安装Go扩展工具
在“管理扩展”里搜索Go,直接进行安装即可,如下图所示。
3、第一个Go语言程序
现在来创建第一个Go项目,Hello World。在GOPATH下的src目录中创建hello目录,并创建一个main.go文件:
package main//声明main包,表明当前是一个可执行程序 import"fmt"//导入内置fmt包 func main(){//main函数java 直播,是程序执行的入口 fmt.Println("HelloWorld!")//在终端打印HelloWorld! }
运行go build命令,将源码编译成可执行文件。
运行go run main.go 就可以看到输出“Hello World”啦。
到这里就讲完了本期的直播源码搭建技术选型之后台的技术选型啦,并且也带大家初步搭建好后台Go语言开发环境了。那么到现在为止就完全结束了前后端技术选型的难题,接下来就进入开发阶段了,下一期将回到前端,从Flutter的第一步开始搭建直播平台。
欢迎大家持续关注~