自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (7)
  • 收藏
  • 关注

转载 【重点】springboot + rabbitmq + mqtt协议 做智能家居

前一段有幸参与到一个智能家居项目的开发,由于之前都没有过这方面的开发经验,所以对智能硬件的开发模式和技术栈都颇为好奇。智能可燃气体报警器产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话、短信、微信等方式,提醒用户家中可能有气体泄漏。用户还可能向报警器发一些关闭报警、调整音量的指令等。整体功能还是比较简单的,大致的逻辑如下图所示:但当我真正的参与其中开发时,其实有一点小小的失望,因为在整个研发过程中,并没用到什么新...

2020-11-25 13:14:22 5735 3

转载 Spring-cloud动态路由“动态”的理解,30s刷新一次路由的原理解析

非动态众所周知,gateway配置最后会被封装成RouteDefinition。可以通过硬编码来配置路由略读取yml文件配置路由@Configurationpublic class DynamicRouteAutoConfiguration { /** * 配置文件设置为空 * redis 加载为准 * * @return */ @Bean public PropertiesRouteDefinitionLocator propertiesRouteDefi

2020-11-29 19:57:08 3656 3

转载 spring cloud gateway-GatewayFilter、GlobalFilter、GatewayFilterChain、GatewayFilterFactory作用及生命周期

一、概述  在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理。  核心接口:GatewayFilter,GlobalFilter,GatewayFilterChain。查看整体类图  二、网关过滤器作用    当使用微服务构建整个 API 服务时,一般有许多不同的应用在运行,如上图所示的mst-user-service、mst-good-service和mst-order-service,这些服务都需要对客户端的请求的进行 Auth

2020-11-29 19:17:21 4403 1

转载 微服务网关 Spring Cloud Gateway 与其它网关(介绍及使用)

1. 为什么是Spring Cloud Gateway一句话,Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。Zuul 2.x版本跟1.x的架构大一样,性能也有所提升。既然Spring Cloud已经不再集成Zuul 2.x了,那么是时候了解一下Spring Cloud Gateway了。可以看到,最新的Spring Cloud中的Zuul还是1.3.1版本而且,官.

2020-11-29 19:08:14 1070

转载 SpringCloud gateway原理分析

前置说明本文源码基于springcloud Finchley版本. 以下分析仅代表个人的理解, 如有错误, 欢迎探讨.使用说明以spring一贯的作风, 用户使用的模式都是约定俗成的, 也就是引入spring-cloud-starter-gateway依赖, 然后就可以愉快的自动配置了. 但是这里有一个要说的点, springcloud gateway是只能使用在 webflux上面, 也就是说如果引入的springmvc依赖, 那么需要修改,不然只能使用zuul了. <d...

2020-11-29 00:12:57 1294

转载 使用Netty实现HTTP服务器

Netty是一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。Java程序员在开发web应用的时候,截止2018年大多数公司采用的还是servlet规范的那一套来开发的,比如springmvc。虽然在2018年Java程序员们可以选择使用spring5中的webflux,但是这个转变没那么快。然而,基于servlet那一套的springmvc性能很差,如果你厌烦了,你大可

2020-11-28 22:41:40 4855 1

转载 微服务网关 Spring Cloud Gateway 概览

导读作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用。本文对Spring Cloud Gateway常见使用场景进行了梳理,希望对微服务开发人员提供一些帮助。微服务网关SpringCloudGateway1.概述Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的..

2020-11-28 19:16:52 582

转载 Spring Cloud Gateway动态路由实现

Gateway上线部署分析当你的网关程序开发完成之后,需要部署到生产环境,这个时候你的程序不能是单点运行的,肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口,在生产运行中极为重要,哪怕是简单的重启也会导致部分请求的丢失。网关的路由配置这个时候就是一个大问题,是代码里面编写还是配置文件配置?他们都有一个致命的缺点,当有新的程序需要接入到网关进行路由或者有服务需要下线时候需要修改代码或者配置,然后重启整个网关程序,导致其他正常的服务路

2020-11-28 16:39:04 1841 1

转载 spring kafka test 使用笔记

添加依赖testImplementation "org.springframework.kafka:spring-kafka-test"配置 KafkaTemplate@Configurationpublic class KafkaConfig { @Autowired EmbeddedKafkaBroker broker; @Bean public KafkaTemplate<String, String> template() { return new K

2020-11-27 14:08:49 1711

转载 彻底搞定 SpringBoot 整合 Kafka(spring-kafka深入探秘)

前言kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。除了简单的收发消息外,Spring-kafka还提供了很多高级功能,下面我们就来一一探秘这些用法。项目地址:https://github.com/spring-projects/spring-kafka简单集成引入依赖<d

2020-11-27 13:49:37 1976 2

转载 SpringBoot 异步事件实现异步(ApplicationEventPublisher、ApplicationEvent)

SpringBoot 异步事件实现异步(ApplicationEventPublisher、ApplicationEvent)​ 当把一个事件发布到Spring提供的ApplicationContext中,被监听器侦测到,就会执行对应的处理方法。实现步骤:自定义发布的事件类,需要继承 ApplicationEvent 或者PayloadApplicationEvent(该类也仅仅是对ApplicationEvent的一层封装) 监听事件 使用注解 @EventListener 或者 自定义监听

2020-11-26 23:21:22 3140

转载 Spring ApplicationEventPublisher的使用学习

今天在程序中看到有使用这个接口,学习了一下,感觉作为观察者模式的一个实现方式,使用起来还是不错的。查了一些资料,结合自己的程序,分四个部分进行介绍。等程序自测完成后,补充完成,先写一部分。一:介绍1.ApplicationEventPublisherAware  ApplicationEventPublisherAware 是由 Spring 提供的用于为 Service 注入 ApplicationEventPublisher 事件发布器的接口,使用这个接口,我们自己的 Service 就拥有

2020-11-26 23:12:11 2821

转载 Spring-Cloud-Gateway之Route初始化加载

Spring-Cloud-Gateway路由信息是通过路由定位器RouteLocator加载以及初始化的接下来阅读源码看下Spring-Cloud-Gateway是怎么一步一步的实现了路由的加载初始化。首选我们还是在Spring-Cloud-Gateway初始化配置中看Spring-Cloud-Gateway初始化是创建了路由定位相关的那些类------------- GatewayAutoConfiguration类 /** * 创建一个根据RouteDefinition.

2020-11-26 15:02:08 1960

原创 SpringCloud Gateway 和 Nacos 动态网关的相关配置

pom及spring-cloud、spring-cloud-alibaba版本<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-boot.version>2.3.2.RELEASE</sp

2020-11-26 13:22:41 1979

转载 SpringCloud:学习Gateway网关拦截器的ServerWebExchange

1.Gateway的拦截器我们要在项目中实现一个拦截器,需要继承两个类:GlobalFilter, OrderedGlobalFilter:全局过滤拦截器,在gateway中已经有部分实现,具体参照:https://www.cnblogs.com/liukaifeng/p/10055862.htmlOrdered:拦截器的顺序,不多说于是一个简单的拦截器就有了@Slf4j@Componentpublic class AuthFilter implements GlobalFil

2020-11-26 10:13:08 10344 2

转载 Mqtt实践-未读消息(小红点),前端与 RabbitMQ 实时消息推送实践

web端实时消息推送,常用的实现方式比较多,但万变不离其宗,底层基本上还是依赖于websocket,MQTT协议也不例外。RabbitMQ 搭建RabbitMQ的基础搭建就不详细说了,自行百度一步一步搞问题不大,这里主要说一下两个比较重要的配置。1、开启 mqtt 协议默认情况下RabbitMQ是不开启MQTT协议的,所以需要我们手动的开启相关的插件,而RabbitMQ的MQTT协议分为两种。第一种rabbitmq_mqtt提供与后端服务交互使用,对应端口1883。...

2020-11-25 15:30:25 2362 1

转载 关于spring boot集成MQTT的一写新人问题

这几天弄了下mqtt ,发现有很多问题,网上搜不到什么解决办法,所以自己记录下来,也让初识mqtt的人少走一些坑,关于我写的不对的也希望看到的人能指出来互相学习下安装说到mqtt,首先肯定要安装了,安装什么的地址:http://activemq.apache.org/ap...我本地是Windows的环境,所以装的是Windows版本,这里是第一个注意的地方,因为后面使用的时候windows和linux的有一些不同下载完成之后就是解压安装了,这里解压完成之后进入bin目录下,自己用cmd或者直

2020-11-24 14:53:30 1331

转载 springboot集成kafka指定分区partition发送

springboot 版本为 2.0.61.配置文件 kafka: bootstrap-servers: kafka地址 producer: key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer retries: 3

2020-11-23 14:41:33 6749 1

转载 java如何监听MQTT客户端状态(在线、离线)

一、业务场景好多朋友在咨询如何得知(监测)MQTT客户端状态(在线、离线),或者可以说是监测采集器状态。其实这个在MQTT协议中已经给出系统主题,MQTT服务端可以知道客户端的任何情况,比如:什么时候上线和下线。二、解决方案$SYS/brokers/${node}/clients/${clientid}/connected:上线事件。当某客户端上线时,会向该主题(Topic)发布消息$SYS/brokers/${node}/clients/${clientid}/disconnecte.

2020-11-23 13:04:03 5653 4

转载 MQTT协议笔记之连接和心跳

前言本篇会把连接(CONNECT)、心跳(PINGREQ/PINGRESP)、确认(CONNACK)、断开连接(DISCONNECT)和在一起。CONNECT像前面所说,MQTT有关字符串部分采用的修改版的UTF-8编码,CONNECT可变头部中协议名称、消息体都是采用修改版的UTF-8编码。前面基本上可变头部内容不多,下面是一个较为完整的CONNECT消息结构: Description 7 6 5 4 3 2 1 0 Fixed .

2020-11-23 13:02:14 761

转载 Java-MQTT客户端监控连接状态事件

MQTT客户端监控连接状态事件项目采用paho.mqtt.java客户端,需要监控连接状态变更事件,以进行异常维测和处理。代码中提供了MqttCallback接口如下:org.eclipse.paho.client.mqttv3-1.2.0-sources.jar!\org\eclipse\paho\client\mqttv3\MqttClient.javapublic void setCallback(MqttCallback callback) { aClient.setCall

2020-11-23 13:01:45 3005

转载 RocketMq中MessageQueue的分配

都知道Rocketmq中有ConsumerGroup的概念。在集群模式下,多台服务器配置相同的ConsumerGroup,能够使得每次只有一台服务器消费消息(注意,但不保证只消费一次,存在网络抖动的情况)。那么,笔者就很疑惑,Rocketmq是如何实现这个模式的?如何保证只有一台服务器消费?虽然答案很简单,但却是一个很好的带着问题看源码的机会。RocketMq结构从图中可以看到,MQ主要投递消息和拉取消息两个环节。众多的架构都是顺应时代潮流而来,Rocketmq的结构体系当然也不是阿里所

2020-11-23 10:58:22 4758

转载 RocketMQ广播消费与集群消费

1.集群消费方式一个ConsumerGroup中的Consumer实例平均分摊消费生产者发送的消息。例如某个Topic有九条消息,其中一个Consumer Group有三个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息,Consumer不指定消费方式的话默认是集群消费的,适用于大部分消息的业务2.广播消费方式一条消息被多个Consumer消费,几十这些Consumer属于同一个ConsumerGroup,消息也会被ConsumerGroup中的每个Consumer消费一次,广播消

2020-11-23 10:39:19 1237 2

转载 RocketMQ——角色与术语详解

RocketMQ中有很多概念,其中包括一些术语和角色。理清楚基本的概念能有效的帮助理解RocketMQ的原理以及排查问题。角色:Producer生产者。发送消息的客户端角色。发送消息的时候需要指定Topic。Consumer消费者。消费消息的客户端角色。通常是后台处理异步消费的系统。 RocketMQ中Consumer有两种实现:PushConsumer和PullConsumer。PushConsumer推送模式(虽然RocketMQ使用的是长轮询)的消费者。消息的能及时被消

2020-11-23 10:38:41 541

转载 RocketMQ的负载均衡源码分析

https://www.cnblogs.com/KevinStark/p/12518766.html

2020-11-22 17:41:03 500

转载 RocketMQ的事务消息处理【half-message】

处理流程producer 发送half message到broker中; broker接收到half message后给producer发送成功的发聩,这时,half message才算真正生成完了; producer执行本地事务; producer根据第3步得到执行本地事务的结果,向MQ进行二次确认(到底是commit还是roll back)。如果是commit就将这个half message变为消费者可以消费的消息,此时消费者接收到这条half message。如果是roll back,那

2020-11-22 17:30:45 3482 2

转载 分布式事务解决方案-RocketMQ实现可靠消息最终一致性

1.什么是可靠消息最终一致性事务​ 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。​ 此方案是利用消息中间件完成,如下图:​ 事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。因此可靠..

2020-11-22 17:29:31 945 1

转载 rocketmq-spring-boot-starter 2.1.0 事务消息 txProducerGroup 移除解读

为了体验rocketmq的request-reply模型,近日将demo中rocketmq-spring-boot-starter库升级到2.1.0版本 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <!--

2020-11-22 17:20:37 4112 4

转载 RocketMq-Spring 请求应答语义支持

RocketMQ-Spring 提供 请求/应答 语义支持。Producer端发送Request消息使用SendAndReceive方法注意同步发送需要在方法的参数中指明返回值类型异步发送需要在回调的接口中指明返回值类型@SpringBootApplicationpublic class ProducerApplication implements CommandLineRunner{ @Resource private RocketMQTemplate roc

2020-11-22 17:18:49 2214

转载 SpringCloud集成RocketMQ实现事务消息方案

当前SpringCloud作为微服务开发的首选开源方案提供了完善的微服务开发技术套件,不过针对分布式领域的难题–分布式事务控制并没有成熟的方案,本篇将介绍作为柔性事务控制的优秀方案RocketMQ的使用原理和方法。通过本案例的学习,掌握SpringCloud集成RocketMQ事务分布式事务控制的方法。RocketMQ事务消息方案RocketMQ 是一个来自阿里巴巴的分布式消息中间件,于 2012 年开源,并在 2017 年正式成为 Apache 顶级项目。据了解,包括阿里云上的消息产品以及收购的

2020-11-22 15:55:07 732

转载 RocketMq在阉割消息回查checkTransactionState后实现分布式事务

利用rocketMQ解决分布式事务在rocketMQ中生产者有三种角色NormalProducer(普通)、OrderProducer(顺序)、TransactionProducer(事务)根据名字大概可以看出各个代表着什么作用,我们这里用TransactionProducer(事务)来解决问题。先举个列子来说明下我们解决方案的设计方式吧:最经典的莫过于银行转账了,网上到处都有,时序图如下下面贴一下测试代码:(1) 执行业务逻辑的部分/** * @Date: Created in..

2020-11-22 13:41:58 1179

转载 RocketMQ支持事务消息机制

事务消费我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去商家账户表中找到这个商家并扣除广告费吧,怎么保证?!等等,相信大家或多或多少都能碰到相似情景

2020-11-22 11:11:19 772 1

转载 JAVA逃逸分析、栈上分配、标量替换、同步消除

一、逃逸分析逃逸分析是编译语言中的一种优化分析,而不是一种优化的手段。通过对象的作用范围的分析,为其他优化手段提供分析数据从而进行优化。逃逸分析包括:全局变量赋值逃逸 方法返回值逃逸 实例引用发生逃逸 线程逃逸:赋值给类变量或可以在其他线程中访问的实例变量.public class EscapeAnalysis { public static Object object; public void globalVariableEscape(){//全局变量

2020-11-20 15:34:17 683

转载 Java中9种常见的CMS GC问题分析与解决

1. 写在前面| 本文主要针对 Hotspot VM 中“CMS + ParNew”组合的一些使用场景进行总结。重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多,另外本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料。| 总字数 2 万左右(不包含代码片段),整体阅读时间约 30min ,文章较长,可以选择你感兴趣的场景进行研究。1.1 引言自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来的悬挂指针(

2020-11-20 09:47:46 1583

转载 【kafka原理】 消费者偏移量__consumer_offsets_相关解析

我们在kafka的log文件中发现了还有很多以__consumer_offsets_的文件夹;总共50个;由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsetstopic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。__consumer_offsets是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一...

2020-11-19 14:11:32 5401 2

转载 KAFKA OFFSET的存储问题

注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上1.概述  Kafka版本[0.10.1.1],已默认将消费的 offset 迁入到了 Kafka 一个名为 __consumer_offsets 的Topic中。其实,早在 0.8.2.

2020-11-19 12:52:10 980

转载 MQTT每次断连重连后重复接收到消息【retain属性】

问题:设备与服务器进行通信期间,不断重新配网。与嵌入式联调过程中发现每次取消订阅再重新订阅后,会重复接收到一条消息。上图为Paho软件测试结果。MQTT测试软件下载地址:Paho:https://pan.baidu.com/s/1WkiR60EVz6LZQ-NNwyd6MQmqtt.fx:https://pan.baidu.com/s/130giQTKQhwSp4qeWKisrrA收到该条信息解析后解密发现此条信息为更换网络指令,故设备不停断网进行重新配网。所以我们要解决的问题为:MQTT每次

2020-11-18 20:55:56 5007

转载 Zookeeper 在 Kafka 中的作用

leader 选举 和 follower 信息同步如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。黄色的分区为 leader,白色的为 follower。leader 处理 partition 的所有读写请求,与此同时,fol

2020-11-17 15:36:10 696

转载 【开发规约】MySQL规范

规范在整个后端执行也有大半年的时间,对于整个团队在开发阶段就减少不恰当的建表语句、错误 SQL、错误的索引有积极的意义,故分享出来给大家参考。下边分为建表规约、SQL 规约、索引规约三个部分,每部分的每一条都有强制、建议两个级别,大家在参考时,根据自己公司的情况来权衡。建表规约【强制】:①存储引擎必须使用 InnoDB解读:InnoDB 支持事物、行级锁、并发性能更好,CPU 及内存缓存页优化使得资源利用率更高。【强制】:②每张表必须设置一个主键 ID,且这个主键 ID 使用自增主键(在

2020-11-15 16:15:06 691 2

转载 如何优雅的转换 Bean 对象!

背景我们的故事要从一个风和日丽的下午开始说起!这天,外包韩在位置上写代码~外包韩根据如下定义 PO(persistant object):持久化对象,可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录。 VO(view object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 BO(business object):业务对象,主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其

2020-11-14 11:15:41 860 1

Zookeeper资源文件

2017-03-20

Zookeeper基础知识

2017-03-20

Zookeeper初识

2017-03-20

使用exe4j 制作java启动程序的 等候界面

使用exe4j 制作java启动程序的 等候界面,使用了 JDK6 自带splash功能。 备注 exe/jre 文件夹中 包含了 jre ,但由于大小问题,无法上传。

2014-06-12

jquery浮动窗

基于jquery 的悬浮窗功能,有一些基本的功能

2014-01-23

java在线预览office

java使用openoffice swftools flexpaper2.1.9 实现在线预览功能

2013-12-21

空空如也

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

TA关注的人

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