我的编程空间,编程开发者的网络收藏夹
学习永远不晚

hyperf 优点、缺点 分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

hyperf 优点、缺点 分析

前引

hyperf 我所熟悉的是基于swoole驱动的模式(协程)。
hyperf 完全取代了php-fpm,即是nginx转发请求不再转发给php-fpm ,而是转发给hyperf启动的进程处理。(甚至于hyperf 也可越过nginx 直接处理用户请求,但一般我们会在前面加一个代理(nginx)来转接请求)

hyperf的优点

  • 协程的支持:基于swoole的请求协程化,一个请求对应一个协程。但因协程是用户线程(用户创建的线程,所以这个线程的声明周期及何时发生上下文切换均由我们自己管理)。所以无法使用多核cpu的特性(意为在一个含有协程的进程中同时运行多个协程)。如果要使用多核cpu的特性,就需要使用多进程模型(多个进程监听同一个端口,采用惊群现象处理请求,每个cpu负责一个含有协程的进程)
  • 微服务化:便捷简单微服务化支持,我仅了解json-http rpc协议,grpc太复杂暂不了解。且有完善的分布式事务支持(go 语言编写的DTM 事务协调器,使用这个协调器对接hyperf实现稳定的分布式事务),熔断及降级,服务重试等。
  • 运行速度极快:因采用协程,所以运行速度快(但要注意阻塞问题,同一时刻只有一个协程在跑,如这个协程在运行时产生的阻塞是否会使cpu产生等待问题需要考虑。(比如与mysql建立连接是否会使cpu堵塞在这个协程上))
  • 与其他框架(laravel)在结构上、组件功能上无较大差异:路由、验证器、中间件、ORM、队列、请求、响应、控制器、命令、测试、限流、异常处理等。(可快速上手)
  • 新增守护进程支持,一次启动,即可长时工作在任务后台(如队列监听守护进程,也可创建一个proccess 对象,自定义这个守护进程的逻辑)
  • mysql连接池,redis连接池 快捷实现(主要用于解决程序运行需要和mysql建立连接锁产生的阻塞问题,mysql连接数问题)

hyperf的缺点

  • 瞬时流量爆发(如秒杀、红包等场景)
    a、 此场景下会在进程中产生大量的协程,每个协程都需要建立mysql连接时会导致mysql连接数耗尽而导致mysql抛出连接数异常
    b、每个协程在创建成功后会被分配多少内存,当数量过多后是否会挤爆进程(受操作系统和配置的影响),导致无法对外提供服务
    c、当采用数据库连接池解决连接数问题后,mysql数据库的iops指标是否能满足需求。(单位时间内的读写能力是否能支撑这么高的迸发)
    d、当采用队列消息时,如果队列过长,且因意外原因,导致了服务器重启,如何恢复队列任务的执行(redis方案不可取,redis一旦重启,内存数据就没了,虽然可以采用数据持久化,但一般来说很少用redis来存储数据。查阅官方文档并无mysql数据库队列消息的实现,估计只有自己去封装一个包来实现mysql队列任务了)

还有其它很多需要考虑的问题点,本次就暂时整理这些。
写下这篇文章并不是反馈hyperf不好,反之,hyperf 很好。他实现了php 微服务化,且针对微服务也做了负载,nacos等的支持。他让php在框架选型的范围上有了更多的支持。
但是学习和使用hyperf框架需要较强的技术知识

关联技术知识

  • Linux操作系统基本命令的熟悉

  • lnmp环境搭建(开发环境一般采用宝塔来搭建)

  • windows上搭建linux虚拟机(我采用hyper-v Windows扩展工具搭建,但要cpu支持虚拟化,如不支持需要进入dos命令界面开启cpu虚拟化)如Ubuntu

  • phpstorm 搭载ftp协议与虚拟机ubuntu进行文件交互(达到本地修改或删除直接自动同步至虚拟机ubuntu指定目录)
    在这里插入图片描述

  • 进程方面的知识:进程的状态,进程的调度,cpu在线程和进程上发生上下文切换时所做的工作

  • nginx代理

  • nginx的工作模式(master-work),hyperf swoole 驱动的工作模式

  • 多线程编程知识:主要考虑同一进程中,线程之间共享内存(程序运行可能产生的内存溢出,脏数据的产生等问题)

  • swoole 协程 方面知识

来源地址:https://blog.csdn.net/u014559227/article/details/127267617

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

hyperf 优点、缺点 分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JQuery优缺点分析说明

如果你还在犹豫是否要学习一个JavaScript框架,并困惑于选择哪一个框架,那么我推荐你选择jQuery。这并非说其它框架不好,只是jQuery可能是最稳妥和最具回报性的选择。
2022-11-21

云服务器有哪些优点与缺点和缺点分析

云服务器(CloudStorage,也称为云存储)是一种基于互联网的服务器虚拟化技术,它通过网络将数据、应用程序和其他业务程序托管到各种公共云上。与传统的本地服务器不同,云服务器通过互联网提供服务,无需物理服务器即可运行。以下是云服务器的优点和缺点:灵活性:云服务器可根据需求来分配空间和资源,以满足各种业务需求。它可以根据用户的需求来动态调整资源,以确保按需分配和灵活的服务。快速响应:云
2023-10-26

云服务器有哪些优点和缺点和缺点分析

云服务器(CloudStorage,CS)是一种提供高性能计算和存储服务的云计算服务。在云服务器的基础上,用户可以使用公共云、本地部署等方式进行存储、计算、备份等各种计算资源的管理,以及进行数据存储和备份,同时还可以进行应用开发、部署、管理和监控等功能。云服务器的优点包括:性能稳定:云服务器提供高性能计算和存储服务,可以保证用户的高性能计算和存储需求。灵活性强:云服务器支持分布式计算、集
2023-10-26

阿里云服务器的缺点与优缺点分析

阿里云服务器是阿里云提供的一种高性能、高可用性的计算服务,为用户提供丰富的计算资源和灵活的计费方式。然而,任何产品都有其优点和缺点,那么阿里云服务器也不例外。本文将对阿里云服务器的缺点进行详细分析。阿里云服务器的优点:1.高性能:阿里云服务器使用最新的硬件设备,提供高计算性能和强大的存储能力,可以满足用户的各种计
阿里云服务器的缺点与优缺点分析
2023-12-09

分析Golang中接口的优点和缺点

Golang中接口的优势与不足分析引言:Golang是一门由Google开发的高性能编程语言,其特点之一就是对接口(interface)的支持。接口是Golang中非常重要的概念,通过接口可以实现代码的抽象、多态和模块化等特性。本文将分别
分析Golang中接口的优点和缺点
2024-01-24

OSPF协议的优缺点分析

OSPF(Open Shortest Path First)是一种用于路由选择的动态路由协议。它具有以下优点和缺点:优点:1. 高可靠性:OSPF具有快速收敛性和可靠性,通过使用Hello消息和链路状态更新来监测网络变化和故障,并动态地调整
2023-09-22

golang函数的优缺点分析

go 语言函数具有可重用性、模块化、封装性、可靠性和高性能的优点。缺点包括调用栈深度、性能开销、命名空间污染和延迟绑定。为了优化具有递归性质的函数,可以使用备忘录技术来存储中间结果,从而显著提高性能。Go 语言函数的优点和缺点函数是 Go
golang函数的优缺点分析
2024-04-20

C++ 函数的优缺点分析

优点:模块化代码,提高可读性代码复用,避免重复封装数据和实现细节提供命名空间,避免冲突传递参数,方便信息传递缺点:性能开销,调用涉及堆栈帧创建和销毁过度嵌套影响可读性调试难度增加,错误可能发生在调用位置维护困难,函数可能在多处调用C++ 函
C++ 函数的优缺点分析
2024-04-12

云服务器有哪些优点与缺点和缺点分析报告

云服务器(CloudDrive)是一种基于云计算技术的服务器,它提供了一种灵活高效的计算平台,可以在公共云或私有云上部署。下面是云服务器的一些优点和缺点。优点:1.灵活性:由于云服务器具有多个服务器节点,它可以在不同的位置使用不同的硬件设备,从而使企业可以根据业务需求灵活调整它们的部署。2.可靠性:云服务器可以提供高可靠性,可以在恶劣的环境中运行,并且可以支持长时间的运行时间和高可用性。
2023-10-26

云服务器有哪些优点和缺点和缺点分析报告

云服务器(CloudDocker)是一种虚拟服务器,它可以通过互联网提供动态的资源,可以按需扩展和缩小服务器的规模,并与用户界面相集成。它的优点包括:1.弹性扩展能力:通过云服务器,用户可以按需动态添加和缩小服务器规模,以满足业务需求。2.可靠性和性能:云服务器可以快速地扩展和缩小规模,以满足不断变化的业务需求。3.安全性:云服务器可以确保用户数据的安全,并提供多种安全功能,如防止DDoS
2023-10-26

阿里云服务器优点与缺点分析

阿里云服务器优点和缺点:优点:1.稳定性高:阿里云服务器的高可用性可以保证数据的一致性和稳定性。2.速度快:阿里云服务器采用多台服务器集群,可以快速响应大规模用户请求,大大提高服务器性能。3.价格实惠:阿里云服务器的配置、服务和价格比较实惠,而且可以选择按月付款的方式,降低了用户的使用门槛。4.支持多种操作系统:阿里云服务器支持Windows,Linux,MacOS等多种操作系统,能够
2023-10-26

阿里云服务器优点和缺点分析

阿里云服务器的优点包括以下几点:高可靠性:阿里云服务器的硬件设备采用高可靠性的技术,如英特尔高性能服务器处理器等,这些硬件提供了强大的计算能力和安全保障。高性能:阿里云服务器具有高性能的CPU、内存、磁盘等硬件资源,可以为用户提供高性能的服务器性能。安全可靠:阿里云服务器采用了高度安全的云计算技术,如防DDoS攻击、防病毒和防恶意软件等技术,确保服务器上的数据不会被泄露或者被恶意利用。
2023-10-26

分别分析gitlab方案的优缺点

随着软件开发的不断发展,版本控制系统也变得越来越重要。Git已经成为大多数开发者首选的版本控制系统。在Git中,仓库是个显著的组成部分,通过仓库可以使开发者轻松地管理代码和版本,实现代码的协作开发和版本控制。Gitlab是基于Git的Web
2023-10-22

云服务器的优缺点分析

云服务器是一种虚拟化的计算基础设施,它通过网络将计算资源分配给用户,可以为用户提供弹性的计算资源使用方式。以下是云服务器的优缺点分析:优点:弹性:用户可以根据自己的需求随时扩展或缩减计算资源,无需关闭整个系统。快速响应:由于采用了云计算服务,用户无需购买、部署和维护基础设施,可以快速地扩展系统。高可用性:云服务器可以提供高可用性的环境,包括数据备份、系统故障恢复等。缺点:成本:
2023-10-26

阿里云服务器的优点和缺点分析

阿里云服务器是一款由中国阿里巴巴集团旗下的云计算服务提供商阿里云开发的云服务器平台。以下是阿里云服务器的优点和缺点:稳定性阿里云服务器具有稳定性高、弹性扩展等特点,能够满足大规模应用和高并发访问的需求。在阿里云官网上,我们可以看到阿里云的稳定性指标为99.7%,这意味着阿里云服务器能够在各种极端环境下稳定运行。价格实惠阿里云服务器的价格在国内云服务器中属于比较实惠的,大部分服务器
2023-10-26

云服务器有哪些优点和缺点和缺点分析报告总结

云服务器是一种虚拟的、服务器软件,通常被用于在云端托管计算和存储。以下是云服务器的优点和缺点:灵活性:由于云服务提供商通常会提供各种功能和服务,因此用户可以根据自己的需求选择和组合不同的云服务,以满足各种业务需求。可扩展性:云计算可以通过虚拟化技术提供可扩展性,从而使用户可以轻松地添加或删除资源和服务,以便在任何时间和地点进行扩展。低成本:相对于传统的基础设施,云计算可以使企业更经济地使用资源,同时减少成本和...
2023-10-27

分析Golang存储过程的优缺点

Golang是一种由Google开发的开源编程语言,被广泛应用于后端开发。在Golang中,虽然没有像其他数据库相关语言那样直接支持存储过程,但通过调用数据库的原生SQL语句,可以实现存储过程的功能。本文将分析Golang中使用存储过程的优
分析Golang存储过程的优缺点
2024-02-26

Discuz删除模块的优缺点分析

Discuz删除模块的优缺点分析Discuz是一款广泛应用于论坛建设的开源系统,用户可以根据自己的需求定制各种模块和功能。在使用Discuz建立论坛时,模块的添加和删除是非常常见的操作。本文将针对Discuz删除模块的优缺点进行具体分析,
Discuz删除模块的优缺点分析
2024-03-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录