- 博客(189)
- 收藏
- 关注
原创 dubbo RPC协议
triple,基于HTTP/1、HTTP/2的高性能通讯协议,100%兼容gRPC,支持Unary、Streming等通讯模式;支持发布REST风格的HTTP服务。dubbo,基于TCP的功性能私有通讯协议,确定是通用性较差,更合适在Dubbo SDK间使用。任意协议扩展,通过扩展protocol可以支持任意RPC协议,官方生态提供JsonRPC、thrift等支持。
2025-04-02 18:56:31
963
原创 Dubbo 框架内置的并发控制策略
Dubbo 通过 Filter 拦截器机制,内置了并发控制策略实现。限制从同一客户端到同一服务的并发请求数,防止恶意请求使服务器过载,确保服务的稳定性,并防止使用过多资源。控制某些服务的最大并发请求数,确保其他服务的资源可用性。系统过载和确保系统稳定性。允许在需求增加时更平滑地扩展服务。确保服务在高峰使用时间保持可靠和稳定。注意。
2025-03-30 20:17:56
409
原创 dubbo http流量接入dubbo后端服务
dubbo协议是基于TCP的二进制私有协议,更适合作为后端微服务间的高效RPC通信协议,也导致dubbo协议对于前端流量接入不是很友好。多协议发布【推荐】,为dubbo协议服务暴露rest风格的http协议访问方式。通过网关实现 http->dubbo协议转换,这种方式需要将http协议转换为后端服务能识别的dubbo协议,要求网关必须支持dubbo协议。
2025-03-28 22:14:31
558
原创 dubbo自定义扩展
在META-INF/dubbo/org.apache.dubbo.rpc.Filter文件中添加以下配置。对于Provider服务中dubbo接口以Service结尾的,返回结果添加。在Provider中自定义一个Filter,在Filter中修改返回结果。配置激活Filter之外,还可以通过为实现类增加。注解,已在满足某些条件时自动激活Filter实现。
2025-03-27 21:12:06
131
原创 dubbo服务降级-Mock
如果使用Stub,可能就需要捕获并依赖RpcException类,而用Mock就可以不依赖RpcException,因为它的约定就是只有出现RpcException时才执行。因经常需要再出现RpcException(比如网络失败、超时等)时进行容错,而在出现业务异常(比如登录时密码不对登)时不需要容错,为了避免出现这种直接抛出异常的情况出现,那么客户端就可以利用本地伪装来提供Mock数据返回授权失败。比如某验权服务,当服务提供方全部挂机后,服务消费方发起远程调用时,将会失败并抛出一个。
2025-03-24 16:19:31
559
原创 Dubbo集群容错
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于通知所有提供者更新缓存或日志等本次资源信息。自动失败切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作,比如新增记录。失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作。失败安全,出现异常时,直接忽略。在集群调用失败时,Dubbo提供了多种容错方案,缺省为。
2025-03-23 20:00:16
276
原创 调用链路传递隐式参数
在不修改方法签名与参数定义的情况下,可以通过 RpcContext 上的 setAttachment 和 getAttachment 在服务消费方和提供方之间进行参数的隐式传递。注意RpcContext 被拆分为四大模块(ServerContext、ClientAttachment、ServerAttachment 和 ServiceContext)。
2025-03-22 23:05:17
399
原创 error:0308010C:digital envelope routines::unsupported
error:0308010C:digital envelope routines::unsupported
2025-03-17 21:39:28
324
原创 INSERT ... ON DUPLICATE KEY UPDATE
INSERT ... ON DUPLICATE KEY UPDATE存在的问题
2025-03-15 16:56:37
559
原创 计算数组的小和
数组 s = [1, 3, 5, 2, 4, 6] ,在 s[0] 的左边小于或等于 s[0] 的数的和为 0 ; 在 s[1] 的左边小于或等于 s[1] 的数的和为 1 ;在 s[2] 的左边小于或等于 s[2] 的数的和为 1+3=4 ;在 s[3] 的左边小于或等于 s[3] 的数的和为 1 ;在 s[4] 的左边小于或等于 s[4] 的数的和为 1+3+2=6 ;在 s[5] 的左边小于或等于 s[5] 的数的和为 1+3+5+2+4=15 。所以 s 的小和为 0+1+4+1+6+15=27
2024-10-28 23:31:35
277
1
原创 Access denied for user ‘root‘@‘114.254.154.110‘ (using password: YES)
Access denied for user 'root'@'114.254.154.110' (using password: YES)
2024-09-21 20:22:24
361
原创 解密JVM崩溃(Crash)-学习笔记
代码异常日志头部信息崩溃日志详解文件路径Java程序崩溃时,默认在当前进程运行目录下生成hs_err_pid进程PID.log日志文件。自定义文件生成位置:-XX:ErrorFile=/Users/zzw/Documents/sourcecode/jvmdir/hs_err_pid%p.log需要注意的是,如果由于一些异常原因在工作目录无法存储(比如写入权限不足),则该文件会被存储在操作系统的临时目录下。在Linux操作系统环境下,这个地址是****。崩溃日志包含系统崩溃时获取到的相关信息,包括但不
2024-08-18 00:09:24
1648
原创 接口优化笔记
比如要查询一个人的全量信息,而这个人的全量信息保存在不同的服务中,比如用户服务、积分服务、成长值服务中时,可以通过一个关键数据,比如用户的id同时去这三个服务中进行查询,查询后进行汇总。当要查询的数据量比较大时,可能会因为网路宽度的原因,导致查询的出现。对于一个接口中的非业务操作,比如用户操作记录、积分记录等不需要实时处理看到结果的,可以进行异步处理,减轻系统的压力,加快业务操作的响应。可以使用线程池进行非业务操作的处理,但可能会因为操作的异常、服务的异常(重启)导致操作的丢失,造成数据的丢失。
2024-08-15 19:08:15
618
原创 运行时数据区
对于每一个线程,在Java堆上都有一块私有的内存区域,叫做TLAB(Thread Local Allocation Buffer)线程本地分配缓存,用于新生成对象的分配。当一个对象进过逃逸分析,确定对象的作用域只在方法内,不会被其它方法获取到时,会使用标量替换,将对象分解成一个个的属性值,直接分配到栈上,等方法执行完成,栈帧销毁时,顺便将对象一块销毁,减少垃圾回收的工作量。Java Heap,Java虚拟机中内存最大的一块,是线程共享的,几乎所有的对象实例都会在这里进行分配。
2024-08-11 15:54:06
456
原创 存在数组arr,其中有N个数,每个数出现偶数次,存在2个数,每个数出现了奇数次。找到这两个出现奇数次的数
存在数组arr,其中有N个数,每个数出现偶数次,存在2个数,每个数出现了奇数次。找到这两个出现奇数次的数
2024-07-28 19:01:44
274
原创 存在数组arr,其中有N个数,每个数出现偶数次,存在2个数,每个数出现了奇数次。找到这两个出现奇数次的数
存在数组arr,其中有N个数,每个数出现偶数次,存在2个数,每个数出现了奇数次。找到这两个出现奇数次的数
2024-06-19 22:16:01
126
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人