04 2020 档案
摘要:free -mmkdir -p /var/_swap_cd /var/_swap_#Here, 1M * 2000 ~= 2GB of swap memorydd if=/dev/zero of=swapfile bs=1M count=2000mkswap swapfileswapon swapf
阅读全文
摘要:CentOS 安装 EPEL 源: yum install epel-release 安装 REMI 源: CentOS 7: yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 安装 Yum 源管理工具: yum i
阅读全文
摘要:1.安装composer cd /usr/local/src curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 2.Composer 使用 chmod -R 777 /u
阅读全文
摘要:设置centos环境变量,可以用export命令,也可以通过修改文件形式实现,本文以lavavel需要设置环境变量为例,将 /root/.config/composer/vendor/bin 路径加到 PATH 一、临时生效 export PATH=$PATH:/root/.config/compo
阅读全文
摘要:前段时间项目里正好用到了redis的集群哨兵部署,因为此前并无了解过,所以一脸懵逼啊,查阅了几篇资料,特此综合总结一下,作为记录。 写在前沿:随着项目的扩张,对redis的依赖也越来越大,为了增强redis的性能,防止其挂掉,所以第一次尝试下项目里引用redis哨兵监控redis集群。 哨兵模式:粗
阅读全文
摘要:分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? Cache Aside Pattern 最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的
阅读全文
摘要:设计模式六大原则 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象. 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 单一职责原则:不要存在多于一个导致类变更的
阅读全文
摘要:开发环境 环境:lnmp下进行试验 问题描述 这几天做银行对帐接口时,踩了一个坑,具体需求大致描述一下。 银行每天凌晨后,会开始准备昨天的交易流水数据,需要我们这边请求拿到。 因为他们给的是一个base64加密的zip压缩流,解开以后可以得到txt文件,里面就是我们需要的数据了。 业务程序写好以后,
阅读全文
摘要:多个任务同时执行 比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。 不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如果需要则发送。如果发送邮件耗时2s,发送短信耗时2s,那么我们完成任务大概需要4s左右的时间。 如果我们使用多
阅读全文
摘要:在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。 Swoole 的 TaskWorker 进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以上场景。 那么什么是异步任务呢?
阅读全文
摘要:应用场景如下: 假如要发100封邮件,for循环100遍,这种方法显然是不可取的。 在一些比较繁杂的业务里,我们很可能有超过1万的邮件要群发。那我们怎么处理这个延迟的问题? 答案就是用异步。把“发邮件”这个操作封装,然后后台异步地执行1万遍。这样的话,用户提交网页后,他所等待的时间只是“把发邮件任务
阅读全文
摘要:项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole提供的强大的毫秒定时器。 应用场景举例 我们可能会遇到这样的场景: 场景一:每隔30秒获取一次本机内
阅读全文
摘要:什么是协程 协程(Coroutine)也叫用户态线程,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。协程是进程的补充,或者是互补关系。 要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。内核态的线程是由操作系统来进行调
阅读全文
摘要:Swoole 的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoole_process 的研究在swoole中显得尤为重要。 预备知识 IO多路复用 swoole 中的io多路复用表现为底层的 epoll进程模型,在C语言中表现为 epoll 函数。 epol
阅读全文
摘要:【使用场景】 Swoole的task模块可以用来做一些异步的慢速任务、耗时场景。如webim中发广播,发送邮件等,把这些任务丢给task进程之后,worker进程可以继续处理新的数据请求,任务完成后会异步通知worker进程告诉它此任务已经完成。此外利用task还可以实现PHP的数据库连接池,异步队
阅读全文
摘要:wget https://www.php.net/distributions/php-7.2.29.tar.gz yum -y install gcc gcc-c++ libxml2-devel cd php目录 ./configure --enable-fpm --with-mysqli --wi
阅读全文
摘要:#官网:http://nginx.org/ #下载tar.gz包wget http://nginx.org/download/nginx-1.16.1.tar.gz wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.4
阅读全文
摘要:系统版本:centOS7.6 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gzyum -y install mysqlyum -y install autocon
阅读全文
摘要:需求: 我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统)(1)B业务系统调用A渠道系统,验证传入的手机、身份证、姓名三要素是否一致。(2)A渠道系统再调用外部厂商C系统。(3)A渠道系统将结果返回给B业务系统。 这3个过程中,(2)过程,调用外部厂商是需要计费的。当B业务系统并
阅读全文
摘要:一、TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传
阅读全文
摘要:以下是我在工作中用到的类,redis加锁两种方式,解锁为了保证原子性所以只用lua+redis的方式 缺陷:虽然死锁问题解决了,但业务执行时间超过锁有效期还是存在多客户端加锁问题。不过,这个类已经满足了我现在的业务需求 更优的解决方案可以参考以下两篇文章:https://redis.io/topic
阅读全文
摘要:事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性; 一、原子性(atomicity) 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性 二、一致性(consistency) 事务的执行不能破坏数据库数据的完整性和一致性,一个事务
阅读全文
摘要:程序的原子性指:整个程序中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 原子性操作:原子性在一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。 扩展资料: redis的原子性
阅读全文
摘要:对MySql查询缓存及SQL Server过程缓存的理解及总结 一、MySql的Query Cache 1、Query Cache MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集。MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就
阅读全文