终于有机会在实际工作中使用mongodb了,毕竟之前都只是稍稍玩一下,没有在真正接触之前就是各种好,感觉mysql简直差得远了,业务多变,加个字段都要锁表,数据量大嘛,分表又得依赖中间件,官方还没有提供方案的那种。但是实际用过mongodb之后,感觉mysql其实也是很可爱的。
SSL/TLS握手过程
工作中一次机缘巧合下,碰到了一次使用curl请求第三方接口报错,日志中记录报错信息是ssl connect error
。这套请求的代码是一个公共方法,调用其他第三方接口的时候并没有异常,但是这次却遇到了这样的问题,第三方那边也没有提供有用的信息,因此只能自己排查了。最终排查的结果是使用ssl进行握手的时候,我方服务器上支持的加密算法没有一个与第三方服务器支持的加密算法匹配上,因此最后只能对我方服务器上的NSS(与OpenSSL一样是是提供SSL/TLS的开源实现,RedHat服务器的curl默认使用NSS,所以我方服务器一直是NSS)进行升级,这里记录一下SSL/TLS协议的握手过程。
循环update导致的mysql deadlock分析
最近工作上发生了一次mysql的deadlock事件,发生死锁的是几个批处理的脚本,没有显示执行transaction,而且是一条一条sql执行的,一次更新或者插入一条记录。以往介绍死锁的案例都是使用事务,然后事务中执行多条sql的,所以面对此情况瞬间蒙蔽。不过也借此机会整理与mysql锁相关的基础知识。
PHP的线程安全与非线程安全
关于PHP的线程安全和非线程安全,一直以来只知道IIS下用线程安全,其他情况使用非线程安全即可,但其实这样的理解是错误的,因此通过此文章整理一下PHP线程安全和非线程安全当中所涉及到的知识点,建立完整的知识树。
mysql log日志
mysql有很多日志文件,这些日志文件用于一些关键性的功能,例如主从同步的实现需要binglog和relaylog,redolog帮助mysql解决了大量IO问题以及事务未提交时候服务器异常导致数据丢失的问题,undolog用于事务回滚。学习mysql的重要机制的时候需要了解当中诸如日志文件等细节。
授权认证相关学习资料
最近看关于单点登陆的文章,发现了CAS、Oauth2、OpenId Connect等新的名词,发现单点登录看起来简单,实际上隐藏如此多的知识。之前在工作中看到的单点登陆,能用,但是有很多的问题,对比一下CAS协议,确实有很多不足。另外工作中会遇到某些接口资源被刷,原因很多是因为提供给第三方的对接接口的问题,其实可以引入授权协议,还可以搭建网关来防止。
fluentd收集docker容器日志
在之前一篇文章“采集docker-container日志”中使用了filebeat进行日志采集,一开始还好好的,但是后面发现这玩意不好用。后来使用了另外的一套工具fluentd来代替filebeat和logtash,这里总结一下两个方案的体验以及如何使用fluentd来采集日志。
Elasticsearch基础概念
以下是一些关于Elasticsearch的核心概念,了解这些概念会有助于学习Elasticsearch。文章翻译自官方文档,讲解了Cluster、Node、Index等几个Elasticsearch当中的基本概念,描述了Elasticsearch实现高可用高并发的设计原理。