redis 简单解决程序的依赖问题

同事让我帮忙给他做个功能,义无反顾的接受了。

功能大致这样的,用户登录的时候需要依赖服务A,服务A不稳定,而且服务A需要用户登录的信息,不能去掉服务A的业务逻辑。

可以模拟这样的场景,人家登录你的网站,输了用户名和密码,后台逻辑走到了服务A,此时A服务挂了,而你设置的超时时间为10S,太残忍了,第一个用户等待10S,第二个用户等待10S,100个用户全部等待10S,这样的网站绝对是不友好的。

解决方案1:不推荐

在java类中设置全局变量,服务A发生超时异常设置全局变量为false,根据这个状态判断是否使用服务A。

解决方案2:推荐

if(jedis.exists("key")){

  服务A逻辑

服务A逻辑异常设置:

jedis.setex("key",5*60, "value");

解决方案3:待定

使用ZK模式

解决问题的思想最重要,以后慢慢积累。

时间: 2024-10-27 13:57:30

redis 简单解决程序的依赖问题的相关文章

lld解决程序启动依赖库的问题

场景说明:查找程序依赖库是非常麻烦的,如果需要的又是一些不长使用的库,对于整个系统的移植是非常苦难的.目前尝试使用lld去查找所有依赖的库,然后将这些依赖的库提取,放在同一个文件夹中,然后制定依赖的路径,解决问题. Ldd [选项] 文件 选项有-v:打印ldd 的版本号:-d:执行符号重部署,并报告缺少的目标对象(只对ELF 格式适用):-r:对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF 格式适用):-h:帮助信息. 执行如下命令来查看应用程序所关联的库: Ldd –v

使用CocoaPods管理iOS程序的依赖包

CocoaPods介绍 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况.总之意思就是,手动一个个去下载所需类库十分麻烦.另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦.如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”.所以,你需要 CocoaPods

CocoaPods:为iOS程序提供依赖管理的工具

本文转载自: http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ (Posted by 唐巧 May 25th, 2014 iOS) 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods. CocoaPods项目的源码在Github上管理.该项目开始于201

使用strace命令解决linux服务器依赖库问题

使用strace命令解决linux服务器依赖库问题 简单说明:strace的另一个用处是解决和动态库相关的问题.当对一个可执行文件运行ldd时,它会告诉你程序使用的动态库和找到动态库的位置.但是如果你正在使用一个比较老 的glibc版本(2.2或更早),你可能会有一个有bug的ldd程序,它可能会报告在一个目录下发现一个动态库,但是真正运行程序时动态连接程序 (/lib/ld-linux.so.2)却可能到另外一个目录去找动态连接库.这通常因为/etc/ld.so.conf和 /etc/ld.s

CentOS+Apache+php无法访问redis的解决方法 Redis server went away

在CentOS下配置Apache+php+redis+phpredis环境.编辑访问redis缓存的php程序test.php,以应用程序方式在后台运行,可成功访问Redis,而在Apache下以网页形式访问时则出错,在访问Redis以及之后的代码均不再执行.查看Apache的日志:/var/log/httpd/error_log,发现代码运行时出现异常:PHP Fatal error: Uncaught exception 'RedisException' with message 'Redi

C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题

http://www.jb51.net/article/99718.htm 本文主要介绍了C#使用读写锁三行代码简单解决多线程并发写入文件时提示"文件正在由另一进程使用,因此该进程无法访问此文件"的问题.需要的朋友可以参考借鉴 在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文

《Java项目实践》:简单聊天程序

<Java项目实践>:简单聊天程序 由于这个简单程序,还是涉及到很多的知识点,下面我们就一点一点的来完成. 我们熟悉的QQ聊天,就有一个界面,是吧,我们自己做一个简单的聊天程序,因此我们也就需要为Client写一个界面.因此,这就是我们第一步需要完成的任务. 第一步:为Client端写一个界面 完成一个界面有两种方法,一种是使用Frame对象来完成,另外一种是继承JFrame类来完成.本项目使用第二种. 第二种继承JFrame类完成的界面的程序如下: public class ChatClie

unity团队如何解决项目资源依赖缺失问题和资源命名规范化

我要说的前提是unity团队的项目管理是使用git.对svn我没有试过! 因为我是要使用 钩子解决项目资源依赖缺失问题和资源命名规范化. 使用钩子对任何一个人上传的内容进行检查.如果不合法就不让上传! 钩子的编写可以使用 shell或者python 或者shell调用python 而我的实现是shell调用python脚本(具体不做介绍) 我做了如下的要求: Git钩子检查规则 v1.0.0  撰写人:孙广东 注: Git 上传的操作有三种:添加A.删除D.修改M. 本程序执行的功能:检查上传的

解决程序出现“terminate called after throwing an instance of &#39;std::bad_alloc&#39; what(): std::bad_alloc Aborted (core dumped)”的问题

最近跑程序时出现了这么一个问题: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped) 出现此问题一般都是数据量太大,同时跑太多程序造成的,比如我经常会同时打开十多个终端界面,跑不同的脚本,就容易出现这种问题.解决方法很简单,不要同时跑这么多程序,一个个跑. 解决程序出现"terminate called after throwing