go iris 连接 mysql 异步_go语言解决并发的方法有哪些?
简单回答下!
如果你只是一个 IO 操作,没必要在处理函数(协程)再开子协程,没什么用。因为,无论你开不开协程,都需要等待这个 IO 完成。一个 IO 操作,并发启不到提高性能的作用。
如果要提高性能,除非有多个 IO 同时出现在一个处理函数里,并且它们之间没有依赖关系。比如同时请求数据库和 RPC 服务。
一个简单示例。
var wg sync.WaitGroup
wg.Add(2)
go func() {
// 数据库数据 wg.Done()
}()
go func() {
// rpc 服务调用 wg.Done()
}()
// 等待它们都完成wg.Wait()
// 处理其他逻辑// 返回数据
也可以把 WaitGroup 换成你的 channel,这里不存在竞争,用 WaitGroup 更简单点。
这里说的单个函数的性能,每个 http 请求处理函数本来已经是一个协程,如果不存在并发逻辑,请不要为并发而并发。
还有什么办法能提高服务性能?
Go 的并发模型,相对于传统的进程、线程,已经能接收更多的并发请求,这工作是框架会实现的,不用我们考虑。但请求接收进来要能被快速处理,为提高并发性,还是要从处理函数入手。
那如何提高处理函数的性能呢?
一方面,像前面说的,多 IO 请求并发处理。但除此以外,还要把更多工作放在周边服务上,比如数据库优化、使用缓存。如果有一些复杂逻辑,可以尝试异步化处理,比如使用一些消息队列异步化,或者后台批处理。这个话题就大了,不过,一般的场景也不是很难,毕竟不是每个人都有机会遇到大并发量。
提醒一点,提高性能不能只依靠语言解决,还需要学会灵活地根据实际场景寻找解决方案。
欢迎关注我的专栏,Golang 之旅,见证我的 Golang 学习历程。
go iris 连接 mysql 异步_go语言解决并发的方法有哪些?相关推荐
- MySQL异步复制延迟解决的架构设计与运维架构ppt
<MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html
- 远程连接mysql速度慢的解决方法
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS ...
- IDEA 2020.3 连接mysql数据库报错解决
IDEA 2020.3 连接mysql数据库报错解决 问题: Cannot connect to "Connection". The server time zone value ...
- mysql 8创建远程访问用户以及连接mysql速度慢的解决方法
mysql 8创建远程访问用户以及连接mysql速度慢的解决方法 参考文章: (1)mysql 8创建远程访问用户以及连接mysql速度慢的解决方法 (2)https://www.cnblogs.co ...
- IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) 参考文章: (1)IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) (2)https://www.cn ...
- 远程连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...
- Navicat无法远程连接MySql服务器问题的解决方法
Navicat无法远程连接MySql服务器问题的解决方法 写在前面: 操作系统:银河麒麟4.0: 数据库:MySQL5.7.26: JDK:采用银河麒麟系统自带的openjdk: 客户端工具:Navi ...
- mysql总是显示无法连接服务器,Navicat出现无法远程连接MySql服务器问题的解决办法...
Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0: 数据库:MySQL5.7.26: JDK:采用中标麒麟系统自带的openjdk: 客户端工具:Navic ...
- 使用navicat远程连接mysql时报2059错误解决方法
navicat连接mysql时报2059错误解决方法 报错原因 解决方案 1.管理员权限打开cmd 2.修改加密规则及密码 3.退出,重启mysql 报错原因 这个错误出现的原因是在mysql8之前的 ...
最新文章
- 你写的代码一点都不 Pythonic
- ASP.NET 开源导入导出库Magicodes.IE Docker中使用
- Android启动后icon应用图标不能显示的可能问题
- [转载] [OpenGL] shadow mapping(实时阴影映射)
- c#访问各数据库的providerName各驱动
- 使用JavaScript生成二维码教程-附qrcodejs中文文档
- adam优化_立即尝鲜!碾压Adam,最好的AI优化器RAdam来了
- python实现 Floyd算法求解最短路径距离问题
- String赋值方式
- 苍狼敏捷软件开发团队建设指南-2-团队建设
- cas java单点登录_(Java)CAS单点登录
- 6月29日Java实训第一天
- 安卓镜像刻录软件_手机iso刻录工具去广告版下载-安卓手机版iso刻录工具无广告版(iso写盘工具)v3.4 2020最新版_新绿资源网...
- 幸福小夫妻被五百万巨奖生生拆散 急于离婚
- 中兴机顶盒刷机后服务器连接失败,(四川高安)中兴ba860av2.1t强刷安卓固件包解决刷机到7出错问题...
- hp服务器 iLO远程管理 python api模块 hpilo-python 接口列表
- 查看、修改 nginx分布服务器ip
- pda通用扫描app_智能仓储盘点——PDA扫码盘点APP真正实现“轻松盘点”!
- ABP官方文档(五)【多租户】
- 虚拟机扩大内存的方法