最近想梳理一下公司的整个系统的设计,以及各个spring cloud组件的交互和协同工作过程和原理。也想自己从头构建一个新的微服务系统。于是,从头到尾,梳理了一遍。 常见微服务组件 注册和发现服务 Eureka: Eureka是Netflix开发的服务发现框架 Zookeep、etcd、Consul 配置中心 spring cloud config、ctrip Apollo ctrip Apoll … 继续阅读
分类目录归档:编程
TransmittableThreadLocal详解
1.简介 TransmittableThreadLocal 是Alibaba开源的、用于解决 “在使用线程池等会缓存线程的组件情况下传递ThreadLocal” 问题的 InheritableThreadLocal 扩展。若希望 TransmittableThreadLocal 在线程池与主线程间传递,需配合 TtlRunnable 和 TtlCallable 使用。 2.使用场景 下面是几个典型 … 继续阅读
线程本地变量:InheritableThreadLocal详解
1.为什么需要InheritableThreadLocal ThreadLocal 只能访问当前线程的变量,子线程无法访问父线程的变量,因此需要需要InheritableThreadLocal。 由于ThreadLocal设计之初就是为了绑定当前线程,如果希望当前线程的ThreadLocal能够被子线程使用,实现方式就会相当困难(需要用户自己在代码中进行访问|传递)。在此背景下,Inheritab … 继续阅读
线程本地变量:ThreadLocal
1.ThreadLocal ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。 ThreadLocal是每个Thread都绑定一个Map,线程之间不会互相干扰。 2.什么是ThreadLocal ThreadLocal有点类似于Map类型的数据变量。ThreadLocal类型的变量每个线程都有自己的一个副本,某个线程对这个变 … 继续阅读
内存泄露&内存溢出
1.内存泄露 (Memory Leak) 程序在申请内存后,系统无法释放已申请的内存空间,少量的内存泄露危害可以忽略,但内存泄露慢慢堆积,后果很严重,无论多少内存,迟早会被占光。 Java 内存泄漏的典型例子 Vector v = new Vector(10); for (int i = 0; i < 100; i++) { Object o = new Object(); v.add(o) … 继续阅读
RabbitMQ的延迟消息
之前使用了ActvieMQ的延迟消息,最近看了一些RabbitMQ的延迟消息。RabbitMQ中提供了关于延迟消息的插件RabbitMQ通过插件的形式来支持延迟消息。 实现开始时间不确定的定时任务触发,我们可以引入延迟消息的使用。 注意:只有RabbitMQ 3.6.x以上才支持延迟消息 插件安装 安装方式很简单,在这个页面:http://www.rabbitmq.com/community-pl … 继续阅读