自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 JAVA队列之ArrayBlockingQueue

ArrayBlockingQueue源码分析

2023-02-08 10:57:24 423

原创 JAVA队列-LinkedBlockingQueue

队列之LinkedBlockingQueue

2023-02-06 15:28:32 495

原创 JAVA队列-接口

JAVA队列系列之接口

2023-01-31 15:34:55 405

原创 Flowable事务引发的一些思考

前言最近将公司业务迁移到工作流框架上,在使用Flowable时遇到一个关于事务的问题,困扰了两天,便记录下来。另 : Flowable的具体使用本文不进行赘述,等忙完这阵子整理一下!问题发现假设系统有这么一个流程实例实例中,由两个 服务任务 组成,内部业务可能是调用第三方接口,也有可能处理自己的业务逻辑。假设第三方接口通信不佳,在订单发起节点出现异常 :1.节点内部没有try-catch的情况下,节点内部操作均会回滚。2.流程不会执行到下一个节点,即配送环节。假设配送环节内部业务异常:

2021-06-03 19:23:37 3422 1

原创 Naocs源码-客户端长轮询实现

前言上文说到 NacosConfigService 会初始化 ServerHttpAgent ,本文接着来讲ServerHttpAgent初始化调用有参构造初始化public ServerHttpAgent(Properties properties) throws NacosException { //初始化ServerListManager this.serverListMgr = new ServerListManager(properties);

2020-12-03 15:06:48 325

原创 Nacos源码-ConfigService Demo案例引发的源码跟踪

前言近期在学习Spring Cloud Alibaba系统,便记录Nacos配置中心的源码学习从nacos-github 下载源码,IDEA打开,启动过程这里不再叙述了。ConfigServiceexample工程有个ConfigExample类,该类展示了如何从naocs控制台获取配置信息,我们一起来看一下public class ConfigExample { public static void main(String[] args) throws NacosException,

2020-12-03 10:49:53 382

原创 Apollo源码-打通Spring体系配置热更新

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分上文介绍到客户端如何更新属性值的,本文介绍apollo的自动装配也与上文有关联自动装配apollo自动装配 ,我们在使用apollo时,会扣上 Enable

2020-12-03 09:43:37 605

原创 Apollo源码-打通Spring体系

接下来我们看 fireRepositoryChange 方法protected void fireRepositoryChange(String namespace, Properties newProperties) {//遍历配置仓储监听器for (RepositoryChangeListener listener : m_listeners) {try { //回调方法通知配置变更 listener.onRepositoryChange(namespace, newProperties);

2020-12-02 19:04:52 370

原创 Apollo源码-长轮询客户端实现

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分上文介绍到长轮询服务端实现,本文介绍客户端的长轮询实现长轮询感知配置发布-客户端实现从上文中我们知道,服务端暴露了一个将请求挂起60s的接口 /notifi

2020-12-02 19:03:26 861 1

原创 Apollo源码-长轮询服务端实现

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分上文介绍到拉取消息监听器处理,本文介绍服务端如何处理客户端请求的长轮询感知配置发布-服务端实现让我们来看看客户端是怎么拿到消息通知的,服务端又是怎么进行长轮

2020-12-02 18:38:23 720

原创 Apollo源码-配置发布通知客户端

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分上文介绍到ReleaseMessage 对象的发布,portal发布配置第一件事新增 Release 对象,第二件事发布ReleaseMessage 紧接着第三

2020-12-02 18:26:16 554

原创 Apollo源码-Adminservice发布ReleaseMessage消息

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分上文介绍到ReleaseController#publish 新增了Release发布对象,本文来跟踪它做的第二件事发送ReleaseMessage消息me

2020-12-02 17:59:28 192

原创 Apollo源码-Portal发布配置

前言在更新Spring Cloud Alibaba Nacos时,想到之前阅读过Apollo的源码,便在这插入记录了过来,后续更新Nacos Config源码Apollo简介fork 源码地址 apollo源码参考apollo架构中心设计主要分为 Config Service、Admin Service、Portal、Client 四部分本文介绍的Portal 主要是提供用户管理界面,接口来自Admin Service提供port页面触发配置新增页面路由/apps/{appId}/envs/

2020-12-02 17:42:02 287

原创 Spring Cloud Alibaba搭建

Spring Cloud Alibaba 也是微服务开发一站式解决方案,为什么说也是呢?cloud alibaba出来之前,有Spring Cloud生态,其实Cloud Alibaba也是基于Spring Cloud的抽象的分布式系统开发工具包。它包含开发分布式微服务应’用的必须组件。主要包含 :Nacos : 服务发现、注册中心与配置中心角色。Sentinel : 流量控制、熔断降级、系统负载保护RocketMQ : 消息服务Dubbo : RPC服务调用Seata : 分布式事务解决方案

2020-12-02 14:01:33 177

原创 Jenkins多分支发布环境搭建与排坑

项目背景项目分支越来越多,想避免传统的打包方式,在测试环境采用快速部署,方便测试,于是集成Jenkis环境搭建网上环境搭建的文章很多,参考Docker搭建Jenkins不过,该文章在实际使用过程中,并不会太顺利,主要是docker运行jenkins时没有挂在JDK和maven。我采用的是tomcat直接启动部署,在官网下载最新的Jenkis.war包丢到tomcat的webapp目录下,cd到bin目录执行start.sh即可。随后输入ip:端口/jenkins即可访问jenkins页面,初始化

2020-11-23 15:07:03 380

原创 Nacos客户端续约

客户端续约在阅读nacos实例注册时,我们看到,客户端会每隔5s执行一次 BeatTask 任务,请求naming服务端的 /nacos/v1/ns/instance/beat 接口,那么服务端是如何处理HTTP心跳请求的呢?服务端续约服务端处理客户端HTTP心跳请求由 com.alibaba.nacos.naming.controllers.InstanceController#beat 第386行的service.processClientBeat(clientBeat); 进入到该方法/**

2020-11-07 17:40:37 633

原创 Nacos服务注册应用实例

前言Spring cloud Alibaba 版本依赖管理应用服务启动时,控制台打印 o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, chu-cloud-alibaba-product 10.0.8.109:8000 register finished跟踪 NacosServiceRegistry 类NacosServiceRegistry类该类继承了 ServiceRegistry<Registration>,Ser

2020-11-03 19:49:58 2485

原创 docker安装Nacos

转载连接 参考博文

2020-10-27 19:44:55 74

原创 EMQ规则引擎

场景IOT设备上报数据中,需要帮助我们去刷选出符合我们业务需求的数据,例如电量小于30%、多设备通讯需要知道设备的上下线状态等。规则引擎概述EMQ提供了开源的规则引擎,使用WebHook资料类型,将数据发送到Web服务。企业版支持更多方式。下图是EMQ规则引擎架构 :基于SQL、动态配置EMQX消息流与设备事件的处理、响应规则,进行消息存储、事件处理。当设备发送消息时,消息路由正常流转,发布到消息订阅者应用上,与此同时EMQ还会将消息流转到规则引擎,规则引擎进行刷选、匹配、处理,最后将符合条件

2020-08-28 16:15:32 1761

原创 EMQ搭建

EMQ搭建前言搭建前言最近项目需要对接ASM设备,而他们提供的设备协议是MQTT,于是网上阅读大量的资料,国产的EMQ挺适合MQTT协议。搭建访问EMQ官网,下载开源版本,企业版本为 EMQ X EnterpriseEMQX版本选择beta : 公测版本,功能存在变化rc : 候选版本,不再加入新功能,集中修复BUG与性能优化正式版 : 功能齐全、性能稳定的版本操作系统与安装包类型zip : 用于开发测试,便于更新升级、修改配置rpm/deb : 易于安装、升级、管理,推荐生产

2020-08-26 11:22:28 372

原创 百万量级下单优化

需求背景下单接口承接公司内部业务和开放API业务需求,在与PDD对接过程中,PDD给我们的订单量级是每日百万,峰值可达40W单以上,PDD要求我方TPS能达550笔/s。瓶颈专业测试人员在UAT环境进行下单压力测试,经过反复压测及配合阿里云监控,下单接口性能只能维持200-300笔/s,且压测到一半,后续的压测会经常出现请求超时的情况。分析首先,对于下单接口的性能问题,会有很多原因的,可能是RPC线程池设置不合理,下游依赖超时时间不合理等,需要对业务进行全链路分析。下单链路简至如下:由此初步判

2020-07-13 17:24:15 481

转载 【转载】git回退错误的提交

https://www.cnblogs.com/shuimuzhushui/p/10893551.html

2020-01-16 10:26:10 138

转载 【转载】多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture

https://www.cnblogs.com/dennyzhangdd/p/7010972.html

2020-01-15 09:59:49 188

原创 中台服务架构落地: 划分与构建

主要记录工作与学习积累的点滴、如有雷同,大概是站在了巨人的肩膀上,诸多不足,请多多包涵"微服务"近年来越来越热门,越来越多的公司开始拥抱它。微服务也确实带来诸多好处,如关注点分离、数据库连接池压力得到缓解、复杂业务得以拆解、代码发布的周期也变成更快。同时微服务也带来了诸多挑战:业务拆分成了很多个服务,维护对象增多;维护对象增多后,如何快速定位问题微服务引入了新技术和新的流程采用需...

2019-08-30 15:45:13 316

原创 重构电商中台定义之商品设计

本文主要分享下电商商品的设计,结合公司的业务,为了保密性一些设计方案会引用网上一些大佬的思路,站在前人的肩膀上,对我学习到的知识进行归纳总结,诸多错误,欢迎大家批评指正电商系统大家应该都比较熟悉,在天猫和京东购物去浏览商品,我们可以看到不同的产品分类,当查看某个商品的时候,不同的商品会有不同的属性描述,同一个商品会有不同的型号,商品的录入就是要实现这样的一个功能。在上面的描述中出现了电商系...

2019-04-29 09:36:19 599

原创 重构电商中台定义之产品分类设计

本文主要分享下电商类目的设计,结合公司的业务,为了保密性一些设计方案会引用网上一些大佬的思路,站在前人的肩膀上,对我学习到的知识进行归纳总结,诸多错误,欢迎大家批评指正电商系统大家应该都比较熟悉,在天猫和京东购物去浏览商品,我们可以看到不同的产品分类从图中我们可以大致了解到,商品类目分为一级分类、二级分类、三级分类当我们点击手机这一分类时,进入到我们可以看到相应的品牌和规...

2019-04-26 14:04:29 831

转载 数据库设计技巧:一个字符串细节处理解决递归查询问题

转载自https://www.imooc.com/article/21103问题提出许多人在做开发时都会遇到这样的case,比如:需要维护一个部门层级结构,每个部门都要存储一个上级部门的id,记做parent_id, 当查询一个部门的所有子部门时,需要根据parent_id递归的查询到底层,层级深的部门需要查询次数特别多,那么问题来了,是否可以通过一个简单的设计满足一次查询某个部门的所有子...

2018-10-12 17:43:01 218

转载 优秀架构师需掌握的架构设计技巧

转载自https://blog.csdn.net/alex_xfboy/article/details/77583010只将我收益的部分摘抄了过来1. API与SPI分离框架或组件通常有两类客户,一个是使用者,一个是扩展者,在设计时,尽量把它们隔离开,而不要混在一起,也就是说,使用者是看不到扩展者写的实现的。比如:一个Web框架,它有一个API接口叫Action,里面有个exec...

2018-09-30 18:01:40 221

转载 @Autowired、@Inject和@Resource的异同点

转载自https://blog.csdn.net/alex_xfboy/article/details/789513531.为何要讲这篇呢?其实这个非常基础,但我发现有些地方很多人不熟悉,比如:@Autowired,@Resource的区别无非就是后者是jsr规约,前者是按类型装配,后者是按名称装配仅此而已。2.基本用法1.@Autowired引自:org.springfram...

2018-09-30 17:39:59 162

原创 分布式事务Hmily TCC源码跟读记录

这里就不罗列TCC事务的优点了,奉上该项目的地址https://github.com/yu199195/hmily一、什么是分布式事务分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点上,本质上来说,分布式事务是为了保证不同数据库的数据一致性TCC事务主要是基于AOP切面拦截实现的三阶段提交事务,下面我们来跟读源码二、CAP...

2018-09-30 16:00:20 2186

转载 SpringBoot 应用程序启动过程探秘

概述说到接触 SpringBoot 伊始,给我第一映像最深的是有两个关键元素:对照上面的典型代码,这个两个元素分别是:@SpringBootApplication SpringApplication 以及 run() 方法关于 @SpringBootApplication 注解的剖析已经在上文:《SpringBoot 中 @SpringBootApplication注解背后的三...

2018-09-19 17:58:33 162

原创 SpringCloud Config配置中心原理以及环境切换

springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端spring官方如下介绍: Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system. With the...

2018-09-19 14:42:52 9343 1

转载 SpringBoot三大特性之组件自动装配

本文转载自https://www.jianshu.com/p/9dc7a385d19e和https://www.cnblogs.com/niechen/p/9027804.html?utm_source=tuicool&amp;utm_medium=referral两篇作者文章整理而来结合SpringBoot的源码,首先从启动类注解@SpringBootApplication开始,附赠Spri...

2018-09-12 23:23:40 4682

原创 Docker-compose部署Eureka高可用

在项目中,分布式环境下微服务的治理要充分考虑发生故障的情况,单台Eureka实例是不足以增强系统的可用性的,Eureka是支持高可用集群部署的,Eureka所有的节点即是服务提供方,也是服务消费方,通过如下两个参数配置,默认是trueeureka.client.register-with-eureka=trueeureka.client.fetch-registry=trueEurek...

2018-08-20 22:15:50 2760 1

原创 使用RabbitMQ实现延迟队列

场景:在项目中1.用户确认一个订单,若30分钟之类没有支付,则需要取消订单,若用定时任务去扫描订单表,第一,定时任务时间如何定义,有存在漏扫的风险,第二,订单表数据庞大,扫描表非常消耗性能,这时候该功能可以引入RabbitMQ延迟队列来做2.某条活动通知在指定的一天推送给用户,可以用延迟队列 定义:延迟队列即发送一条消息给目标队列,并非让目标队列立即接受到消息,而是让消息等...

2018-08-20 16:07:30 470

转载 HashMap & concurrentHashMap 底层实现

前言Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。 HashMap众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8...

2018-08-15 11:51:30 150

原创 记项目中的一次Excel导入优化

业务场景: 商家后台发货支持Excel批量发货设置,当excel数据过万时,会导致上传excel失败,主要的性能瓶颈是微服务架构下的请求超时,到聚合微服务解析完Excel数据传输到订单微服务时,由于数据过于庞大,订单微服务处理时间较长,导致请求超时失败 解决方案:提高feign的超时配置 ribbon: ReadTimeout: 30000 ConnectTimeout: ...

2018-08-13 17:19:05 969

原创 RabbiMQ工作原理及简单使用

SpringBoot AMQP官方如下介绍:The Spring AMQP project applies core Spring concepts to the development of AMQP-based messaging solutions. It provides a "template" as a high-level abstraction for sending and ...

2018-08-09 17:52:05 332

原创 集成SpringCloudSleuth实现服务追踪

在微服务架构中,如果某一请求耗时非常严重,我们需要追踪到哪一块代码出现的耗时严重的问题,传统的做法是在调用其他服务的地方做请求耗时记录,如果耗时大则告知该微服务负责人优化代码,有时该微服务也会调用其他微服务,这些散落的公共代码不便维护,也很难定位问题,我们引入SpringCloudSleuth来进行分布式的服务追踪.去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样,从而达到每个请求的步骤清晰可...

2018-08-06 23:17:43 249

转载 设计模式之State

State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为.何时使用?State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.不只是根据状态,也有根据属性.如果某个对象的属性不同,对象的行为就不一样,这点在数据库系统中出现频率比...

2018-07-24 15:44:46 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除