分享关于诗词的 graphql API
一声叹息,jdk竟然有4个random
更多精彩文章。 我们从jdk8说起。主要是四个随机数生成器。神马?有四个? 接下来我们简单说下这几个类的使用场景,来了解其中的细微差别,和api设计者的良苦用心。 最常用的就是Random。 用来生成伪随机数,默认使用48位种子、线性同余公式进行修改。我们可以通过构造器传入初始…
高并发之限流,到底限的什么鬼 (精品长文)
更多精彩文章。 你可能知道高并发系统需要限流这个东西,但具体是限制的什么,该如何去做,还是临摹两可。我们接下来系统性的给它归个小类,希望对你有所帮助。 google guava中提供了一个限流实现: RateLimiter,这个类设计的非常精巧,可以适用于我们日常业务中大多数流…
信号量限流,高并发场景不得不说的秘密
限流可以认为是一种降级,一般是根据后台的负载提前预估的一个阈值(也可以动态调整)。超过了这个值,就要进行一些旁路处理。根据业务形态,会有直接拒绝、延迟处理、保持等待、部分穿透、默认返回等响应方式。 concurrent包中的信号量,由于使用简单,易于理解,被广泛应用。但是,你要…
这是一张top命令的动动图
更多精彩文章。 如图,下面是废话,凑字数用的,否则显的太单调。图片已压缩,几百k,不小心进来不要心疼流量。 按下键盘上的某个键位,top会有不同的反应。比如上面8个。 显示每个cpu的运行情况。可以看到机器上有多少个cpu,机器nx的话整个屏幕都被占满了。 让top进入高亮模式…
Linux上,最常用的一批命令解析(10年精选)
更多精彩文章。 Linux这么多命令,通常会让初学者望而生畏。下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合。 任何一个命令其实都是可以深入的,比如tail -f和tail -F的区别。我们不去关心,只使用最常见的…
异常监控服务 Sentry 的部署
Sentry 是一个使用 python 写的异常监控服务,并有支持很多语言的 SDK。 如果使用 nginx 作为反向代理,设置 proxy-pass 即可,不细讲。 从十五分钟的内存使用图表中可以看出部署完成后有一个尖峰,后逐渐平稳了下来。
Node 中异常收集与监控
API/GraphQL 层,在 API 层的最外层使用一个中间件对错误集中进行处理,并进行上报。在具体逻辑层往往不需要主动捕捉异常,除非针对异常有特殊处理,如数据库事务失败后的回退 ... ... ... 对于数据校验,数据库异常与请求失败,我们通常会使用第三方库。 此时可以根…
没有预热,这不叫高并发,叫并发高
更多精彩文章。 大家都知道,高并发系统有三把斧子:缓存、熔断和限流。但还有一把斧子,经常被遗忘在角落里,郁郁不得志,那就是预热。 先说两个现象。这些现象,只能在并发高的系统中出现。 好吧,它已经引起了多个故障。 一个高并发环境下的DB,进程死亡后进行重启。由于业务处在高峰期间,…
Linux生产环境上,最常用的一套“AWK“技巧
hi,大家好,小姐姐味道最有用系列完结。 敢用自己的名字做软件名字的,都有非常强大的自信。比如,垠语言什么的。 awk的命名得自于它的三个创始人姓别的首字母,都是80来岁的老爷爷了。当然也有四个人的组合:流行的GoF设计模式。但对于我这游戏爱好者来说,想到的竟然是三位一体,果然…
sequelize V5 升级记录
由于官方提供了 typescript 的支持,不需要在安装 @types/sequelize。 由于使用了 typescript 编译,解决问题。 由于 sequelize 的 type 此时由官方维护,重新定义了 Model 等类型。 虽然目前官方已经支持了对 Model 的…
【收藏】 Kafka监控组件大全
本文使用Burrow和Telegraf搭建Kafka的监控体系。然后,简单介绍一下其他的,比如Kafka Manager,Kafka Eagle,Confluent Control Center等。 使用Burrow拉取kafka的监控信息,然后通过telegraf进行收集,最…
在 postgres 中重构用户表的 ID
GET /users/:ID 是一个非常典型的 REST API。最近在浏览我的应用时,经常会有 把所有用户的 ID 放大16倍,并且添加一个 10086 的基数。有一种拉面的既视感.. 如果以上语句没有报错,那就说明用户量实在是太少了,如果数据量较多会发生主键冲突。 因为它太…
这样的高可用,我不要!
前不久,朋友的公司,出现了比较大的故障。故障引起的原因也比较好解释,因为使用了ActiveMQ的高可用级别(M-S架构,双写完成ACK),结果在高峰期间,造成了生产端消息拥堵,诸多请求无法落地,数据错乱。 据他说,他们的应用,级别比电信应用还要高(牛皮一定要吹),所以消息系统要…
中国第一TreeMap面试官,诞生了
更多精彩文章。 Linux五件套之类的。 条条大路通罗马,罗马就是TreeMap。 答:回答list,set,map巴拉巴拉。 答:回答数组链表红黑树巴拉巴拉。 答:好行不能哎,因为它都叫hash了。 答:不知道。 第一面试官:我了解你了,你可以回去了。 答:5种基本的,四种不…
这可能是最中肯的Redis规范了
更多精彩文章。 Linux五件套之类的。 redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 虽然 Redis支持持久化,但将所有数据存储在 Redis 中…
sed 命令实践: 升级 sequelize.js 时批量替换字符串
sequelize 是 Node 中使用比较多的一个 ORM 库,最近计划将项目中的 sequelize 升级至 V5 版本。 根据 升级文档,其中一项是即将禁用 String based operators,使用 Sequelize.Op 等 Symbol operators…
亿级“附近的人”,打通“特殊服务”通道
假如动物们也用GPS,突然有那么一天北极的公北极熊有点冲动,想刷一下附近有没有母熊。要求距离越近越好,不是澳大利亚动物园那只,也不是格陵兰岛上被囚禁的那群呆企鹅,要是有点共同的嗜好就再好不过了。这种应用场景如何解决? 一个基于LBS的社交应用或者电商应用,或多或少的包含一些地理…
血洗多线程,抱得 offer 归
工作和面试之中,遇到了很多多线程问题。这里我总结了一下,希望对你有所帮助。本篇内容,基本上都是一些反例,有些很低级但常见。 当然,面试时拿来装逼用,也是极好的。 先来10个。 现象: 系统资源耗尽,进程僵死。 原因: 每次方法执行,都new一个线程池。 现象: 某个线程一直持有…
【SpringCloud】配置:application.yml中都应该写些啥?
基本信息用来展示项目的版本、开发者等。可用来开发统一的管理后台对项目进行控制。 一般,通过访问 /info,即可得到解释后的JSON。 用来打印Server的Access日志和运行日志,同时比较重要的还有contextPath。良好的日志格式是必要的,用来进行后续的分析和统计。…