当前位置:   article > 正文

单机高并发技术揭秘----协程应用实践_单机应用高并发处理

单机应用高并发处理

  

  1. 引言

截止到目前,扫码系统日交易量最高突破了4000万笔,入口最高TPS达到了3000+。而在几年前,我们的这2个数据跟现在完全不是一个量级。在这期间,扫码系统经过了一次大的重构,而在重构系统改造过程,引入协程起到了关键性的作用,使得系统的并发性得到了一个质的提升。下面主要介绍下什么是协程,以及一些具体应用点。

  1. 协程

2.1 什么是协程

协程,又称微线程,纤程,英文名Coroutine。协程的概念很早就提出来了,但是直到最近几年才在某些语言(如Go,Lua)中才得到了广泛的应用。

子程序,或者称为函数,在所有语言中都是层级调用。比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序的调用是通过栈实现的,一个线程就是执行一个子程序。子程序的调用总是一个入口,一次返回。调用的顺序是明确的,而协程的调用和子程序不同。协程,看上去也是子程序。但是在执行的过程中,在子程序内部是可以中断的,然后转而执行别的子程序,再在适当的时候返回来接着执行。
在这里插入图片描述

2.2. 协程的优势

1)相比线程更加轻量级

a)线程的创建和调度都是在内核态,而协程是在用户态完成的

b)线程的个数往往受限于CPU核数,线程过多,会造成大量的核间切换;而协程则无需考虑这些
  • 1
  • 2
  • 3

2)将异步流程同步化处理

3)同一线程内的协程,操作共享变量时,不需要加锁,不存在资源冲突

2.3 核心点

2.3.1 怎么做切换

1)协程切换:保存当前函数的执行状态,导出目标函数上一次退出运行时的状态

2)函数执行状态包括:

a)CPU寄存器

b)当前函数执行栈内容 
  • 1
  • 2
  • 3

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/174281
推荐阅读
相关标签
  

闽ICP备14008679号