码上代码
我是码哥,为大家分享技术,面试经验和技巧,主页或私信可以联系我,希望我们成为朋友,一起逆袭
展开
-
互联网大厂高并发下商品详情页面Redis+Lua实战
之前我们商品详情页为了应对高并发采用redis进行分布式锁的做法防止缓存穿透,缓存击穿,缓存雪崩并发问题:Redis缓存穿透,缓存击穿,缓存雪崩实战代码总结本篇对之前进行优化在应用高并发时,先进行一个限流,防止大量请求打入redis或者Mysql限流的算法有哪些?简单介绍 4 种非常好理解并且容易实现的限流算法!固定窗口计数器算法规定我们单位时间处理的请求数量。比如我们规定我们的一个接口一分钟只能访问10次的话。使用固定窗口计数器算法的话可以这样实现:给定一个变量counter来记录处理的请原创 2021-03-14 15:14:32 · 4737 阅读 · 0 评论 -
亿级流量下Rabbitmq如何实现消息不丢失实战教学
rabbitmq导致丢失数据—线上问题数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ来分析一下吧。1.如何保证生产者消息不丢失以mq实现异步消峰为例,系统需要实现发送手机验证码,采用rabbitmq发送消息给手机服务,消费消息后发送短信生产者 @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "sms.sms.queue", durable = "true",原创 2021-03-08 20:18:13 · 23561 阅读 · 6 评论 -
netty如何实现优化百万并发http请求
问题引入:如果项目存在数量大的并发,如何优化项目性能首先判断项目性能瓶颈是什么, CPU,还是I/O请求大部分是网络I/o瓶颈,主要是因为网络请求是阻塞,导致太慢Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK 原生 NIO 程序的问题JDK 原生也有一套网络应用程序 API,但是存在一系列问题,主要如下:NIO 的类库和 API 繁杂,使用麻烦。你需要熟练掌握 Selector、ServerSocketChannel、SocketC.原创 2021-10-09 17:27:48 · 6545 阅读 · 0 评论 -
从底层实现角度比较Dubbo,SpringCloud的优劣
底层架构原理是类似的Dubbo,RPC的性能比HTTP的性能更好,并发能力更强,经过深度优化的RPC服务框架,性能和并发能力是更好一些很多中小型公司而言,其实稍微好一点的性能,Dubbo一次请求10ms,Spring Cloud耗费20ms,对很多中小型公司而言,性能、并发,并不是最主要的因素Spring Cloud这套架构原理,走HTTP接口和HTTP请求,就足够满足性能和并发的需要了,没必要使用高度优化的RPC服务框架Dubbo之前的一个定位,就是一个单纯的服务框架而已,不提供任何其他的功能,配原创 2022-01-23 12:30:37 · 9486 阅读 · 0 评论 -
探索Java并发容器的深坑与妙用:从同步到并发的进化之路
Java并发容器为我们提供了丰富的选择,但每种容器都有其适用的场景和注意事项。在实际工作中,理解这些容器的特性,选对容器,才能真正发挥它们的优势,写出高效、安全的并发程序。希望这篇文章能帮助你在并发编程的道路上走得更远,少踩坑,多收获。如果你有任何疑问或经验分享,欢迎在评论区留言讨论。让我们一起探索Java并发编程的奥秘!原创 2024-06-12 20:17:40 · 245 阅读 · 0 评论 -
探索面向对象与并发编程的完美融合:Java中的实践与思考
利用面向对象思想编写并发程序的关键在于利用封装特性。对共享变量进行封装时,要避免“逸出”,即共享变量逃逸到对象外部。用锁的最佳实践:锁应是私有的、不可变的、不可重用的。锁的性能要看场景:不同应用场景下锁的性能表现不同。竞态条件需要格外关注:if语句可能带来竞态条件。方法调用是先计算参数:方法调用前会先计算参数。InterruptedException异常处理需小心:捕获异常后重新设置中断标志位。理论值或经验值:最佳线程数最终靠压测确定。原创 2024-06-12 20:11:50 · 70 阅读 · 0 评论 -
如果你们网关需要每秒抗10万并发访问,网关需要怎么优化
每秒10万并发网关架构原创 2022-02-07 10:57:15 · 8290 阅读 · 0 评论 -
你们对网关选型时是怎么考虑的,能对比一下各种网关的优劣或区别吗
网关的核心功能(1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知(2)灰度发布(3)授权认证(4)性能监控:每个API接口的耗时、成功率、QPS(5)系统日志(6)数据缓存(7)限流熔断几种技术选型Kong、Zuul、Nginx+Lua(OpenResty)、自研网关Kong:Nginx里面的一个基于lua写的模块,实现了网关的功能 Zuul:Spring Cloud来玩儿微服务技术架构,ZuulNginx+Lua(Ope原创 2022-01-23 12:37:12 · 27343 阅读 · 0 评论 -
手把手教你定位线上CPU告警定位分析过程
标题1.原因分析:线上cpu告警使用率过高分析过程:标题1.首先定位是否是线程池参数配置问题经过修改最大线程数以及各种参数发现运行模型性,cpu从10%反而一直稳定在30%,说明参数配置过小可能会导致处理异步任务过慢,线程资源持续消耗标题2.发现代码中有手动System.gc()操作,因为这样会导致主动触发full gc,触发full gc()会使服务触发STW,同时会导致服务卡顿2.由于触发full gc,会产生大量gc线程,所以会导致cpu使用率快速上升通过监控major gc 发现,c原创 2021-09-13 14:48:13 · 306 阅读 · 0 评论 -
Redis缓存穿透,缓存击穿,缓存雪崩实战代码总结
package com.macro.mall.portal.service.impl;import com.macro.mall.common.utils.JsonUtils;import com.macro.mall.common.utils.RedisUtil;import com.macro.mall.model.PmsProduct;import com.macro.mall.p...原创 2020-05-05 11:43:30 · 4543 阅读 · 3 评论 -
如果让你设计一个RPC框架,网络通信,代理机制,负载均衡如何设计
这个面试题还是挺常见的人家并不是要你手撸一个RPC框架,资料,现场手撸一个RPC框架,撸的特别的简单,人家也不是要你手撸,也不是说让你进来了以后就是让你来研发RPC框架的系统设计的问题就是让你站在系统设计的角度,来考虑一下,到底如果要设计一个RPC框架,你会如何来考虑动态代理比如消费者和提供者,其实都是需要一个实现某个接口的动态代理的,RPC框架的一切的逻辑细节,都是在这个动态代理中实现的,动态代理里面的代码逻辑就是你的RPC框架核心的逻辑JDK提供了API,去创建针对某个接口的动态原创 2022-01-23 12:22:42 · 2438 阅读 · 0 评论 -
从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)
很多粉丝反应,想学习分布式系统架构,从这篇码哥将教大家从零开始让你们学会分布式架构中应用场景和解决方案,从实践和理论两方面进行讲解。原创 2022-02-28 21:23:22 · 5420 阅读 · 2 评论 -
你们公司用的Dubbo,能额外说说SpringCloud的架构原理吗
如果聊分布式这块的技术,围绕Dubbo来拷问的,但是呢,现在其实非常流行的是Spring Cloud,Dubbo和SpringCloud以及阿里系的一些技术,现在正在融合,Spring Cloud Alibaba,只不过现在用的公司暂时还没那么多而已作为合格的工程师,行业里主流的分布式服务技术栈,Dubbo和Spring Cloud两种,有的公司他是用Dubbo的,不用Spring Cloud的,有的公司是用Spring Cloud的,不用Dubbo的,他们是代表了两种主流技术栈Java工程师,D.原创 2022-01-23 12:33:35 · 4616 阅读 · 0 评论 -
微服务架构技术选型推荐
微服务架构技术选型推荐本文介绍一下微服务架构常用技术组件选型!开发语言JAVA主流编程语言,适合构建大型后台服务GolangGo语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。目前作为云计算领域的不二之选!开发工具IntelliJ IDEAjetbrains公司旗下转载 2020-12-17 10:55:45 · 939 阅读 · 4 评论 -
什么是Service Mesh(服务网格)
Service Mesh 又译作 “服务网格”,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT’S A Service Mesh? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。下面是 Willian Morgan 对 Service Mesh 的解释。A Service Mesh is a dedicated infrastructure lay转载 2020-12-25 11:34:56 · 900 阅读 · 2 评论 -
ELK整合Kafka采集日志
ELK搭建请看之前的博客我们从之前采用的logstash直接将项目日志采集到ES中,然后从kibana展示的方式改为将日志先采集到kafka然后用logstash输出到kibana展示原因是当项目的日志量过大时,采用kafka可以实现高吞吐量具体步骤项目中引入kafka项目依赖 <!--kafka依赖--> <dependency> <groupId>org.springframework.kafka</gr原创 2020-09-04 14:01:41 · 418 阅读 · 4 评论 -
集群是如何实现高可用?
一、负载均衡负载均衡算法转发实现二、集群下的 Session 管理Sticky SessionSession ReplicationSession Server一、负载均衡集群中的应用服务器(节点)通常被设计成无状态,用户可以请求任何一个节点。负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡器可以用来实现高可用以及伸缩性:高可用:当某个节点故障时,负载均衡器会将用户请求转发到另外的节点上,从而保证所有服务持续可用;伸缩性:根据系统整.原创 2021-01-06 09:49:15 · 5642 阅读 · 1 评论 -
Elasticsearch也可以实现商品智能搜索实战
Elasticsearch也可以实现商品智能搜索本文主要讲解整合Elasticsearch的过程,以实现商品信息在Elasticsearch中的导入、查询、修改、删除为例。项目使用框架介绍ElasticsearchElasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。 它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,可用于实现全文搜索和实时数据统计。package com.macro.mall.search.domain;import org.springfr原创 2021-01-21 10:44:47 · 32033 阅读 · 3 评论 -
Hadoop分布式文件系统——HDFS
Hadoop分布式文件系统——HDFS一、介绍二、HDFS 设计原理 2.1 HDFS 架构 2.2 文件系统命名空间 2.3 数据复制 2.4 数据复制的实现原理 2.5 副本的选择 2.6 架构的稳定性&nbs原创 2021-01-13 09:48:58 · 985 阅读 · 3 评论 -
JVM常用配置参数,gc调优策略
JVM 配置常用参数堆参数;回收器参数;项目中常用配置;常用组合;堆参数img回收器参数img如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC和UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:Paral...原创 2020-03-28 08:36:09 · 2192 阅读 · 2 评论 -
Nacos源码分析(一)之线程池的巧妙设计,可以薅到自己的项目里
直接把源码里的线程池工具类,薅到自己的项目有多舒服原创 2022-03-15 14:59:04 · 1611 阅读 · 6 评论 -
带你学Nacos内核设计源码分析(二)探索开源项目的奥妙
看过优秀的代码才可以成为优秀的程序员原创 2022-03-18 16:17:00 · 2249 阅读 · 0 评论 -
Hbase系统架构及数据结构
Hbase系统架构及数据结构一、基本概念 1.1 Row Key (行键) 1.2 Column Family(列族) 1.3 Column Qualifier (列限定符) 1.4 Column(列) 1.5 Cell  原创 2021-01-08 10:09:31 · 565 阅读 · 1 评论 -
手动搭建ELK日志采集分析系统
SpringBoot应用整合ELK实现日志收集ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,本文主要讲解使用ELK来收集SpringBoot应用产生的日志。学习前需要了解的内容开发者必备Docker命令使用Docker Compose部署SpringBoot应用SpringBoot应用中使用AOP记录接口访问日志ELK中各个服务的作用Elasticsearch:用于存储收集到的日志信息;Logstash:用于收集日志,SpringBo原创 2020-09-04 14:09:38 · 18996 阅读 · 3 评论 -
SpringBoot 实现接口幂等性的 4 种方案
你知道幂等性是什么吗,你知道如何保证幂等性吗,你知道什么情况下用什么方式保证幂等性吗,如果你不知道,那你一定要看完,如果你知道,可以进来看看知道的是否全面,知道的越多,不知道越多原创 2022-08-22 10:21:22 · 156 阅读 · 2 评论 -
阿里三面,P9面试官是如何考察候选人的
这篇文章,给大家分享一个同学面试阿里某个部门时的经历原创 2022-02-08 10:29:41 · 24151 阅读 · 0 评论 -
深度思考:ThreadLocal是否存在内存泄漏问题,如何防止内存泄漏?
你真的了解如何防止内存泄漏吗原创 2022-07-20 09:38:04 · 507 阅读 · 0 评论