随笔分类 - 后端

摘要:需求 不知不觉,web 开发已经进入 “微服务”、”分布式” 的时代,致力于提供通用 Java 开发解决方案的 Spring 自然不甘人后,提出了 Spring Cloud 来扩大 Spring 在微服务方面的影响,也取得了市场的认可,在我们的业务中也有应用。 前些天,我在一个需求中也遇到了 spr 阅读全文
posted @ 2020-03-18 19:52 枕边书 阅读 (171) | 评论 (1) 编辑
摘要:前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。 出来混总是要还的,前些天就遇到了 Git 里 阅读全文
posted @ 2019-12-10 19:40 枕边书 阅读 (791) | 评论 (1) 编辑
摘要:前言 工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快问题排查的进度。这也是我为什么非常喜欢 shell 的原因,它丰富的命令行工具集加管道特性处理起文本数据集来真的精准而优雅,让人迷醉。 但很多时候文本的表现力非常有限,可以说匮乏,表达绝 阅读全文
posted @ 2019-07-17 19:29 枕边书 阅读 (1131) | 评论 (2) 编辑
摘要:由来 前些日子小组内安排值班,轮流看顾我们的服务,主要做一些报警邮件处理、Bug 排查、运营 issue 处理的事。工作日还好,无论干什么都要上班的,若是轮到周末,那这一天算是毁了。 不知道是公司网络广了就这样还是网络运维组不给力,网络总有问题,不是这边交换机脱网了就是那边路由器坏了,还偶发地各种超 阅读全文
posted @ 2019-01-22 19:00 枕边书 阅读 (4422) | 评论 (12) 编辑
摘要:再启 接上文 从应用到内核查接口超时(中),查到是因为 journal 导致 write 系统调用被阻塞进而导致超时后,总感觉证据还不够充分,没有一个完美的交待。而且 leader 还想着让我把问题排查过程分享给同事们,这让我更加不安,担心搞错了方向。 在以往的博客中,我的问题结论总是确定的,如果是 阅读全文
posted @ 2018-12-28 19:49 枕边书 阅读 (483) | 评论 (0) 编辑
摘要:应用复现 接着上文 从应用到内核查接口超时(上) 继续排查导致接口超时的原因。 转载随意,文章会持续修订,请注明来源地址:https://zhenbianshu.github.io 。 Jdk 的 native 方法当然不是终点,虽然发现 Jdk、docker、操作系统 Bug 的可能性极小,但再往 阅读全文
posted @ 2018-12-27 19:36 枕边书 阅读 (416) | 评论 (0) 编辑
摘要:问题 之前的博文中说过最近在查一个问题,花费了近两个星期,问题算是有了一个小结,是时候总结一下了。 排查过程走了很多弯路,由于眼界和知识储备问题,也进入了一些思维误区,希望此问题能以后再查询此类问题时能有所警示和参考;而且很多排查方法和思路都来自于部门 leader 和 组里大神给的提示和启发,总结 阅读全文
posted @ 2018-12-26 19:34 枕边书 阅读 (324) | 评论 (0) 编辑
摘要:Hystrix 的配置项中有不少坑,盲目配置会导致 hystrix 不会以期望的方式工作甚至不生效,本文通过源码和实践介绍了 hystrix 的各项配置及其常见误区,也介绍了一些 hystrix 实现相关的知识。 阅读全文
posted @ 2018-09-11 20:39 枕边书 阅读 (1871) | 评论 (0) 编辑
摘要:将相似或重复请求在上游系统中合并后发往下游系统,可以大大降低下游系统的负载,提升系统整体吞吐率。文章介绍了 hystrix collapser、ConcurrentHashMultiset、自实现BatchCollapser 三种请求合并技术,并通过其具体实现对比各自适用的场景。 阅读全文
posted @ 2018-07-31 19:50 枕边书 阅读 (801) | 评论 (0) 编辑
摘要:Redis 提供的命令简单而高效,但有时候我们可能会需要命令更复杂一些,如用来实现“原子”操作或复合命令。本文通过几个实例介绍了 Redis 提供的 Lua 脚本嵌入功能,并总结了一下适用场景。 阅读全文
posted @ 2018-02-05 19:27 枕边书 阅读 (3879) | 评论 (1) 编辑
摘要:接之前的文章对 PostgreSQL 的查询效果和效率进行优化,从使用 B树索引优化查询效果,到使用子查询优化查询效率,最后又使用分词替换掉 B树索引,见招拆招,达成优化目标。 阅读全文
posted @ 2018-01-09 19:34 枕边书 阅读 (1061) | 评论 (3) 编辑
摘要:本文介绍了如何使用 Nginx 路由重写功能搭配 Linux 链接,再加上项目内部路由达到代码的渐进式迁移,在新旧项目之间实现无缝切换。 阅读全文
posted @ 2017-12-25 20:05 枕边书 阅读 (1438) | 评论 (0) 编辑
摘要:cron 在单机上应用很方便,可是在多台机器、任务繁多的情况下,想把任务管理得井井有条就不是一件简单的事了。我来安利一个自己用 Go 实现的 cron plus,文章主要介绍实现思想和各功能的技术要点。 阅读全文
posted @ 2017-11-27 19:26 枕边书 阅读 (6276) | 评论 (14) 编辑
摘要:全文检索应该算是一个挺普遍的需求了,虽然有 ES 这种搜索引擎,但为了数据的灵活性,关系型数据库更为适合。本文记录了 PostgreSQL 进行全文搜索时的配置步骤,总结了几个优化点,同时填了几个经常遇到的坑。 阅读全文
posted @ 2017-11-06 21:35 枕边书 阅读 (13205) | 评论 (2) 编辑
摘要:项目迁移过程中,项目代码结构的确认是头等大事,本文聊聊我在进行老项目重构时进行代码结构设计中的问题和思考。 阅读全文
posted @ 2017-11-02 19:31 枕边书 阅读 (2836) | 评论 (5) 编辑
摘要:随着业务发展和数据积累,你的 Redis 服务器变得越来越臃肿了,甚至内存爆满影响了业务,那么它是如何一步一步走到这个地步,又如何解决呢?希望本文能帮助到你。 阅读全文
posted @ 2017-10-09 19:48 枕边书 阅读 (2680) | 评论 (8) 编辑
摘要:文章通过用Go语言实现的设计模式,总结了各模式的特点和使用场景,并配以现实生活中的实例,帮助理解设计模式。本篇包括:责任链模式、蝇量模式、解释器模式、中介者模式、备忘录模式、原型模式和访问者模式; 阅读全文
posted @ 2017-09-11 19:30 枕边书 阅读 (763) | 评论 (0) 编辑
摘要:文章通过用Go语言实现的设计模式,总结了各模式的特点和使用场景,并配以现实生活中的实例,帮助理解设计模式。本篇包括:模板模式、迭代器模式、组合模式、状态模式、代理模式、桥接模式和建造者模式; 阅读全文
posted @ 2017-08-29 19:19 枕边书 阅读 (992) | 评论 (2) 编辑
摘要:PHP程序员阅读Java语言实现设计模式的书,然后用Go语言实现。配以现实生活中的实例,帮助理解设计模式。本篇包括:策略、观察者、装饰者、工厂、单例、命令、适配器、外观。 阅读全文
posted @ 2017-08-21 20:46 枕边书 阅读 (1497) | 评论 (2) 编辑
摘要:本文通过 PHP 调用 Go 服务的实例的实现,介绍一种不同语言进程间通信的方式:Unix Domain Sockets,它可以快速高效地实现进程间的数据、信息交互,而且不需要锁等复杂操作,可谓是进程间通信的利器。 阅读全文
posted @ 2017-07-31 20:29 枕边书 阅读 (6087) | 评论 (10) 编辑
摘要:60万 条短消息记录,5万 关键词,看我如何一步步地将耗时 10小时 的作业优化到 10分钟 以内。优化过程中的心得、坑和结论方法,希望能大家一些启发。 阅读全文
posted @ 2017-07-17 20:29 枕边书 阅读 (16612) | 评论 (61) 编辑
摘要:本文介绍了空间索引之 GeoHash 索引的原理,并参考 Redis GEO 系列函数的实现,使用sorted set 优化了 GeoHash 的效率和精度,并附上PHP实现。 阅读全文
posted @ 2017-05-16 20:13 枕边书 阅读 (7424) | 评论 (9) 编辑
摘要:本文主要介绍 Redis、MongoDB、PostgreSQL 和 MySQL 数据库空间索引安装配置和使用时需要注意的点,并选取了120万数据对这些数据库的空间索引进行了测试,简单总结了各数据库空间索引的性能和特色以及使用场景。 阅读全文
posted @ 2017-05-07 18:53 枕边书 阅读 (3501) | 评论 (7) 编辑
摘要:任何一个完备的后端语言都应该有支持进程间通信(IPC)的方法,本文依旧通过并发循环ID生成器来讲 PHP 中对System V IPC包装的函数族,描述信号量,共享内存的简单用法。 阅读全文
posted @ 2017-02-20 09:36 枕边书 阅读 (3420) | 评论 (2) 编辑
摘要:后端开发的并发编程中,进程间通信是一个永远也绕不开的问题,本文通过一个 “并发生成循环ID” 的需求的多种实现来讲解如何通过外部介质进行进程间通信。本文介绍的外部通信方式有 文件、mysql、redis。 阅读全文
posted @ 2017-02-13 09:33 枕边书 阅读 (2648) | 评论 (8) 编辑