自己动手封装让Logrus支持本地与ELK日志

程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。日志记录大家都会认为简单,但如何通过日志可以高效定位问题并不是简单的事情。 在Go语言中,日志库并不像Java一样有一个具有统治力的日志库。在做新项目技术选型的时候,难免会遇到日志库的选择问题。近期公司新项目我选择了logrus是我已知的Go语言日志库中在Github中stars数最多的日志库。 官网介绍: Logrus is a structured logger for Go Continue Reading …

自己动手撸一个支持超时与重试Go HTTP Client

之前写过一篇上下文中断在Go语言中的使用 的文章,简单的介绍了上下文中断在Go语言中使用与原理!那么这篇博客,就来讲讲上下文中断在实际中的使用!大家如果不是很了解的话可以点击前面的链接了解下! 在实际开发过程中,太多故障是因为超时没有设置或者设置的不对而造成的。而这些故障都是因为没有意识到超时设置的重要性而造成的。如果应用不设置超时,则可能会导致请求响应慢,慢请求累积导致连锁反应,甚至应用雪崩。而有些中间件或者框架在超时后会进行重试(如设置超时重试两次),读服务天然适合重试,但写服务大多不能重试,重试次数太多会导致多倍请求流量,即模拟了DDoS攻击,后果可能可想而知! 先看看实现: package httpclient import ( “bytes” “context” “crypto/tls” Continue Reading …

留夏

《留夏》是一部电影,我想导演的意思是留住夏天吧! 今晚,本来是准备看法国🇫🇷对阵比利时🇧🇪的四强赛的。比赛在凌晨两点,想睡!但是平常的生物钟也是2点!随手打开爱奇艺挑部电影吧,看到这部前段只看了片头的电影!心想反正睡不着,索性看完吧! 《留夏》这部电影讲述是主人公张翰祥从小跟着奶奶在农村生活,父母为了生计一直在城里打工,随着年龄的增长,张翰祥越来越思念自己的父母,也越来越向往城市的生活;直到遇见从城里来乡下过暑假的女孩依依,张翰祥才更近一步了解到城里的那些新鲜事,尽管生活环境大不相同,但是孩童爱玩的天性却是相同,张翰祥和小伙伴张子乐一边听着依依描述的城市生活,一边带依依体验农村的快乐时光;暑期结束后,依依回到了城里,好朋友张子乐也跟着爷爷去了城里,但是张翰祥却坦然接受了这些,相比去城里生活,奶奶才更需要自己的陪伴。不久后张翰祥爸爸回来要接儿子去城里,面对现实的无奈,张翰祥只得依依不舍地告别了奶张翰祥从小跟着奶奶在农村生活,父母为了生计一直在城里打工,随着年龄的增长,张翰祥越来越思念自己的父母,也越来越向往城市的生活;直到遇见从城里来乡下过暑假的女孩依依,张翰祥才更近一步了解到城里的那些新鲜事,尽管生活环境大不相同,但是孩童爱玩的天性却是相同,张翰祥和小伙伴张子乐一边听着依依描述的城市生活,一边带依依体验农村的快乐时光;暑期结束后,依依回到了城里,好朋友张子乐也跟着爷爷去了城里,但是张翰祥却坦然接受了这些,相比去城里生活,奶奶才更需要自己的陪伴。不久后张翰祥爸爸回来要接儿子去城里,面对现实的无奈,张翰祥只得依依不舍地告别了奶奶! 没有著名的演员 ,没有华丽的词语 ,但是很真实!不像最近大火的《我不是药神》, 但是依旧感人!这也是我第一次在iqiyi上给第一部电影评分!推荐一看! 我觉得在城市里遇到工作的不开心就来看看这个电影,是内心的一种平静!远离楼市、股市、币市的浮躁!

上下文中断在Go语言中的使用

越来越多的小伙伴开始使用Go语言开发应用,大多数情况会使用上下文操作,如进行HTTP调用,或从数据库中获取数据,或与go-routines执行异步操作。 最常见的用途是传递可供所有下游操作使用的常用数据。 为什么我们需要中断操作? 通常情况下我们我们的应该通过HTTP 发起请求,然后查询数据库再通过HTTP请求将数据返回 如果一切都完美的话时序图应该像下面这样: 但是,如果用户在中间取消请求会发生什么? 例如,如果客户端中间请求关闭浏览器,就可能发生这种情况。 如果没有取消,应用服务器和数据库将继续工作资源会被浪费: 理想情况下,如果我们知道进程(在本例中为HTTP请求)停止,我们希望进程的所有下游组件都需要停止: Continue Reading …

使用 Google BBR 加速VPS网络

在使用Google BBR之前,我们首先要了解它是什么。在TCP连接中,由于需要维持连接的可靠性,引入了拥塞控制和流量管理的方法。Google BBR就是谷歌公司提出的一个开源TCP拥塞控制的算法。在最新的linux 4.9及以上的内核版本中已被采用。Shadowsocks不经过其它的任何的优化就能轻松的跑满带宽。由于Google BBR是最近几年才开始流行起来的,任何低于4.9的linux内核版本都需要升级到4.9及以上才能使用! modprobe tcp_bbr echo “tcp_bbr” >> Continue Reading …

伪随机数的产生和流密码

能够应用到大量密码函数的一种功能是随机或伪随机数的产生。对这个功能的要求是产生的数据流必须不能预测。 流密码是对称密码算法,从明文输入流逐位或逐字节产生密文输出。使用最为广泛的此类密码是RC4。 一个重要的密码函数是具有强密码学意义的伪随机数发生器。伪随机数发生器(PRNG)在许多密码和安全应用中有使用。 伪随机数发生器(PRNG) 真随机数发生器(TRNG) 在网络安全的各种应用里,随机数在加密算法中扮演重要的角色。 伪随机数的产生的原则 大量的基于密码学的网络安全算法和协议都使用了二进制随机数。 随机性 一般认为随机序列应有良好的统计特性。分布均匀性:序列中的位分布应是均匀的,即0和1出现的频率大约相等。 Continue Reading …

27岁

与堂哥们聚餐完回来,休息了小会儿有点累了就躺在了床上。被楼下跳广场舞大妈们的声音吵醒,一看时间快晚上九点了!周末的时间总感觉比工作日过得快些,早上起床给老爸上了一炷香,紧接着出门去吃饭去了!醒来天色已经消失得无影无踪! 过完今天就27周岁了,快到了人们常说的30而立的年纪了!工作之后每年生日的时候都会写一篇博客来反思与记录这一年发生的事情。去年没写,因为心情太过复杂!实在无法静下心去思考,去码字!只想安安静静的呆在老爸旁边不说话,哪怕他睡着了! 再过几天,也是老爸离开我一周年的日子! 过去的一年,没有人会在周末给我打电话,问我这周有没有去踢球、累不累、村里面发生的事情了,没有人会在你取得一点点小成就开心得不得了为我鼓掌了,未来都不会有了! 过去的一年,失去了2位亲人,一位父亲、一位伯父,好像似懂非懂的明白了些生命的意义,也许我永远也懂不了! 过去的一年,也行是我20多年成长最多的一年!人生只有经历了一些痛苦的事情才会成长,只有失去了一些东西才会获得一些东西。那些真正带来个人成长的,必定痛苦至极! 过去的一年,我离开了哔哩哔哩,加入一家区块链创业公司,从二次元到区块链希望过几年回来看我这个决定是无比的正确。 过去的一年,我还坚持着只要不加班就还会去踢球。这也是我这么多年还一直坚持的好习惯了,除了睡懒觉。 过去的一年,依旧单身,未来一年肯定还是会继续单身,我倒不觉得这有什么不好,有更多的时间做自己喜欢的事情,只是经常会被亲戚朋友提起。 过去的一年,对工作更加认真了,更加努力。因为工作有时候真的会给人带来快乐,只要不是一直需要加班。 Continue Reading …

如何搭建一个集中式的日志管理系统

日志是任何系统的重要组成部分,当发生错误时,它们会提供系统正在执行的操作以及导致错误的原因。 几乎每个系统都会以某种形式生成日志,这些日志将写入本地磁盘上的文件。当我们查看日志文件的时候我们就能够很快的定位问题,并且修复Bug。 然而随着互联网的发展,我们的系统越来越复杂,分布式系统、微服务架构,我们的应用跑在成百上千台服务器上。这时候一个集中式的日志管理系统是很有必要的。 集中式日志应系统大体分为四个部分 – 收集日志,传输,存储和分析(可视化)。 我们将深入研究这些部分,并了解我们如何构建应用程序。 日志收集 所有应可能以不同的方式创建日志,有些应用程序直接在文件中记录系统日志和其他日志。 在Linux服务器上运行的典型Web应用程序时,在/ Continue Reading …