主线程的用户信息,到子线程怎么丢了
[#](#前言) 前言 {#前言} ----------------- 前几天有人问了我这样一个问题:在使用多线程的时候,发现有一些数据会在进入到子线程之后丢失,比如用户信息,又比如记录日志的TraceId等等。这个子线程数据丢失的问题我早前也遇到过,刚好来讲讲解决方案。 [#](#前期准备) 前期准备 {#前期准备} ----------------------- 首先...
[#](#前言) 前言 {#前言} ----------------- 前几天有人问了我这样一个问题:在使用多线程的时候,发现有一些数据会在进入到子线程之后丢失,比如用户信息,又比如记录日志的TraceId等等。这个子线程数据丢失的问题我早前也遇到过,刚好来讲讲解决方案。 [#](#前期准备) 前期准备 {#前期准备} ----------------------- 首先...
[#](#前言) 前言 {#前言} ----------------- 上一篇文章介绍了如何使用MyBatis的Plugin,来实现SQL的日志打印,这篇文章介绍一下如何将SpringBoot的请求日志,优雅地打印到日志中。 实现效果是这样的,只需要在需要打印的接口上加上一个注解,或者增加一项配置项,一个很详细的请求出入参等信息就被打印出来了。 ![](http://sta...
[#](#一-什么是粘包、半包) (一)什么是粘包、半包 {#一-什么是粘包、半包} ------------------------------------------ 在实际的网络开发中或者在面试中,最开始使用TCP协议时经常会碰上粘包和半包的情况,因此我们有必要了解一下什么是粘包,什么是半包,以及如何去解决。 **粘包**:故名思意就是客户端和服务端之间发送的数据包粘...
[#](#一-什么是netty) (一)什么是netty {#一-什么是netty} ------------------------------------------ Netty是一个**异步的,基于事件驱动的网络应用框架** ,用于快速开发可维护、高性能的**网络服务器和客户端** 。Netty的应用十分广泛,可以说主流的框架中,如果有网络方面的需求,一般用的都是net...
[#](#一-引言) (一)引言 {#一-引言} ------------------------ 在单体环境中,遇到临界资源的时候我们会使用Synchronized或者RetreenLock在调用临界资源前上锁。但是在分布式的环境下,锁住单体资源就不起作用了,这个时候就需要用到分布式锁。分布式锁的原理就是借用外部的一个系统来充当锁的作用,比如Mysql、Redis、Zook...
[#](#一-什么是微服务) (一)什么是微服务? {#一-什么是微服务} ------------------------------------- 在了解什么是SpringCloud之前,我们有必要去了解一下什么是微服务。在传统的项目中,我们都是把所有的代码都放在一个单体应用中,这种方式配置方便,可以很好的运行部署,但是随着项目越来越大,这个单体应用就会越来越臃肿,再加上...
[#](#一-什么是服务注册中心) (一)什么是服务注册中心 {#一-什么是服务注册中心} --------------------------------------------- 服务注册中心是微服务架构中非常重要的一个组件,在微服务架构中起到了协调者的作用,一般包含下面几个功能: 服务发现:保存服务提供者和服务调用者的信息;服务调用者订阅服务提供者的信息 服务配置:服...
[#](#一-ribbon概述) (一)ribbon概述 {#一-ribbon概述} ------------------------------------------ Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求...
[#](#一-feign概述) (一)Feign概述 {#一-feign概述} --------------------------------------- Feign是Netflix开发的声明式,模板化的Http客户端,Feign可以帮助我们更加便捷的调用HTTP API。SpringCLoud对Feign进行了增强,使得Feign支持SpringMVC注解,并整合Rib...
[#](#一-hystrix的介绍) (一)Hystrix的介绍 {#一-hystrix的介绍} ------------------------------------------------ 微服务的调用有时候会存在连环调用,即微服务A调用微服务B,微服务B调用微服务C。此时当微服务C不可用的时候,所有的请求都会阻塞到微服务B,可能会导致微服务B的资源耗尽,进而使得微服务...