zuul动态网关

Zuul网关 Zuul 是Netflix 提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。 gateway最终也会部署多个实例,达到分布式的效果。 动态路由 动态路由需要达到可持久化配置,动态刷新的效果。如架构图所示,不仅要能满足从spring的配置文件properties加载路由信息,还需要从数据库加载我们的配置。另外一点是,路由信息在容器启动时就已经加载进入 … 继续阅读

分布式ID生成方案汇总

分布式ID的特性 唯一性:确保生成的ID是全网唯一的。 有序递增性:确保生成的ID是对于某个用户或者业务是按一定的数字有序递增的。 高可用性:确保任何时候都能正确的生成ID。 带时间:ID里面包含时间,一眼扫过去就知道哪天的交易。 分布式ID的生成方案 1. UUID 算法的核心思想是结合机器的网卡、当地时间、一个随记数来生成UUID。 优点:本地生成,生成简单,性能好,没有高可用风险 缺点:长度 … 继续阅读

spring cloud的组件

最近想梳理一下公司的整个系统的设计,以及各个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类型的变量每个线程都有自己的一个副本,某个线程对这个变 … 继续阅读