- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 Slf4j MDC详解
MDC 全拼 Mapped Diagnostic Contexts,是SLF4J类日志系统中实现分布式多线程日志数据传递的重要工具(不同的系统有不同的实现方式,下文中会有介绍);同时,用户也可利用MDC将一些运行时的上下文数据打印出来。此处以Log4j2中的实现为例。为了方便讲解,我们只分析MDC的put()方法:MDC的put()方法利用MDCAdapter实现。
2023-08-10 14:06:15
1146
原创 InheritableThreadLocal-线程变量
由于ThreadLocal设计之初就是为了绑定当前线程,如果希望当前线程的ThreadLocal能够被子线程使用,实现方式就会相当困难(需要用户自己在代码中传递)。在此背景下,InheritableThreadLocal应运而生InheritableThreadLocal主要用于子线程创建时,需要自动继承父线程的ThreadLocal变量,方便必要信息的进一步传递。
2023-08-10 14:03:04
136
原创 TransmittableThreadLocal-线程变量
是Alibaba开源的、用于解决“在使用线程池等会缓存线程的组件情况下传递ThreadLocal”问题的 InheritableThreadLocal 扩展。若希望 TransmittableThreadLocal 在线程池与主线程间传递,需配合和使用。自定义 TtlRunnable 实现 Runnable,TtlRunnable初始化方法中保持当前线程中已有的TransmittableThreadLocal线程池中线程。
2023-08-10 14:00:32
146
原创 ThreadLocal-线程变量
ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。
2023-08-10 13:54:53
144
原创 seata的部署和集成
重启微服务,现在微服务到底是连接tc的SH集群,还是tc的HZ集群,都统一由nacos的client.properties来决定了。# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置。# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置。registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址。# seata tc 服务注册到 nacos的服务名称,可以自定义。
2023-07-25 17:52:27
141
原创 RabbitMQ部署指南
如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。队列将镜像到任何新加入的节点。如果指定的节点在集群中存在,但是暂时不可用,会创建节点到当前客户端连接到的节点。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。从RabbitMQ 3.8版本开始,引入了新的仲裁队列,他具备与镜像队里类似的功能,但使用更加方便。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。
2023-07-25 17:50:21
1352
原创 Centos7安装Docker DockerCompose
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。,这里主要介绍 Docker CE 在 CentOS上的安装。启动docker前,一定要关闭防火墙!
2023-07-25 17:45:52
1359
1
原创 nacos容器创建及其持久化
INSERT INTO `tenant_info` VALUES (1, '1', '49ebba69-485c-4f91-bd19-a6aa5b87cace', 'leadnews', '黑马头条', 'nacos', 1613486283445, 1613486283445);`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
2023-07-25 17:44:47
158
原创 微服务分布式消息SCS RabbitMQ
MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。
2023-07-21 17:54:01
215
1
原创 微服务路由组件Gateway服务网关
是一个为微服务架构提供一种简单有效的统一的 API 路由管理方式。@Order(-1)@Component@Override// 1.获取请求参数// 2.获取authorization参数// 3.校验// 放行// 4.拦截// 4.1.禁止访问,设置状态码// 4.2.结束处理。
2023-07-21 17:53:22
282
1
原创 Feign远程调用隐式传参
有时候我们需要传一些自定义的header参数,而不需要传全部header参数,只需要在调用的接口上添加@RequestHeader注解,Feign调用时,会自动分装成header参数。适用于当一个调用链涉及到多个微服务,一些参数需要在整个调用链中传递。// 跳过 content-length, 防止RPC时参数长度与请求时不一致。* 请求拦截器,将原始请求header中数据原样通过feign传输。然后在feignClient中配置自定义的配置类,覆盖默认的配置。
2023-07-21 17:52:43
274
1
原创 微服务调用组件OpenFeign RestTemplate远程调用
NONE:不记录任何日志信息,这是默认值。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。@Bean// 日志级别为BASIC。
2023-07-21 17:49:08
385
1
原创 微服务分布式配置Nacos配置管理
Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。不重启微服务情况下动态变更。
2023-07-13 15:11:22
675
1
原创 微服务负载均衡组件Ribbon负载均衡
SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求@Bean。
2023-07-13 15:10:31
193
1
原创 nacos容器创建及其持久化
INSERT INTO `tenant_info` VALUES (1, '1', '49ebba69-485c-4f91-bd19-a6aa5b87cace', 'leadnews', '头条', 'nacos', 1613486283445, 1613486283445);`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
2023-07-13 15:08:47
208
1
原创 nacos集群搭建
max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
2023-07-13 15:05:21
193
1
原创 Nacos安装指南
Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。Nacos依赖于JDK运行,索引Linux上也需要安装JDK才行。Linux或者Mac安装方式与Windows类似。-- nacos客户端依赖包 -->上传到Linux服务器的某个目录,例如。开发阶段采用单机安装即可。windows版本使用。与windows中类似。然后重命名为java。
2023-07-13 15:04:19
404
1
原创 微服务注册/发现组件Nacos服务注册中心
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 本集群优先负载均衡规则。NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则。namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID。cluster-name: HZ # 集群名称。
2023-07-13 15:01:37
201
1
原创 微服务注册/发现组件Eureka注册中心
3.心跳续约:微服务会周期性(默认30秒)地向Eureka Server 发送心跳以维持自己的注册状态,如果Eureka Server 在一定时间(默认90秒)没有接受到某个微服务实例的心跳,Eureka Server 将会注销该实例。心跳续约:微服务会周期性(默认30秒)地向Eureka Server 发送心跳以维持自己的注册状态,如果Eureka Server 在一定时间(默认90秒)没有接受到某个微服务实例的心跳,Eureka Server 将会注销该实例。
2023-07-13 14:54:34
275
1
原创 BigDecimal总结
"RoundingMode.FLOOR:=>负无穷大方向舍入模式。System.out.println("RoundingMode.HALF_EVEN:=>如果舍弃左边的数字为奇数,则与HALF_UP模式相同,如果为偶数则与HALF_DOWN模式相同" + a.setScale(2,System.out.println("RoundingMode.HALF_UP:丢弃的分数>=0.5,向上舍去(四舍五入)=>" + a.setScale(2, RoundingMode.HALF_UP));
2023-05-15 11:41:29
246
1
原创 BigInteger总结
① 比较大小:int compareTo(BigInteger val) 将此BigInteger与指定的BigInteger进行比较 返回值:1:this大于val;-1:this小于val。// BigInteger(String val, int radix):将指定基数中的BigInteger的String表示形式转换为BigInteger。③ new BigInteger(String val,int radix):将radix进制的val数据转化为十进制的BigInteger类型的数据。
2023-05-15 11:40:44
972
1
原创 容器化技术Docker
镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。1.新建空文件夹2.将项目jar包拷入文件夹3.将jdk8.tar.gz拷入文件夹4.将Dockerfile脚本拷入文件夹5.将文件夹上传到虚拟机6.在文件夹目录下运行docker build -t javaweb:1.0 . 命令# 指定基础镜像# 配置环境变量,JDK的安装目录# 拷贝jdk和java项目的包# 安装JDK# 配置环境变量# 暴露端口。
2023-05-15 11:36:49
686
1
原创 部署微服务集群Docker-Compose
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
2023-05-15 11:34:16
893
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人