- 博客(138)
- 资源 (1)
- 收藏
- 关注
原创 高并发其实很简单
对于流量刚成长起来的业务,能让你的系统在后续业务流量增长时,扛住需求冲击并快速解决问题,并对头部开源解决方案也会有更深的理解。若能主持高并发改造和 RPC 建设,那都是公司的一把好手,不说多了,年薪 30W+ 也是妥妥的。我们知道,互联网服务的核心价值就是流量,流量越大,平台的可能性和空间就越大,所以这也是为什么大厂倾向于有高并发经验的研发。不仅总结出一系列技术方法论,而且配合真实的案例,娓娓道来,深入浅出。不同的需求,库存争抢的具体实现是不一样的,通过 Redis 的特性实现了六种方案,分别为:。
2023-08-25 15:15:49
372
原创 PHP memcached持久化长链接的坑
最近这个坑确实很坑。 使用memcached的时候如果在construct的时候传递入持久化id的话,记得addserver只能执行一次。 注意:是fpm进程生命周期内只执行一次,否则会导致客户端连接数爆增,直到挂掉。 为了防止这个问题需要在construct后执行getServerList确认目前是否已经addServer 如果getServerList已经存在数据了,就不需要添加 另外,如果c...
2018-05-28 18:32:57
1491
原创 PHP的分布式跟踪的一些心得
自从实现微服务化后,我们碰到了很多问题。其中最大的问题就是如何排查故障,服务化后的接口通常会依赖多个服务,依赖接口的缓慢会直接影响接口的服务质量。这种依赖导致的缓慢情况在线上很常见,但是并不好排查,究其原因是线上都是通过日志进行跟踪的大量的日志开发人员并不是很直观,且有的公司开发人员是看不到线上具体执行情况。一般来说线上这些小概率故障代表着系统的隐患,当流量增大后这些隐患会被放大甚至直接导致
2017-06-12 17:13:54
4599
原创 Spring Boot持续集成测试 There are no tests to run
今天给PHP做的分布式跟踪代码做了个代码覆盖率持续集成,每次执行到mvn test都会提示:There are no tests to run实际src/test是存在的……有两个测试用例……但是mvn test在命令行下就是找不到后来问了同事,尝试多次才知道原来要放到src/test/java/里面……
2017-06-12 17:13:52
1884
原创 PHP数据导出数据不全问题的梗
昨天,碰到一个问题PHP导出全表数据不全问题。期间数据个数是对的,但是某条数据会出现重复。究其原因是因为数据查询的时候根据某字段排序。这个字段在此期间大量修改导致数据的排行变化。而在导出的时候为了防止内存溢出做了数据分页。最终导致翻页过程中数据排行变化导致排行变化。最后修改为,按照主键排序……分页……导出……。
2017-06-12 17:13:48
1152
原创 lucene Field引起的误会
今天,犯了个低级错误…做查询的时候发现lucene用queryparser只有完全等值才能匹配。经过排查原来是在建立索引的时候使用了StringField作为字段(这个只支持全值相等)改为TextField方可模糊查询……baidu好多资料是没有发现的……后来看到官方某个角落的文档发现了这个,才想起来怎么回事……感冒中……public class Fieldexte
2017-06-12 17:13:46
611
原创 Dora-RPC 详细设计分析 前言
Dora-RPC发布快两年了,一直有人要求我写一个详尽的介绍,今天突然想起这个事情。开始写一些关于他的介绍:Dora-RPC源于我之前工作的一家公司内的一些经历。对于我们开发来说使用PHP很少做大型的复杂的软件,因为开始的时候我们会下意识的将项目拆分开。通过各种各样的API相互调用、以此避免过于庞大的代码维护和跨部门调用。而我在的公司在创业初期时(模板嵌入代码的风格)一直在快
2017-06-12 17:13:42
440
原创 error:14090086:SSL routines…
curl一个http报错如下:curl: (60) SSL certificate problem, verify that the CA cert isOK. Details:error:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:certificate verifyfailedMore details here:http:
2017-06-12 17:13:39
1982
原创 C++ 读取二进制文件,并且保…
c++11 下 就几句话解决#include#includestd::ifstream fin("./zip.test", std::ios::binary);ostrm content = ostrm.str();fin.close();
2017-06-12 17:13:37
420
原创 Dora-RPC 端午升级 PHP微服务开发…
Dora-RPC端午升级,目前master还在beta版本增加了大量的特性。项目线上已经有几家公司平稳使用一年多了,当然他们是以此为原型进行了一定改造。最近升级改进了很多,如去掉unique函数导致性能翻倍,发现服务端有个别函数会被重复执行问题目前都已经修复,另外增加了异步任务拿回结果。目前groupclient也在改造,稍晚会将groupclient的功能集成到client内而不是两个客户
2017-06-12 17:13:34
412
原创 使用Shell获取上一个月、星期的时…
#!/bin/bashdate_today=`date -d '1 day ago' +%Y%m%d`#最近7天date_befor_7day=`date -d '7 day ago' +%Y%m%d`#上一个完整周(周一到周日) OFDAY="`date "+%u"`"STEPOFDAY="`expr $OFDAY + 6`"date_befor_weekday="`dat
2017-06-12 17:13:31
5345
原创 c++ 11 map基础value排序
本身是不支持的,但是可以用其他方法制作出来,参考了下别人的资料发现缺少说明,这次转过来只是加个说明#include 《algorithm》//pair类型定义 typedef pair PAIR;//排序对比函数int cmp(const PAIR &x, const PAIR &y) { return x.second > y.second; }
2017-06-12 17:13:28
270
原创 c++ 11 utf8 subst…
改编自:http://www.zedwood.com/article/cpp-utf-8-mb_substr-function这个也有问题,我基础这个改了个完善的另外写了个文字个数统计uint64_t pinyin::utf8_len(const std::string &str) { uint64_t i = 0; uint64_t count =0; ui
2017-06-12 17:13:25
290
原创 json_decode中转换大数值问题
当json内数值如18446744073709551615 这个数值这么大的时候json解析后会返回float(1.844674407371E+19)这不是我们期望的,好在php5.4+带了一个选项在decode的时候,加上JSON_BIGINT_AS_STRING大数值会转成string类型json_decode($output,true , 512 , JSON_BIGINT_AS_S
2017-06-12 17:13:22
2795
原创 使用swoole制作evenloop文件更新监…
使用swoole的evenloop和php的inotify插件可以很方便的监控文件夹下的文件更新,后面也不用写死循环和sleep如果使用原生的php是需要写while死循环和sleep。这样效率不是很高$handleList = array(); //init foreach ($this->_config["log_path"] as$content)
2017-06-12 17:13:19
610
原创 composer 不报错,不下载指定…
composer隐规则。。。如果 composer.json的项目name里面的名字和require内package的一样。。那么require内的列出同名packege将不会下载又踩坑了
2017-06-12 17:13:16
327
原创 JS报错 Uncaught Syntax…
这两天碰到一个大坑!JS文件内回个车都会报Uncaught SyntaxError: Unexpected tokenILLEGAL几次三番找原因,终于找到。。。Uncaught SyntaxError: Unexpected token ILLEGAL是因为js有未识别的字符然后发现nginx 1.8会的content-type:application/javascript;cha
2017-06-12 17:13:13
350
原创 2015年总结
新的一年来了,老了一岁again。2015年对我来说是个破财成长的年份。为了追求更深入的技术而不是总是写业务而进入了微博总的来说微博很有大公司样子的,比小公司看着干活的劳务工好的多。高手也很多,经常被NB的方案冲击下引起很多思考我要开始慢慢像底层发展。。虽然不赚钱,但总比啥都不懂好dora-rpc仍旧还在维护,继续加油!期望新的一年上班不要太远了,每天四小时的路程榨干了我的精力
2017-06-12 17:13:10
215
原创 圣诞快乐
swoole群内 无聊卡卡 写的圣诞脚本$i = $j = $x = $n=0;$a =32;$b = 42;$c =48;for($x=0;$x{ for($i=0;$i { for($j=0;$j$j ) { if($j<=25$n&&$j>=25-$n) printf
2017-06-12 17:13:07
192
原创 c 系列中 localtime多线程下的大坑
localtime是有一个大坑的。。。当我们使用localtime(timestamp)的时候返回是一个指针。这个指针的指向是共用的,这时如果有其他线程执行了localtime。。。。会覆盖之前的值!!可以考虑localtime_r。。。。但是!!!他也有坑~~~
2017-06-12 17:13:04
1175
原创 c++ 11 获取当前天0点的timestamp
弄了半天才搞定。。光靠baidu是不靠谱的struct tm *p;timestamp += 7 * 60 * 60;p = localtime(×tamp);//LOG_INFO tm_mday tm_hour tm_min tm_sec;p->tm_hour = 0;p->tm_min = 0;p->tm_sec = 0;uint32_t num = mktime(p);n
2017-06-12 17:13:01
1278
原创 BDB0126 mmap: Invalid&…
用虚拟机下弄Bdb结果报错了。。。。无语。。后来原因竟然是因为我用vagrant挂载了mac上的一个目录,然后这个目录下开发。。。虚拟机的底层对这个挂载的服务器不支持mmap导致失败。。拷贝进去就好了。。。怨念。。。相关问题:http://stackoverflow.com/questions/18420473/invalid-argument-for-read-write-mmap
2017-06-12 17:12:58
214
原创 vagrant的镜像备份和恢复
最近Mac下的vagrant虚拟机又挂了,只记得我在虚拟机内装了redis和xhprof就挂了。。无法挂载共享目录,无法vagrant ssh登陆(只能手动输入用户名密码才能进入)于是重新做了下虚拟机,搜索网络发现有vagrant pluginsnapshoot插件,结果安装报错。好像不能访问网站后来找了一圈发现vagrant自带备份,vagrant package即可导出一个box
2017-06-12 17:12:55
2258
原创 Dora-RPC未来规划及架构
理论上这东东不是我一个人能写完的,期望有兴趣的朋友也一起参与下开发Dora-RPC旨在制作一套PHP企业级的业务架构,通过这个架构可以快速实现内部SAAS及完善的监控管理动态可伸缩式的后端更简单的内部API集成管理分布式调试支撑具体YY结构如下图:Dora-RPC将服务器分为两组:前端和后端。前端:负责承载服务请求,对后端提供的服务进行拼装。支持同步、异步 单个
2017-06-12 17:12:52
568
原创 PHP如何拼接 bit
最近做了个好玩的用php拼类似微博mid一样的串。。。比如用28bit 存储时间 用18bit存储毫秒。在php下如何实现?我们需要对数值进行按位拼接。php提供了很多内置函数做这个事情:base_convert() 强大的进制转换函数bindec 将"0000100"等类似2进制串转成 10进制str_pad 若输出长度不够根据需要进行填充使用以上功能就可以做到特此记录
2017-06-12 17:12:49
702
原创 Dora RPC 虚拟机下实测性能
经过24小时持续压力测试,目前接口仍旧工作正常使用的vagrant虚拟进行压测的分配了1G内存和1核CPU(Mac 2.2 GHz Intel Corei7) 压测进程:目前只开了10个php进程疯狂发送请求并发性能:TPS 2100上下(比直接使用curl快很多)响应时间:0.02~0.04s 偶尔出现0.4s后端代码为:查询一次数据库后返回结果CPU使用:10~25%内
2017-06-12 17:12:46
315
原创 php mysql_connect自动共用链…
今天在底层开了mysql多服务器链接功能,但是发现偶尔会出现db串台的情况比如a库内的cccs表,底层会请求到b库找cccs表,这个问题很奇怪后来发现原来虽然底层实现了多实例,一个db链接对象一个链接,但是在mysql_connect这层也会自动做链接重复直接复用即bool $new_link =false这个选项,打开后一切正常,略坑,特此记录底层链接自动复用的规则为,
2017-06-12 17:12:27
213
原创 phpredis protocol erro…
今天发现某台服务器突然疯狂的报 phpredis protocol error, got's' as reply type byte类似错误,找了半天……猜测是如下问题https://github.com/nicolasff/phpredis/issues/52服务器重启后正常怀疑是phpredis使用的是长连接某种情况下共用一个socket,特此mark
2017-06-12 17:12:24
328
原创 服务降级经验总结
服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。服务降级方式:服务接口拒绝服务:无用户特定信息,页面能访问,但是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。 页面拒绝服务:页面提示由于服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。延迟持久化:页面
2017-06-12 17:12:21
2127
原创 php preg_match_all 段错误
昨天碰到个问题php preg_match_all 执行的时候在某条数据上报错怀疑是文字太长导致所以加了pcre的可使用空间,但是故障依旧最后在正则结尾加上U修饰符,取消了greed模式 工作正常了……
2017-06-12 17:12:18
363
原创 使用redis的setnx制作排他锁
今日发现一个逻辑select count,如果没有数据那么执行insert正常情况下数据库应该有一条数据,但是实际发现出现两条经测试是因为多进程并发发起请求 selectcount提前执行导致的最终讨论后使用排他锁保证事务同样参数时只执行一个使用redis的setnx对根据参数拼好的key的set进行赋值如果赋值成功,那么继续执行下面操作如果赋值失败,代表之前有进程正在跑排他事务执
2017-06-12 17:12:15
1769
原创 降级论
转自:oschinahttp://www.oschina.net/news/52884/degrading-for-success?from=20140622当一个社会疯狂鼓吹快节奏的时候,一定需要有人来宣扬慢生活;当全社会跟打了鸡血似的吹捧升级的时候,一定需要有人来说说降级论。IT青年们喜欢打游戏,喜欢升级。他们的人生也和游戏一样,沉醉于不停的升级中,不仅喜欢升级自己手上的技术,把M
2017-06-12 17:12:12
214
原创 基础mysql binlog监视器的数…
binlog监视器的数据缓冲平台的架构设计-支持各种结果缓冲" TITLE="基础mysql binlog监视器的数据缓冲平台的架构设计-支持各种结果缓冲" />这个是mysql关系查询结果缓冲中间件,当mysql更新的时候,自动清理所有被更新数据的关联数据,比如有个查询是个列表,里面有10个数据,当其中某个数据更新了,能够定位到这个数据在哪些缓冲中出现过,对指定的缓冲进行更新或者清空。有
2017-06-12 17:12:09
261
原创 使用redis做排行服务
细节介绍,做排行建议不做全站的,除非你有很大的redis集群或使用ssdb那么就维持前几万用户即可……使用redis的zset即可$this->redis->zAdd($rankType, $score, $key); if ($length > 0) { //限个数 $all = $this->redis->zCard($rankType);
2017-06-12 17:12:06
338
原创 redis php 队列开发
目前使用的list实现的队列其中有几个关键点记录一下//阻塞获取,默认等待3秒,如果没有那么循环一次 $result =$model->brPop($QUEUENAME, 3);使用此方式可以防止快速多次扫描redisif(function_exists("pcntl_signal")){ declare(ticks = 1); pcntl_signal
2017-06-12 17:12:04
183
原创 fastdfs php v5.01&nbsp…
首先使用php client$storage = fastdfs_tracker_query_storage_store($group_name);添加内容有utf8中文fastdfs_storage_upload_appender_by_filebuff(“测试提交 @xcl3721@sd^&*$#@^&(*%!(#dd@s我了个dkjkfd @_fds4444jlk”, $file_
2017-06-12 17:12:01
459
原创 【翻译整理】mysql innodb&nb…
---资料整理线---------------------------------************常规通用知识***************innodb不支持全文索引count(*)会扫表,变慢了auto increament必须只有一个作为主键innodb delete from table很慢,因为是一条条删除innodb行锁是基与索引进行锁定的,如果要搞行锁的一定要注意
2017-06-12 17:11:58
209
原创 mysql 主从库更新延迟,通过o…
最近由于库比较不稳定还在集体改版,我碰到一个问题主库更新后,从库两秒才能拿到更新后的数据,比如赞操作点后自动在页面html+1,但是由于读取列表是在从库,如果刷新的快,会看到赞还是没+1之前的数值。今天跟新青和李伟他俩讨论,新青提供的方式很棒,特此记录。我只需在他基础上集成了一下列表输出操作就解决了这个问题。首先更新的时候调用orm的edit更新操作,函数内部使用edit函数分析参数
2017-06-12 17:11:55
483
原创 [原创]android framelayout&n…
这个类是我实际做android时候做activity内的浮动层效果时封装的类如果一个界面有多个浮动层可以简单复制这个类快速做出多个浮动层来 public class PlayerHeader extends FrameLayout {private static final String LOG_TAG =MainActivity.class.getName(); public
2017-06-12 17:11:52
213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人