- 博客(97)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注

原创 Spring Cloud Gray 微服务灰度中间件
Spring Cloud Gray 是一套开源的微服务灰度路由解决方案,它由 spring-cloud-gray-client,spring-cloud-gray-client-netflix 和 spring-cloud-tray-server,spring-cloud-gray-webui 组成。spring-cloud-gray-client 定义了一套灰度路由决策模型,灰度信息追踪模型...
2019-09-07 00:51:50
2916
原创 springboot jackson 日期格式配置
Date的Serializer默认是com.fasterxml.jackson.databind.ser.std.DateSerializer,由BasicSerializerFactory加载,但是可以通过Jackson2ObjectMapperBuilder.serializers()方法进行自定义。Jackson2ObjectMapperBuilder的回调接口,可以以自动装配的方式实现自定义的ObjectMapper。
2025-03-15 11:25:45
298
原创 Spring Boot Configuration和AutoConfiguration加载逻辑和加载顺序调整
在spring中, AutoConfiguration也是一个种Configuration,只是AutoConfiguration是不能使用proxy的。而且spring对于两者的加载顺序也不是一视同仁,是有顺序的。spring会先加载@Configuration标注的类,这个过程会将@AutoConfiguration标注的类给过滤掉;
2024-10-27 22:26:32
1087
1
原创 transmittable-thread-local线程透传核心源码解读
transmittable-thread-local是阿里开源的一个ThreadLocal值跨线程透传的组件,主要解决在线程池池化复用线程执行组件的场景下异步执行时上下文传递的问题。支持sdk和agent两种方式接入使用。不过agent方式接入使用在项目也是需要依赖ttl的TransmittableThreadLocal类,可以将scope设置为provided。
2024-09-07 17:57:14
786
原创 SpringBoot 3的两种SPI加载方式
从spring boot 2.7.0发布后, 自动配置类的加载方式就发生了改变,原来从META-INF/spring.factories文件中加载,变为了从META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中加载,对应的加载实现类发生了改变
2024-08-03 18:14:25
1050
1
原创 tcp 连接数上限突破
一个tcp连接就需要占用一个文件描述符,一旦文件描述符用完,新的连接就会返回给我们错误是:Can’topen so many files。linux系统出于安全角度的考虑,在多个维度对于可打开的文件描述符进行了限制,通常是系统限制、用户限制、进程限制。
2024-03-13 12:58:29
1698
1
原创 nginx: mac使用vscode本地调试nginx
在extensions中搜索"c/c++", 将前3个插件都安装在extensions中搜索"cmake", 将前2个插件都安装。
2024-03-07 15:01:03
1631
原创 go mod出现zip: not a valid zip file的解决办法
问题原因:go mod代理服务器下载出错;导致在下载时出现": zip: not a valid zip file"优先使用aliyun的代理服务,调整直接使用https://goproxy.cn。重新执行kubebuilder init 正常完成。
2024-03-03 17:18:48
2815
原创 Kubernetes: 本地部署dashboard
本篇文章主要是介绍如何在本地部署kubernetes dashboard, 部署环境是mac m2。
2024-03-03 01:20:45
713
原创 mTLS: Netty单向/双向TLS Demo完整代码
NettyHelper.java: 主要用是创建EventLoopGroup和判断是否支持Epoll。package org.example.netty;import io.netty.channel.EventLoopGroup;import io.netty.channel.epoll.Epoll;import io.netty.channel.epoll.EpollEventLoopGroup;import io.netty.channel.epoll.EpollSocketChannel
2024-03-02 16:05:29
1195
原创 mTSL: netty单向/双向TLS连接
不管是单向tls还是双向tls(mTLS),都需要创建证书。创建证书可以使用openssl或者keytool,openssl 参考。
2024-03-02 15:52:01
1355
原创 mTLS: TLS/CA/证书 简介
简称英文全称中文全称CA证书颁发机构PCA私有证书颁发机构,又名私有 CASSL安全套接字层协议TLS传输层安全性协议HTTP超文本传输协议HTTPS超文本传输安全协议EV SSLEV 证书,又名扩展验证证书OV SSLOV 证书,又名组织验证证书DV SSL证书,又名域验证证书通配符证书MDC多域 SSL 证书UCC统一通信证书TLD顶级域PKI公钥基础设施OCSP在线证书状态协议CSP加密服务提供商Public key公钥私钥。
2024-03-02 00:40:48
2044
原创 Java SDK下沉:解决SDK治理痛点
在每个java应用中,都会存在各种各样的SDK,随着时间流逝和技术的迭代,SDK也需要进行相应的版本更新,在大型微服务系统中,动辄几百上千个应用,要推动这个数量级的应用进行SDK升级或者覆盖接入,消耗的成本是巨大的,这也是微服务治理的一大难点。那么这个难点如何解决呢?参考service mesh的思路,将技术复杂度下沉,业务逻辑和技术组件拆分、解耦。
2024-02-25 21:40:29
934
原创 etcd: mac 环境部署
release版本链接:https://github.com/etcd-io/etcd/releases/安装完后,会有相关提示,推荐使用 brew services 来管理这些应用。官网:https://etcd.io/docs/v3.5/install/将zip包解压出来,进入目录查看文件。
2024-02-23 10:03:26
1209
原创 HTTP2:netty http2 StreamChannel多流实现与Http2StreamFrame解码器的源码分析
netty http2 server侧的核心逻辑个人认为,主要在编解码处理器和Stream Transform Channel这块,分别处理Http2 消息帧的编解码,以及连接的多流处理机制。
2024-02-08 17:45:53
1192
原创 HTTP2: springboot启用http2
Springboot默认自带的tomcat开启http2必须使用ssl,所以需要重新启一个tomcat,并修改其配置,使其支持HTTP2.0 (Springboot支持多connector)。如果只考虑支持h2c,可以让springboot自带的tomcat不启动。通过浏览器访问接口,然后查看使用的protocol。启动springboot应用。使用okhttp进行验证。
2024-02-07 18:30:46
2671
原创 HTTP2: netty server端同一个端口支持 http1.1/http2
同时支持http1和http2比较推荐的方法是通过HttpServerUpgradeHandler将http1.1升级到http2,网上有很多资料。这里采用的是另一种方式。在对接收到的请求字节进行解码时,判断client采用的是http1还是http2,然后再将相应的ChannelHandler添加到ChannelPipeline中。新增2个接口和4个实现类。
2024-02-07 16:56:39
548
原创 HTTP2: netty http2 server demo
与netty 的http1.1类似,http2也需要相应的编解码器,另外还需要一个处理http2连接通道复用的Handler。在构建Http2FrameCodec时,可以通过Http2Settings类对流和数据帧进行设置,覆盖默认其默认值。运行上面的代码,8080端口将支持http2协议。运行下面的curl脚本,即可访问。
2024-02-07 16:22:55
1134
原创 HTTP2:基础概念
http2 相较于http2最大的改变在于用户和网站之间可以复用一条连接实现多流交互。其推出并没有改变http1.1 的基本语义。http2的目的是响应复用,头部压缩来提高极致的性能。
2024-02-07 12:26:21
882
原创 Dubbo Consumer 对Provider的protocol选择逻辑
该方法会将“refer”属性提出来,然后进入doRefer()方法中获取"protocol"参数值,将protocol参数值做为consumerUrl的protocol,同是将referenceParamters做为consumerUrl的参数,consumerUrl的protocol参数会在后面的服务发现中做为一个条件用于筛选相应protocol的provider url。该方法是服务发现的入口方法,该方法的主要逻辑是创建Invoker对象,并生成Proxy对象。逻辑的主要代码下面4处。
2024-01-29 15:09:55
457
原创 dubbo3 负载均衡器
其中默认的负载均衡器就是RandomLoadBalance,也可以在consumer url中通过"loadbalance"参数指定。
2023-12-19 20:09:00
502
原创 failed to launch process in the docker container on mac m2, and return message “could not launch pro
try to remote debug istio pilot as referring to the document of istio wiki (link: https://github.com/istio/istio/wiki/Remote-Debugging), and following the steps in this document, present two difference results.
2022-10-30 17:28:04
455
原创 mac m2 编译dubbo3.1.x版本报Missing:com.google.protobuf:protoc:exe:osx-aarch_64
原因是低版本的protobuf和grpc不支持MacBook m1或m2 protobuf,需要使用x86的protobuf。
2022-10-18 14:45:29
1562
原创 Idea remote debug
idea remote debug 有两种debugger mode, 分别是attach to remote jvm和listen to remote jvm, 两种模式对于jvm的启动参数也不一样。
2022-10-09 23:08:29
1229
原创 istio: 解决istio-proxy使用了资源配额导致新建pod处于pending状态的问题
本文记录了在mac搭建的istio环境在创建了4个带有istio-proxy的pod后,无法再新建pod的问题,提示 FailedScheduling 0/1 nodes are available: 1 Insufficient cpu. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.,开始查找分析原因,最终找到解决方案。...............
2022-07-29 01:16:51
6354
原创 istio: h5应用访问后端接口 (跨域+路由管理)
本文实验链路:h5 > demo-a > demo-b在实验过程出现跨域问题,直接使用istio解决,没有调整后端代码
2022-07-28 23:40:56
1663
原创 istio 访问网格内的服务(路由管理)
本文实验访问网络内的应用,并根据路由规则访问不同版本。访问链路:istio-springboot-demo-a > istio-springboot-demo-bi
2022-07-28 11:55:28
929
原创 Dubbo3 RpcContext中的3个RpcContextAttachment和1个RpcServiceContext
dubbo3 在RpcContext中RpcContextAttachment和RpcServiceContext的生命周期
2022-07-19 10:13:26
963
原创 Dubbo3-配置中心简析
配置中心是dubbo3三大中心之一,在dubbo3的实例级服务注册发现中承担着配置管理的主要角色;dubbo3的配置中心有两种作用,一是类似于dubbo.properties文件一样,做为启动时配置参数加载,二是通过监听机制实现一些策略规则的动态变更。......
2022-06-30 15:16:27
1287
原创 dubbo3 元数据中心-实例级服务注册发现
本文中使用zookeeper做为dubbo的注册中心和元数据中心。开启元数据中心remote模式的配置有两种:springboot应用和dubbo原生应用的配置方式。本文主要介绍元数据在dubbo实例级服务注册发现的过程写入流程和应用,以及元数据中心remote模式和local模式的区别。.........
2022-06-17 23:06:58
1891
原创 Dubbo3:DubboInvoker中URL的参数优先级
在consumer侧,RPC参数的优先级如下: referenceconfig > consumerconfig > moduleconfig > applicationconfig > provider url关于referenceconfig 到 applicationconfig这部分优先级处理逻辑是在ReferenceConfig中处理的,在ReferenceConfig创建Proxy对象时,有一段加载consumer url参数配置的代码:public class Re
2022-05-26 21:57:51
476
原创 Alibaba OneJavaAgent 初探
一、使用1、plugin在这种模式下,one-java-agent在加载plugin时,会从以下几个方面进行,分别是描述plugin.properties这个文件是一个引导文件,里面的配置内容引导plugin加载plugin-jarplugin的引导包,内有实现PluginActivator,用于引导和管理plugin的初始化和销毁instrument-lib这个目录存放plugin的代理逻辑和Instrument类在项目中有demo,以dubbo-test
2022-05-19 14:21:29
2095
原创 Dubbo3 服务发现的推空保护
推空保护是Dubbo服务发现新增的一个提升稳定性的功能,目的是当注册中心出现抖动,consumer接收到注册中心推送了空provider urls过来时,直接忽略掉,从而保护consumer维护的服务发现信息不受影响。但是在某些场景下却是会出现异常,我们做个实验:1、启动Provider A, ip为192.168.1.102、启动Provider B, ip为192.168.1.113、启动Consumer, 调用Provider A和Provider B, 此时正常调用4、停掉Provider
2022-05-17 11:55:40
4592
支持FireFox的JS调用OCX控件例子
2015-02-12
更新文件,更新数据库.(仅限ORACLE)
2013-12-05
mysql 隔离级别 repeatable_read 多个事务间数据重复读的问题
2016-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人