摘要: 前言 在讲解滑动时间窗之前,有个问题可以思考一下,如何统计当前时间服务的QPS呢?博主在前公司的时候,他们是这么设计的,在分布式环境下,列如当前时间 2021-9-13 23:12:10, 那么解析成key = 2021-9-13-23-12-10,并通过这个key查询redis,获取一个整型的统计 阅读全文
posted @ 2021-09-14 13:46 gaojy 阅读(1669) 评论(0) 推荐(0) 编辑
摘要: 前言 RocketMQ的网络通信是基于Netty实现的RPC框架,这些RPC框架实现的功能都具有通用性,如sofa-bolt,分布式服务框架Dubbo,实现的网络通信模型都具有协议定义,同步请求,异步请求,单向请求,负载均衡,流控,心跳,重连等机制。 服务端NettyRemotingServer 通 阅读全文
posted @ 2021-07-31 15:52 gaojy 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 前言 在此之前,博主主要从事服务端的开发,很少涉及到前端,更不用说全栈开发了。为了全栈工程师的进阶,也提高自己的技术广度,开始去尝试实践一些前端项目。alpha智能图像项目是一个新手上手的的项目,主要用于对图片的识别,探测,相似度对比,留言交流,以及视频检测。 项目介绍 项目分3个部分:alpha- 阅读全文
posted @ 2021-04-09 21:57 gaojy 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 简介 由于最近工作比较忙,前前后后花了两个月的时间把TBSchedule的源码翻了个底朝天。关于TBSchedule的使用,网上也有很多参考资料,这里不做过多的阐述。本文着重介绍TBSchedule的运行机制,架构设计以及优化建议。通过学习别人的经验,来提高自己的技术能力,感受阿里人的智慧,也向阿里 阅读全文
posted @ 2017-09-20 16:21 gaojy 阅读(10570) 评论(2) 推荐(0) 编辑
摘要: 阿里图标库 阿里的图标库已经蹦了好几天了,难道维护的小伙伴都输出到社会了?所以选择了icomoon替代iconfont。 制作svg 把png jpg图片使用ps导出svg,再导入icomoon会遇到问题,所以这边使用在线生成svg。 地址 https://www.pngtosvg.com 生成fo 阅读全文
posted @ 2022-06-30 11:15 gaojy 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 负载均衡 Dubbo支持的负载均衡有如下策略:默认是随机 权重随机(random),实现类RandomLoadBalance 权重轮询(roundrobin),实现类RoundRobinLoadBalance 最少活跃(leastactive)负载策略,实现类LeastActiveLoadBalan 阅读全文
posted @ 2022-02-10 10:23 gaojy 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 在对服务者调用流程的讲解中,最后invoker调用链是 RegisterDirectory$InvokerDelegate.invoke(InvokerWrapper.invoke) -> ListenerInvokerWraper.invoke -> ProtocolFilterWrapper.i 阅读全文
posted @ 2022-02-10 10:21 gaojy 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 概述 关于dubbo的路由配置,可以查看官网,那么路由到底做了什么呢?起始就是根据一次服务请求,消费者根据路由配置决定调用哪些服务提供者,然后将对应的服务提供者进行负载均衡,集群容错。 路由规则调用流程 调用入口:AbstractClusterInvoker#invoke => List<Invok 阅读全文
posted @ 2022-02-10 10:17 gaojy 阅读(108) 评论(0) 推荐(0) 编辑
摘要: override协议可以让用户动态修改配置,并实时生效。关于动态配置的介绍可以详细看官网https://dubbo.apache.org/zh/docs/v2.7/user/examples/config-rule-deprecated/#m-zhdocsv27userexamplesconfig- 阅读全文
posted @ 2022-02-10 10:15 gaojy 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中提到了RegisteryProtocol#doRefer里面的invoker 为 MockClusterInvoker。 我们在ExtensionLoader一节中,漏讲了一个细节,那就是获取自适应扩展类的时候,采用字节码生成技术的时候,生成的$Adaptive类中获取扩展类是通过Exte 阅读全文
posted @ 2022-02-10 10:10 gaojy 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 在上一节中,由于篇幅原因,对invoker的介绍会在本章节详细阐述。 生成消费者调用invoker 将代码点到ReferenceConfig#createProxy -> invoker = refprotocol.refer(interfaceClass, url); 这边还不得不提一下refpr 阅读全文
posted @ 2022-01-08 00:16 gaojy 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 在看完上篇的服务提供者启动流程之后,再来看消费者的启动流程就简单很多了,其大体的设计流程是差不多的。服务消费者的启动主要调用ReferenceConfig#get(), get方法跟服务提供者的export方法类似,主要关注checkAndUpdateSubConfigs和init方法。 Refer 阅读全文
posted @ 2021-12-28 22:17 gaojy 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 服务暴露实际上就是启动server本地监听,并且将服务信息注册到注册中心上。在dubbo:service上的export可以指定是否暴露,同时provider也可以指定延迟暴露的时间。 if (!shouldExport()) { // 判断是否暴露服务,由dubbo:service export= 阅读全文
posted @ 2021-12-19 20:29 gaojy 阅读(325) 评论(0) 推荐(0) 编辑
摘要: Dubbo在配置的提供上,提供了丰富的功能,也考虑了很多场景,具体可以参考官方文档。其中配置的来源也有很多,包括了外部的配置中心,这些配置是如何获取,如何解析,最后如何在dubbo中生效的呢?带着这些疑问,学习一下dubbo provider启动流程。这边还是第一章以API方式入手,入口在servi 阅读全文
posted @ 2021-12-18 20:29 gaojy 阅读(503) 评论(0) 推荐(0) 编辑