
Swoole与Go系列教程
文章平均质量分 90
A码农先森
微信公众号《码农先森》作者,专注于 PHP 转 Go 技术领域的知识分享。
展开
-
10 | Swoole与Go系列教程之Redis连接池的应用
Redis 连接池的出现是为了解决频繁地创建和销毁 Redis 连接带来的性能开销和资源浪费。在传统的 Redis 连接方式中,每次与 Redis 服务进行通信时都需要创建新的连接,完成操作后再关闭连接,这种方式会导致频繁地进行 TCP 连接的建立和释放,增加了网络开销和系统负载。为了优化性能并提高 Redis 的吞吐量,引入了连接池机制。连接池通过预先创建一定数量的连接,并将这些连接保存在一个连接池中。原创 2024-03-24 23:40:21 · 1235 阅读 · 0 评论 -
09 | Swoole与Go系列教程之MySQL连接池的应用
MySQL 连接池的出现是为了解决数据库连接频繁创建和销毁的性能问题。在传统的数据库访问方式中,每次操作数据库时都会创建一个新的数据库连接,频繁创建和销毁连接会导致连接无法被有效复用。连接池可以减少了连接的创建和销毁开销,降低了数据库操作的延迟。继而减轻了数据库服务器的负担,提升了数据库的性能和并发能力。MySQL 连接池极大地提升了数据库访问性能和可伸缩性,使得数据库访问更加高效、可靠和稳定。MySQL 连接池的出现是为了解决数据库连接频繁创建和销毁的性能问题。原创 2024-03-23 22:52:51 · 1045 阅读 · 0 评论 -
08 | Swoole与Go系列教程之Channel通道的应用
通道(Channel)是一种在多线程或多协程编程中用于并发通信和同步的重要概念。通道最早由计算机科学家 Tony Hoare 在通信顺序进程(CSP)理论中提出。CSP 强调通过通信来实现并发任务之间的协作,而不是共享内存。通道的出现使得多个任务可以通过发送和接收消息进行通信,而无需显式地使用锁和共享内存。CPS 理论强调通过通信来实现并发任务之间的协作,而不是共享内存。通道(Channel)是一种并发编程模型,通常使用的数据结构是先进先出队列来实现。原创 2024-03-22 23:47:26 · 786 阅读 · 0 评论 -
07 | Swoole与Go系列教程之多进程编程的应用
多进程能够充分利用计算机系统的资源,提高系统的吞吐量、响应能力和容错性。多进程允许多个任务在同一时间内并发地执行。通过将任务划分为多个进程,可以实现并行处理。每个进程都有自己独立的内存空间和数据结构,进程之间相互隔离。这种隔离确保了进程可以安全地运行,即使其中一个进程出现问题也不会影响其他进程的稳定性。多进程还可以提高系统的容错性。如果一个进程崩溃或出现问题,其他进程仍然可以正常工作。多进程可以使得这些核心得到充分利用,每个进程可以在一个独立的核心上运行,从而实现并行计算,提高系统的整体性能。原创 2024-03-21 22:38:51 · 936 阅读 · 0 评论 -
06 | Swoole与Go系列教程之百万协程的应用
协程的出现是为了解决传统线程和进程模型在并发编程中的一些问题。随着计算机应用的复杂性增加,对于高效处理异步任务的需求也越来越多。传统的线程和进程模型在处理大量的异步任务时会面临资源消耗和切换开销的问题。在传统的线程或进程模型中,当一个任务发生阻塞时,整个线程或进程都会被阻塞,导致其他任务无法继续执行。这种阻塞会浪费计算资源,影响整体性能。在某些场景下,并不需要使用重量级的线程或进程来进行并发处理。轻量级的协程可以在单个线程中实现多个任务的并发执行,减少了资源的开销。原创 2024-03-20 22:50:39 · 924 阅读 · 0 评论 -
05 | Swoole与Go系列教程之Timer定时器的应用
定时器在程序中的作用是为了实现定时触发事件或周期性执行任务的需求。在很多应用场景中,需要按照特定的时间点或者时间间隔来执行任务,比如定时任务调度、定时日志记录、定时数据清理等。定时器可以在后台线程或者异步任务中执行,减少对主线程的阻塞,提高程序的并发能力。在 Linux 系统中最常用的是 Crontab 定时调度的工具,可以很便捷的控制任务的执行触发时间。定时器底层原理都是基于硬件提供的时钟中断机制来实现的。Swoole 中的定时器回调是利用了事件循环机制来实现的。原创 2024-03-19 22:54:57 · 822 阅读 · 0 评论 -
04 | Swoole与Go系列教程之UDP服务的应用
UDP协议相对于TCP协议而言,设计更为简单,不需要进行连接建立和断开的握手过程,也没有复杂的连接状态管理和流量控制机制。UDP协议的出现是为了满足特定类型的网络应用需求,如实时性要求高、可靠性要求低、数据传输速度要求快的场景。通过简化传输层功能和减少传输开销,UDP协议为这些应用提供了一种高效、快速的数据传输选择。UDP 协议是一种高效、快速传输的协议。该协议不用进行握手,即可直接发送数据。在使用方式上 Swoole 和 Go 其实差别并不大。原创 2024-03-18 23:05:16 · 866 阅读 · 0 评论 -
03 | Swoole与Go系列教程之TCP服务的应用
TCP(传输控制协议)的出现是为了解决计算机网络中的数据可靠传输和连接管理的问题。在早期的计算机网络中,特别是在分组交换和互联网的发展初期,网络是不可靠的,存在丢包、错误和延迟等问题。为了保证数据能够可靠地传输,需要一种协议来提供可靠的传输机制。而早期的协议如UDP(用户数据报协议)是无连接的、不可靠的,无法满足应用程序对连接管理的需求。TCP协议提供一种标准化、可靠的数据传输服务,促进了互联网的发展和应用的普及。TCP 协议提供了可靠的传输方式,让数据的传输有了保障。原创 2024-03-17 16:40:38 · 921 阅读 · 0 评论 -
02 | Swoole与Go系列教程之WebSocket服务的应用
在 WebSocket 协议出现之前,Web 应用为了能过获取到实时的数据都是通过不断轮询服务端的接口。轮询的效率、延时很低,并且很耗费资源。在2008年 Google 的一位工程师 Ian Hickson 发明并起草了 Websocket 协议的相关规范,后来经过讨论和改进,由 WHATWG 组织负责制定了 WebSocket 的标准。最终,WebSocket 协议在2011年被正式发布为 RFC 6455 标准,同时得到了广泛应用和支持。原创 2024-03-16 16:17:28 · 984 阅读 · 0 评论 -
01 | Swoole与Go系列教程之HTTP服务的应用
PHP 曾是Web开发领域佼佼者,随着业务壮大,异步和高并发方面不足显现。Swoole 曾经尝试填补空白,但局限性也比较的明显。Go 语言的崛起,简洁语法和并发优势吸引大厂使用,吸引了大多数程序员的转型。疫情、战争、大环境的恶化等因素加剧了互联网行业内卷,PHP 程序员陷入了困境,因此转型 Go 语言是不二的选择。我从 PHP 转型Go,深知转型之难。因此致力于帮助其他 PHP 程序员转型,分享经验。困境时需抱团取暖,才能走过黎明前的黑暗。原创 2024-03-16 16:16:08 · 1848 阅读 · 0 评论