Codis在生产环境的搭建指南
随着公司的业务量越来越大,并且因为疫情影响,线上办公的需求越来越大。又由于我们公司最近承接了其他公司不能远程办公的人工坐席,所以之前的单实例Redis在将来的压力会变大。为了防止Redis出现单点故障,我们决定搭建Redis集群,以便减少单个Redis的压力。在综合考察了各个Redis集群方案后,我们决定使用豌豆荚出品的Codis作为我们的集群方案。在此就不比较Codis和官方的Redis Cluster两者之间的区别了,因为每个人使用的情况都不相同。下面就来讲一下生产环境下的Codis的搭建步骤吧,会讲一些官方文档没有提及的部分。其实基本的搭建步骤官网已经介绍得很清楚了,如果你对Codis的安全性比较感兴趣,希望你继续读下去,其实我们是可以给Codis proxy设置密码的,这样就不用怕别人利用redis的漏洞来做一些危害服务器的操作了。而且经过我实践,如果你通过redis-cli连接Codis,超过一定时间没有操作的话会让你重新输入密码,可以说是比Redis安全性要高一点了。官方文档也说了,生产环境建议使用zookeeper或etctd作为外部存储。这里我们就使用zookeeper
2020-02-18 技术分享
如何利用负面清单立flag
又是新年伊始,每个人在看着自己去年立下的flag还没完成的情况下又立下了新的flag,就像下图这样,陷入了一个永远完成不了的循环中。那么怎么摆脱这种无限循环呢,我来分享一下我的愚见。当你在你的清单立下一件又一件事情时,你的时间并没有因此而多出来。如果你还是在原来的基础上来做你清单上的事,那么你是没有时间来做的。于是我们自然而然地想到要在原来生活的基础上做减法,也就是列一个负面清单,里面列出了我们不能做或要少做的事情。这样省下来的时间就可以留给你去做你正面清单里面的事情了。史蒂夫·乔布斯说过一句话“人生中最重要的不是你做什么,而是你不做什么”,从中说的就是我们做事要专注,凡事要化繁为简。OK,就是这么一个简单的逻辑,因为每天时间长度的不变性,你要做一件新的事情,那必须减少以前长做的事。从现在起,找找原来你生活中那些没有必要做或需要少做的事情,比如说刷抖音、玩游戏、睡懒觉、追剧等等,把它们砍掉。然后你才能有时间去做你想做的事情,在2020年年末的时候,你才有可能畅快地舒一口气:“啊,今年的事情终于都做完了!”好的,希望大家今年都能完成自己的心愿,Flag不倒。
2020-01-04 人生哲学
什么是函数式编程思想?
请注意这篇文章并不是教你怎么使用Java8里面的集合新特性–stream流,也不是教会你怎么使用lambda表达式,它纯粹是我个人从函数式编程思想的角度出发,来思考我们为什么需要函数式编程以及何时才需要函数式编程的一个思考过程。先说说我在开发过程中碰到的一个问题,因为有问题才能驱动人去解决问题嘛!这个问题就是我在写不同的定时任务的时候,发现每次都要使用一段相同的for循环代码段,中间唯一不同的就是在for循环里面执行的一部分代码段。这部分代码段根据不同的需求而不同,而使用这个for循环的目的就是为了遍历一个列表。那部分不同的代码就是要在for循环里面根据列表里面不同的值来执行相应的任务。所以写了很多这种定时任务之后我就感觉那部分for循环代码能不能抽成一个函数啊,这样就能复用了啊。但是不幸的的是,我要执行的不同的代码段是在for循环里面,而不是在for循环后面。所以要想以前一样,把这个for循环提取出来是不起作用的,因为照以前的思想函数的参数只能是变量,不能是代码段。我在没有想到函数式编程思想的时候甚至想能不能有一种搭积木式的编程方式,就是只要一个函数里面包含for循环的前一个大括号,
2019-11-29 技术分享
千万不要这样使用@Async注解
在实际的项目中,对于一些用时比较长的代码片段或者函数,我们可以采用异步的方式来执行,这样就不会影响整体的流程了。比如我在一个用户请求中需要上传一些文件,但是上传文件的耗时会相对来说比较长,这个时候如果上传文件的成功与否不影响主流程的话,就可以把上传文件的操作异步化,在spring boot中比较常见的方式就是把要异步执行的代码片段封装成一个函数,然后在函数头使用@Async注解,就可以实现代码的异步执行(当然首先得在启动类上加上@EnableAsync注解了)。具体的使用方式这里我也就不再演示了,网上教大家使用@Async的很多。今天我要讲的并不是怎么去使用@Async注解,而是讲我在实际开发过程中遇到的一个坑,希望你不要再犯。首先,再明确一点,学习一个知识,第一步是找到相应的官网或是比较权威的网站。那么这个坑是什么呢?就是如果你在同一个类里面调用一个自己的被@Async修饰的函数时,这个函数将不会被异步执行,它依然是同步执行的!所以你如果没有经过测试就想当然的以为只要在方法头加上@Async就能达到异步的效果,那么你很有可能会得到相反的效果。这个是很要命的。所以我来给你们演示一下,这
2019-11-13 技术分享