golang mysql 高并发_Golang百万级高并发实例

本文介绍了如何使用Golang的并发特性处理高并发MySQL请求。通过CSP并发模型,利用Goroutine和Channel避免共享内存。文章提供了一个简单示例,展示了如何创建带缓冲的Channel进行数据处理,并讨论了并发安全问题。接着,文章详细讲解了一个工作池(WorkerPool)的设计,包括Job接口、Worker结构以及工作池的实现,以实现百万级并发处理。
摘要由CSDN通过智能技术生成

前言

基础

我们使用Go语言,基本上是因为他原生支持的高并发:Goroutine 和 Channel;

Go 的并发属于 CSP 并发模型的一种实现;

CSP 并发模型的核心概念是:“不要通过共享内存来通信,而应该通过通信来共享内存”。

简单用法

我一开始学习Go语言的时候,遇到大访问量的时候,会先创建一个带缓冲的channel,然后起一个Go协程来逐个读取channel中的数据并处理。

说他是并发是因为他没有占用主线程,而是另起了一个协程独自运行。但是这没有实现请求之间的并发。

特别注意:Go语言中的map不是并发安全的,要想实现并发安全,需要自己实现(如加锁),或者使用sync.Map。

package main

import (

"fmt"

"runtime"

"time"

)

func main(){

//这里我们假设数据是int类型,缓存格式设为100

dataChan:=make(chan int,100)

go func(){

for{

select{

case data:=

fmt.Println("data:",data)

time.Sleep(1 * time.Second)//这里延迟是模拟处理数据的耗时

}

}

}()

//填充数据

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值