- 浏览: 2652611 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
延迟暴露
如果你的服务需要Warmup时间,比如初始化缓存,等待相关资源就位等,可以使用delay进行延迟暴露。 |
延迟5秒暴露服务:
<
dubbo:service
delay
=
"5000"
/>
|
延迟到Spring初始化完成后,再暴露服务:(基于Spring的ContextRefreshedEvent事件触发暴露)
<
dubbo:service
delay
=
"-1"
/>
|
Spring2.x初始化死锁问题
在Spring解析到<dubbo:service />时,就已经向外暴露了服务,而Spring还在接着初始化其它Bean。 如果这时有请求进来,并且服务的实现类里有调用applicationContext.getBean()的用法。 1.
请求线程的applicationContext.getBean()调用,先同步singletonObjects判断Bean是否存在,不存在就同步
beanDefinitionMap进行初始化,并再次同步singletonObjects写入Bean实例缓存。 这样就导致getBean线程,先锁singletonObjects,再锁beanDefinitionMap,再次锁singletonObjects。 |
规避办法
1. 强烈建议不要在服务的实现类中有applicationContext.getBean()的调用,全部采用IoC注入的方式使用Spring的Bean。 2. 如果实在要调getBean(),可以将Dubbo的配置放在Spring的最后加载。 3. 如果不想依赖配置顺序,可以使用<dubbo:provider deplay=”-1” />,使Dubbo在Spring容器初始化完后,再暴露服务。 4. 如果大量使用getBean(),相当于已经把Spring退化为工厂模式在用,可以将Dubbo的服务隔离单独的Spring容器。 |
发表评论
-
如何更好地学习dubbo源代码
2018-09-14 17:28 513http://jm.taobao.org/2013/11/ ... -
一种队列限流方案
2014-08-26 19:29 1787参考:http://my.oschina.net/le284 ... -
dubbo入门
2013-07-02 10:00 22103dubbo是阿里巴巴开源的 ... -
dubbo性能测试报告
2012-10-04 12:07 16252Scene a、本次性能测试,测试了dubbo2.0所有支持 ... -
dubbo协议参考
2012-10-03 14:15 25776http://code.alibabatech.com/wik ... -
服务化需要考虑的问题
2012-09-27 13:36 1687在大规模服务化之前,应用可能只是通过RMI或Hessian等工 ... -
防痴呆设计
2012-09-27 13:34 1288最近有点痴呆,因为解 ...
相关推荐
180多页面试题,前前后后不间断的更新了...【Dubbo】dubbo使用中遇到的问题 174 【Zookeeper】zookeeper介绍 178 1、简介 178 2、基本概念 179 3. ZooKeeper典型应用场景 183 4、ZooKeeper在大型分布式系统中的应用 189
20. **线程死锁示例**:两个线程互相等待对方释放资源,导致无法继续执行。 21. **HTTP报文结构**:包含请求行、请求头、空行、请求体,以及响应行、响应头、空行、响应体。 22. **Vector和ArrayList的区别**:...
解析:并发编程用于提高多核或多处理器环境下的程序性能,合理使用并发控制工具可以有效地管理线程的同步和通信,避免死锁和数据竞争等问题。 问题 13:谈谈 Spring Cloud 和Dubbo的区别,它们分别适用于哪些场景?...
- 同步代码块:使用`synchronized`关键字包裹部分代码,可自定义锁对象,粒度更细,提高了并发效率,但可能导致死锁或同步范围不当的问题。 6. HashMap与Hashtable的区别: - HashMap允许空键值对,而Hashtable不...
- **基于分布式服务框架的锁**:如Dubbo、Spring Cloud等提供的分布式锁服务。 3. **锁的特性**: - **公平性**:按照请求顺序分配锁,避免饥饿现象。 - **非阻塞**:当无法获取锁时,立即返回失败,而不是等待...
- 数据库设计不合理,如频繁出现的死锁、事务处理不当等问题。 - 缺乏足够的容错机制,对异常情况处理不足。 - 过度的日志记录影响性能。 - 缓存使用不当,如缓存穿透、雪崩效应等问题。 - **架构层面**: - ...
然而,随着并发程度的增加,会出现一系列问题,如线程安全问题(死锁、活锁、饥饿)、竞态条件、数据一致性等,这些问题需要开发者深入理解并发原理,并熟练掌握并发控制机制(如`synchronized`、`volatile`、`Lock`...
5. 防止重复操作:比如订单创建,分布式锁可以防止因网络延迟导致的重复下单问题。 视频“David_6_13_分布式锁的前世今生.mp4”将详细讲解以上内容,并可能进一步探讨各种实现方式的优缺点,以及在实际项目中如何...
死锁是多个线程互相等待对方释放资源导致的僵局,可以通过避免循环等待条件来预防。 二、JVM内存模型与垃圾收集 Java虚拟机(JVM)内存模型包括堆、栈、方法区、本地方法栈和程序计数器。GC(Garbage Collection)...
6. 数据库事务:理解ACID属性(原子性、一致性、隔离性、持久性),掌握事务的四种隔离级别(读未提交、读已提交、可重复读、串行化)及其可能导致的问题。 7. 索引:索引的类型(B树、哈希索引)、创建和使用,...
通过多线程,可以确保用户界面的流畅性,避免因为网络延迟而导致的卡顿现象。 二、Socket编程 Java中的Socket类是网络通信的基础,用于建立客户端与服务器之间的连接。在聊天程序中,服务器端会创建一个...
4. **补偿机制**:事务补偿用于处理那些由于异常(如服务器故障或网络问题)而未能成功提交的事务。LCN通过以下方式实现补偿: - **触发条件**:当事务发起方收到失败状态时,会将其识别为待补偿事务,并通知...
- 非公平锁可能会导致饥饿现象,但在实际应用中通常具有更高的吞吐量。 4. **ReentrantLock中tryLock()和lock()方法的区别** - `tryLock()` 尝试获取锁,可设置等待时间,不会阻塞线程。 - `lock()` 必须获取到...
9. **死锁**:两个或更多线程相互等待对方释放资源,导致无法继续执行的状态。如何预防和解决死锁? 10. **线程池**:`ExecutorService`接口和`ThreadPoolExecutor`类提供了线程池的实现,能有效管理线程,提高系统...
30. **CAS(Compare and Swap)**:无锁编程的一种原子操作,但可能导致ABA问题。 31. **Synchronized**:Java内置的同步机制,保证同一时刻只有一个线程访问临界区。 32. **HTTPS与SSL**:HTTPS基于SSL/TLS协议,...
4. **TCP粘包/拆包**:由于TCP协议的流式传输特性,可能导致数据包边界模糊不清,通过设置合理的发送间隔或使用特殊分隔符等方法可以有效避免该问题。 5. **序列化协议**:如JSON、Protobuf、Thrift等,选择合适的...
3. 微服务架构:提倡模块化、服务化,通过API Gateway实现服务间通信,利用Dubbo或Spring Cloud构建微服务。 五、性能优化 1. 数据库优化:合理设计数据库表结构,避免全表扫描,使用索引提高查询效率。 2. 缓存...
- 在并发环境下,`HashMap`可能会出现死锁等问题,主要是因为其内部操作是非线程安全的。 - 解决方案通常包括使用`ConcurrentHashMap`或者对`HashMap`进行外部同步控制。 #### LinkedHashMap的应用 - `...
FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上...