最近因业务需要,需要在多网卡模式下实现Go应用的流量从指定网卡流入,请求外网服务时候流量需要从该网卡流出功能。从指定网卡流入很容易实现,只要go应用listen对应网卡即可,但请求外网服务时候就相对麻烦些了。在实践中总结出有三种方案可行。各有优劣。
假定服务器网卡情况如下:
实际上我们的服务器使用云服务器,网卡是弹性网卡(eni),绑定的是弹性ip(eip)。三种方案对普通服务器也是能达到目的的。
Go应用示例代码:
2024年12月12日
最近因业务需要,需要在多网卡模式下实现Go应用的流量从指定网卡流入,请求外网服务时候流量需要从该网卡流出功能。从指定网卡流入很容易实现,只要go应用listen对应网卡即可,但请求外网服务时候就相对麻烦些了。在实践中总结出有三种方案可行。各有优劣。
假定服务器网卡情况如下:
实际上我们的服务器使用云服务器,网卡是弹性网卡(eni),绑定的是弹性ip(eip)。三种方案对普通服务器也是能达到目的的。
Go应用示例代码:
2024年12月12日
Protobuf(Protocol Buffers)是一种轻量级的数据交换格式,它能够将结构化数据序列化为二进制格式,以便于在不同系统、不同语言之间进行数据传输和存储。在Go语言中使用Protobuf可以帮助我们快速高效地完成数据传输和存储等任务。下面是protobuf在golang中使用的详解:
首先,我们需要在本地安装protobuf库。可以通过以下命令在Linux/MacOS系统中安装:
2024年12月12日
让我们从Go(或Golang)的简短介绍开始。 Go是由Google工程师Robert Griesemer,Rob Pike和Ken Thompson设计的。 它是一种静态类型的编译语言。 第一个版本于2012年3月作为开源发布。
" Go是一种开放源代码编程语言,可轻松构建简单,可靠且高效的软件"。
— GoLang
2024年12月12日
上一篇文章讲了使用Go语言输出hello world,本篇文章简单说一下Go语言中的错误处理。
输出hello world的代码如下:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
2024年12月12日
前面讲介绍了Go 语言的基础知识,Golang的基础语法以及Golang的主要特性Interface等。感兴趣的朋友可以先看看之前的文章。这些都是Golang的基础内容,必须熟练掌握。
接下来讲讲Golang的核心功能,也是go语言重要的特性:Go协程(Goroutine)。
Go协程(Goroutine)是与其他函数同时运行的函数。可以认为Go协程是轻量级的线程,由Go运行时来管理。不需要抢占式调度,可以有效提高线程的任务并发性,而避免多线程的缺点;
2024年12月12日
前面讲介绍了Go 语言的基础知识,Golang的基础语法以及Golang的主要特性Interface等。感兴趣的朋友可以先看看之前的文章。这些都是Golang的基础内容,必须熟练掌握。
接下来讲讲Golang的核心功能,也是go语言重要的特性:Go协程(Goroutine)。
Go协程(Goroutine)是与其他函数同时运行的函数。可以认为Go协程是轻量级的线程,由Go运行时来管理。不需要抢占式调度,可以有效提高线程的任务并发性,而避免多线程的缺点;