- 博客(21)
- 收藏
- 关注
原创 博客摘录「 Redisson分布式限流RRateLimiter的实现原理」2023年8月8日
我们目前在工作中遇到一个性能问题,我们有个定时任务需要处理大量的数据,为了提升吞吐量,所以部署了很多台机器,但这个任务在运行前需要从别的服务那拉取大量的数据,随着数据量的增大,如果同时多台机器并发拉取数据,会对下游服务产生非常大的压力。之前已经增加了单机限流,但无法解决问题,因为这个数据任务运行中只有不到10%的时间拉取数据,如果单机限流限制太狠,虽然集群总的请求量控制住了,但任务吞吐量又降下来。如果限流阈值太高,多机并发的时候,还是有可能压垮下游。所以目前唯一可行的解决方案就是分布式限流。
2024-01-26 17:56:39
335
原创 tcpdump
.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG:紧急指针)[FP.]: 标记FIN、PUSH、ACK组合,这样做是为了提升网络效率,减少数据来回确认等。type类型只有host、port、net和portrang,可以使用这四种类型进行过滤。可以使用这两个方向进行过滤。[S.]: SYN同步标识,以及确认[S]的ACK。[F.] : FIN (结束连接)[P.] : PSH(推送数据)[R.] : RST(重置连接)[S] : SYN(开始连接)
2023-12-05 11:01:58
424
原创 如何快速检索数据?
对于索引表,应该做好key和value的联合索引,因为是可以通过value做查询过滤的,但是对于只通过key查询的场景,value就不需要加联合索引。添加联合索引时,应尽量将查询频率高的字段方在前面。已排好顺序的(索引)
2023-11-27 16:33:11
365
原创 如何做好初创企业技术架构?
service层方法应该是一个编排层,也就是只做实现功能的流程调用,不参与实际逻辑的处理。内部添加一个support层做具体调用多个dal、integration完成特定功能的实现。Gitlab Container Registry、Harbor、Docker Registry:容器仓库。无任何业务相关代码,只作为bean装载、环境配置、可执行jar生产的任务。做Request、Response与service接口对象的转换工作。根据场景提供粗、细粒度的方法供service的support调用。
2023-11-27 16:32:10
385
原创 如何分库分表?
通过业务需求找到核心的查询关键条件,通过这个(些)条件所依赖的字段作为基因字段,通过算法将数据写入到具体的序列库、表内。当查询时,只要通过这些关键字段,即可重新计算出数据存放库、表的序列号,来实现查询需求。单个表只记录单独类型的数据,如:之前一张表记录了付款请求数据与付款响应数据,通过类型字段区分。每天归档6个月前的过期、已成功的数据,如果是消耗磁盘的表,单表超出2G,应该提高归档的数据量,尽可能的多回收不需要使用的资源。按照表结构定义计算出每行数据最大占用空间,再乘以 500w条数据,等于最大占用空间。
2023-11-27 16:31:07
366
原创 如何安装Zadig?
如果在k8s的namcespace中发现无法拉取镜像,要把VPN关掉就可以了,镜像是国内的源。开始安装k8s,可以用上面的Minikube。
2023-11-27 16:29:46
593
原创 如何查询某一块内存区域存储的数据?
cat /proc/[pid]/maps|grep ‘[区域地址]’ 查看内存区块。pmap -XX [pid] 查看哪些内存区块占用较多。
2023-11-27 16:27:44
405
原创 Top命令
top -Hp 进程ID,显示指定进程下面的线程信息,这个命令搭配JAVA的自带命令jstack可以非常快速并且有效的定位代码问题。默认进入top时,各进程是按照CPU的占用量来排序的,按x键打开/关闭排序列的加亮效果。ps aux 也可以查看进程占用情况,但是是瞬时的,不能刷新,也不能查进程下的线程。如果以GiB开头,则后面数据的单位是GB,如果以MiB开头,则后面数据的单位是MB。如果以GiB开头,则后面数据的单位是GB,如果以MiB开头,则后面数据的单位是MB。按b键,再次按键可以取消高亮显示。
2023-11-01 16:33:33
38
原创 JProfiler如何使用?
传出引用:查看对象所有属性值和属性值的引用关系树。传入引用:查看当前对象被哪些对象所依赖的树状结构。合并的支配引用:查看当前对象到GC根的引用关系。
2023-11-01 16:32:14
144
原创 如何扩容、缩容?
那么当该配置依然无法满足业务时,再横向扩容。如果目前是3C,当单机升级到4C后,CPU使用率 = 90 - (90 / 3C * (4C - 3C)) = 60%。目标利用率 = 缩容机器数 * 单机利用率 / (总机器数 - 缩容机器数) + 单机利用率。目标单机利用率 = 原单机利用率 - 单核利用率 * 增加的核数。目标单机利用率 = 原单机利用率 + 单核利用率 * 缩减的核数。目标单机利用率 = 原单机利用率 / 机器数。扩容:先纵向,再横向。降配:先横向,再纵向。
2023-11-01 16:28:56
78
原创 如何优雅停机?
所以,控制停机以及分配消费线程的可以设置为主线程,具体消费者可以设置为守护线程,当主线程接收到停止指令退出程序后,守护线程不论是否已经完成任务,均会停止。守护线程随用户线程存在而存在,随用户线程退出而退出。(主干都枯死了,叶子还会有么?所以一般守护线程内不要出现写固有资源,如文件、数据库等。线程池默认规则、Netty、Tomcat是用户线程。使用用户线程与守护线程。Dubbo是守护线程。
2023-11-01 16:28:24
34
原创 使用关联查询代替子查询
避免写select count(1) from (select?) t1,这种在子查询无分页、无条件的情况下耗费很多资源。在子查询内部尽量将数据量降到最少,并且作为一张关联表和其它表做JOIN查询,避免子查询。Order by的字段需要用高效率的索引,不然扫描行数也会很多。LIKE不要使用全模式匹配“%你%”,这种无法使用索引。删除时也应该避免子查询,改为关联查询再删除。避免采用子查询,关联查询效率更高。IN内的数量过多会造成全表扫描。
2023-11-01 16:27:28
88
原创 JVM一些命令
JVM 生成 Heap Dump 的时候,虚拟机是暂停一切服务的。如果是线上系统执行 Heap Dump 时需要注意。延伸出一个问题:日常巡检内存使用量时要拉大时间跨度,如果总是选择几个小时,可能置身其中无法关注到大的变化量。
2023-10-28 17:26:52
41
原创 JVM调优理解
如果对象在Eden出生,并经过第一次Minor GC后仍然存活,并且被Survivor容纳的话,年龄设为1,每熬过一次Minor GC,年龄+1,若年龄超过一定限制(CMS默认是6次,最大15次PrintTenuringDistribution可以看出),则被晋升到老年态。增加MaxTenuringThreshold,可以降低进入老年代的几率(不是绝对的,如果你的对象一直都不会回收的情况),但是会占用更多的Survivor,而且S0和S1来回复制的对象也更多,所以YongGc的时间会增长。
2023-10-28 16:56:51
45
原创 电商系统之用户钱包
本篇文章仅用于技术交流、学习研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关。本博客所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源,非经允许,不得用于赢利目的。本博客受中国知识产权、互联网法规和知识共享条例保护和保障,任何人不得进行旨在破坏或牟取私利的行为。本博客声明以简体中文版为准,不对其他语言版本负责。文章内容均属个人浅见,如有不正还望指正、批评,作者将第一时间回复并作出修正。研究目的涉及到资金方面的功能一般会设计资金账户。它就.
2021-03-24 13:20:34
1995
1
原创 电商系统之延长收货与申请退款
本篇文章仅用于技术交流、学习研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关。本博客所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源,非经允许,不得用于赢利目的。本博客受中国知识产权、互联网法规和知识共享条例保护和保障,任何人不得进行旨在破坏或牟取私利的行为。本博客声明以简体中文版为准,不对其他语言版本负责。文章内容均属个人浅见,如有不正还望指正、批评,作者将第一时间回复并作出修正。研究目的接前一篇基于TRON网络的支付功能建设后,不.
2021-03-23 17:31:40
941
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人