简单回答下!

如果你只是一个 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语言解决并发的方法有哪些?相关推荐

  1. MySQL异步复制延迟解决的架构设计与运维架构ppt

    <MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html

  2. 远程连接mysql速度慢的解决方法

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS ...

  3. IDEA 2020.3 连接mysql数据库报错解决

    IDEA 2020.3 连接mysql数据库报错解决 问题: Cannot connect to "Connection". The server time zone value ...

  4. mysql 8创建远程访问用户以及连接mysql速度慢的解决方法

    mysql 8创建远程访问用户以及连接mysql速度慢的解决方法 参考文章: (1)mysql 8创建远程访问用户以及连接mysql速度慢的解决方法 (2)https://www.cnblogs.co ...

  5. IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)

    IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) 参考文章: (1)IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) (2)https://www.cn ...

  6. 远程连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...

  7. Navicat无法远程连接MySql服务器问题的解决方法

    Navicat无法远程连接MySql服务器问题的解决方法 写在前面: 操作系统:银河麒麟4.0: 数据库:MySQL5.7.26: JDK:采用银河麒麟系统自带的openjdk: 客户端工具:Navi ...

  8. mysql总是显示无法连接服务器,Navicat出现无法远程连接MySql服务器问题的解决办法...

    Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0: 数据库:MySQL5.7.26: JDK:采用中标麒麟系统自带的openjdk: 客户端工具:Navic ...

  9. 使用navicat远程连接mysql时报2059错误解决方法

    navicat连接mysql时报2059错误解决方法 报错原因 解决方案 1.管理员权限打开cmd 2.修改加密规则及密码 3.退出,重启mysql 报错原因 这个错误出现的原因是在mysql8之前的 ...

最新文章

  1. 你写的代码一点都不 Pythonic
  2. ASP.NET 开源导入导出库Magicodes.IE Docker中使用
  3. Android启动后icon应用图标不能显示的可能问题
  4. [转载] [OpenGL] shadow mapping(实时阴影映射)
  5. c#访问各数据库的providerName各驱动
  6. 使用JavaScript生成二维码教程-附qrcodejs中文文档
  7. adam优化_立即尝鲜!碾压Adam,最好的AI优化器RAdam来了
  8. python实现 Floyd算法求解最短路径距离问题
  9. String赋值方式
  10. 苍狼敏捷软件开发团队建设指南-2-团队建设
  11. cas java单点登录_(Java)CAS单点登录
  12. 6月29日Java实训第一天
  13. 安卓镜像刻录软件_手机iso刻录工具去广告版下载-安卓手机版iso刻录工具无广告版(iso写盘工具)v3.4 2020最新版_新绿资源网...
  14. 幸福小夫妻被五百万巨奖生生拆散 急于离婚
  15. 中兴机顶盒刷机后服务器连接失败,(四川高安)中兴ba860av2.1t强刷安卓固件包解决刷机到7出错问题...
  16. hp服务器 iLO远程管理 python api模块 hpilo-python 接口列表
  17. 查看、修改 nginx分布服务器ip
  18. pda通用扫描app_智能仓储盘点——PDA扫码盘点APP真正实现“轻松盘点”!
  19. ABP官方文档(五)【多租户】
  20. 虚拟机扩大内存的方法

热门文章

  1. [翻译] OrigamiEngine
  2. CentOS5.8下varnish-2.1.5的安装配置
  3. Hadoop运维记录系列(十)
  4. 找字符串中第一个只出现一次的字符
  5. webView loadData 中文乱码问题
  6. 一维数组转单字段DataTable
  7. 获取前台HTML控件的值(select)
  8. 保护DNS对数字网络安全越来越重要—Vecloud
  9. Publish/Subscribe
  10. php 循环向select添加选项