- 浏览: 14293 次
- 性别:
- 来自: 南京
最新评论
文章列表
大多数分布式服务的调用是http或者Rpc请求进行访问,在项目中使用了http作为通信方式,通常http访问具有很多不确定因素,除了服务异常、常常还有网络或者业务引起的超时等问题(网络连接慢、资源繁忙、暂时不可用、服务脱机)。如果在web请求处理线程中直接进行http访问,在异常或者超时发生时,将会严重影响服务器的请求处理性能。当然我们可以自己封装服务调用,通过future等模式来实现服务的异步调用。Hystrix则为我们服务调用变的更安全可控,服务调用过程是在hystrix管理的线程池中,因此使得服务调用过程与web线程能隔离开,保证服务器的稳定,同时hystrix将不同的业务调用 ...
Zookeeper & Curator 服务注册
curator是最简单的Zookeeper客户端
Curator主要组件
Recipes (扩展:包括分布式锁、队列、选举等)
Framework (框架)
Utilities (工具)
Client (客户端)
Errors (错误处理)
另外Curator提供了一些扩展库,比如用于 ...
对于三种常见的并发情况的简单分析:
1.高并发低耗时
2.低并发高耗时
3.高并发高耗时
先说高并发低耗时,由于线程运行时间很短,为了能够大量的支持并发可以使用newCachedThreadPool这种线程池。高并发的情况如果没有大量线程支撑的话,必定需要一个很大的阻塞队列来缓存任务,这样就导致任务有较长延时。当然也有人会说线程很多的话也会导致系统开销很大,的确是这样,所以这种时候就要做负载均衡将并发量拆解分散到各个节点。
对于低并发高耗时,在http://ifeve.com/里面有个面试的回答分析的很好。高耗时是要看是CPU耗时还是IO耗时,如果是CPU耗时线程数通常解决不了太多的问 ...
单例模式是一个很常用的创造型模式,其主要目的是控制生成对象的唯一性。在java中实例化对象的方法主要通过new(还有反射、clone等,本篇不讨论)。为了限制new方法的使用,首先要将单例类的构造函数设置为private,如此客户端就无法直接调用构造函数来new对象了。
下图是单例模式的一个简单类图:
通过静态方法getInstance获取对象实例,一种方式是通过static初始化模块来实例化这个单例对象,这种方式在该类被加载时实例,由于类的初始化过程是唯一的所以这种单例模式也是线程安全的。
public class OneClass {
private static OneCl ...
在数据库应用编程中,通常为了修改语句的执行效率会将数据库的自动提交模式关闭,然后采用事务的方式提交更改。然后问题就来了,下面是一段被精简的程序,用的是Mysql C API:
MYSQL *conn=mysql_init(NULL);
mysql_real_connect(c ...