Wotu技术平台发布会专题四Go语言在金融科技的实践
Posted 美的金融科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wotu技术平台发布会专题四Go语言在金融科技的实践相关的知识,希望对你有一定的参考价值。
Go语言背景
近十年来,系统编程语言对开发进度和系统运行效率在大多数情况下难以兼得,如C++(执行效率高但开发和编译速度及其低效);.NET、Java(有效的编译但执行速度缓慢)。所以需要一种拥有较高效的执行速度、编译速度和开发速度的编程语言,Go就横空出世了。
Go是Google公司推出的基于编译、垃圾收集和并发的编程语言。Go最初设计者包括Robert Griesemer,Rob Pike 和Ken Thompson(C语言和Unix的创造者。1983年图灵奖和1988国家技术奖),于2009年11月正式发布。目前Google App Engine也支持go语言(目前仅支持三种:Java、Python和Go)
Go可以运行在Linux, Mac OS X, FreeBSD, OpenBSD, Plan 9 和 Windows系统上,同时也支持多种处理器架构:I386, AMD64和ARM。
Go语言有什么优势
1. 部署简单。Go语言拥有极快的编译速度,编译一个完整的工程仅需要数秒至数十秒,而且编译后仅生成一个可执行的二进制文件,这让部署变得异常方便。
2. 并发性好。Goroutine 和 channel 的使用使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个 Go 应用也能有效的利用多个 CPU 核,并行执行的性能好。
3. 执行性能好。虽然不如 C 和 Java,但通常比原生 Python 应用还是高一个数量级的,适合编写一些瓶颈业务。内存占用也非常省。
4. 语言简洁。Go语言拥有多样化的内置数据结构,如(map,slice),支持垃圾自动回收,函数多返回值,错误处理,匿名函数和闭包,类型和接口,反射等,基于变量、函数的首写字母大小写约定该变量、函数的可见性。这些极大地简化了开发。
5. 功能强大的Gotool。在安装了Go语言的安装包后,就直接自带Gotool。Gotool可以帮我们实现以下功能。
a)代码格式化。
b)代码质量分析和修复。
c)单元测试与性能测试。
d)工程构建。
e)代码文档的提取和展示。
f)依赖包管理。
Go语言与Java语言的对比
1. Go比Java的代码简洁很多。
以下是一些例子。
a) 错误处理。Go语言引入了3个关键字用于标准的错误处理流程,这3个关键字分别为defer、panic和recover。Go语言的错误处理机制可以大量减少代码量,让开发者也无需仅仅为了程序安全性而而像Java那样添加大量一层套一层的try-catc-finally语句。
下面是Java和Go的错误处理对比。
b) Socket编程。我们使用Java进行Socket 编程时,会按照如下步骤展开。
(1) 建立Socket
(2) 绑定Socket
(3) 监听
(4) 接受连接
(5) 接收或者发送消息
而在Go的socket编程中,Go语言标准库已对此过程进行了抽象和封装。无论我们期望使用什么协议建立什么形式的连接,都只需要调用net.Dial()即可。
c) 多线程编程。下面看看Java和Go版本的区别,相信你会爱上Go的开发!
d)变量、函数可见性。Java中要使某个变量、函数Public,需要在这个变量、函数前面加Public标识符,而在Go语言中,只需要讲这个变量、函数名首写字母变成大写既可。
2. Go比Java在并发编程中更加轻盈、高效和安全。
Java在语言层面只能支持到线程,而Go在语言层面就支持协程。
Go语言引入了goroutine概念,它使得并发编程变得非常简单。goroutine是一种比线程更加轻盈、更省资源的协程。Go语言通过系统的线程来多路派遣这些函数的执行,使得每个用go关键字执行的函数可以运行成为一个单位协程。当一个协程阻塞的时候,调度器就会自动把其他协程安排到另外的线程中去执行,从而实现了程序无等待并行化运行。
我们知道并发编程的难度在于协调,而协调就要通过交流。在工程上,有两种最常见的并发通信模型:共享数据和消息。共享数据是指多个并发单元分别保持对同一个数据的引用,实现对该数据的共享。被共享的数据可能有多种形式,比如内存数据块、磁盘文件、网络数据等。在实际工程应用中最常见的无疑是内存了,也就是常说的共享内存。Java就是通过共享数据实现进程间的通信的。Go语言提供的是另一种通信模型,即以消息机制而非共享内存作为通信方式。消息通信不需要考虑锁机制以及由此带来的各种问题,这使得Go的并发编程变得更加安全。
3. Go在内存使用、编译和开发效率上完胜Java。
Go程序运行效率不输Java,内存使用、启动速度和开发效率完胜Java。同样规模的程序,Go的内存使用只有Java的1/5还少,这决定了服务器租赁费用的大大降低。即使对于一个很复杂的Go程序,启动速度也可以说是秒启,因此在部署新版本的时候,用户体验基本不会受到影响。
Go语言在微服务领域大展手脚
以下推荐两篇推文
一、 今日头条基于Go语言构建千亿级微服务的实践
https://zhuanlan.zhihu.com/p/26762775?utm_source=wechat_timeline&utm_medium=social&from=timeline
二、 华尔街见闻基于Golang的微服务实践
https://zhuanlan.zhihu.com/p/26777189
正如文章里所提到的
Go 语言相对其它语言具有几点天然的优势:
1. 语法简单,上手快
2. 性能高,编译快,开发效率也不低
3. 原生支持并发,协程模型是非常优的服 务端模型,同时也适合网络调用
4. 部署方便,编译包小,几乎无依赖
以及 Go技术栈的一些优秀实践(docker,kubernetes,consul,etcd等等)可以预见Go在微服务构建的系统中,将会扮演愈加重要、愈加不可或缺的作用。
Go语言-小荷才露尖尖角
利用Go语言编写的著名的开源项目包括:
1. Docker : (Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。)
2. Kubernetes : (一个全新的基于容器技术的分布式架构领先方案)
使用Go语言的一些著名的公司和产品包括
1. AeroFS : (私有云文件同步应用提供商,将许多原先用Java写的微服务转向到用Go写的微服务,主要为了提高内存利用率)
2. CoreOS : (一个充分利用了Docker集装箱技术的基于Linux的操作系统)
3. MongoDB : (使用Go写了许多管理MongoDB实例的工具)
4. Google : (谷歌公司许多项目包括文件下载服务器(dl.google.com)都是基于Go写的)
5. Twitch.tv : (基于IRC的聊天系统从Python转向Go)
Go语言展望
金融科技的区块链技术团队已经全面拥抱Go语言,接下来,我们会给大家讲解Go语言在金融科技区块链技术的实践,敬请期待。
乐
在
分
享
美的金融科技
MideaFintech
以上是关于Wotu技术平台发布会专题四Go语言在金融科技的实践的主要内容,如果未能解决你的问题,请参考以下文章