SF
java
java
注册登录
关注博客
注册登录
主页
关于
RSS
Opentracing规范介绍
杨辉
2021-07-18
阅读 5 分钟
7.8k
微服务提供了一个强大的架构,但也有其自身的挑战,特别是在调试和观察跨复杂网络的分布式事务方面——这只是因为没有内存调用或堆栈跟踪来实现这一点。这就是分布式跟踪出现的地方。分布式跟踪提供了描述和分析跨进程事务的解决方案。在谷歌的Dapper文章中描述的分布式跟踪的一些用例包括异常检测、诊断稳定状态问题、分...
聊聊java的类加载机制
杨辉
2021-07-18
阅读 7 分钟
4k
最近在工作中实现一个链路追踪系统,使用到了javaagent技术,通过字节码注入技术无侵入的对应用常用的组件进行链路追踪和监控。我把写好的javaagent程序打好包应用到目标程序,当使用idea或者eclipse启动应用程序时,没有什么问题;由于我们的项目是springboot项目,一般会使用spring-boot-maven-plugin插件进行打包,这...
Java动态代理实现原理(模拟实现)
杨辉
2018-10-30
阅读 11 分钟
3.7k
动态代理是java语言中常用的设计模式,java在1.3版本以后也提供了动态代理技术,允许开发者在运行期间创建接口的代理对象。 很多框架底层都使用了java的动态代理技术来实现的,比如大名鼎鼎的springAOP;这篇文章将带你一步一步揭开JDK动态代理技术的神秘面纱。
数据结构与算法随笔之优先队列-求滑动窗口最大值(三)
杨辉
2018-10-23
阅读 3 分钟
2.8k
给定一个长度为N的数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。
数据结构与算法随笔之链表-链表是否有环(二)
杨辉
2018-10-18
阅读 2 分钟
1.9k
一、可以使用hash表来实现,遍历链表,每个节点放入hash表中,如果hash表中包含了某个节点,那么说明有重复节点存在,即是有环。如果没环,那么链表会遍历结束。代码如下:
数据结构与算法随笔之链表-反转单向链表(一)
杨辉
2018-10-12
阅读 3 分钟
2.7k
最近在学习数据结构和算法,目前学习到链表,这里主要分析下关于链表涉及的面试题解决思路和实现代码,本人熟悉java,所以实现都使用java。废话不多说请看第一题:
rocketmq之producer解析
杨辉
2018-09-26
阅读 7 分钟
13.4k
1、核心发布消息的类DefaultMQProducer,继承自MQProducer接口,此接口定义了一系列发送消息的方法,如普通消息,顺序消息,延时消息等,最终进行网络通信会交给MQClientAPIImpl处理。
rocketmq简介
杨辉
2018-09-20
阅读 3 分钟
3.5k
但是rocketmq提供的能力会比这个复杂的多,如一个生产方发布消息,需要多个消费方订阅,也会存在多个生产方生产消息,一个消费方消费消息,出现一对多,多对一的情况。
使用servlet3.0异步特性改造spring-cloud-zuul
杨辉
2018-09-13
阅读 6 分钟
5.2k
我们知道spring-cloud-zuul是依赖springMVC来注册路由的,而springMVC又是在建立在servlet之上的(这里微服务专家杨波老师写过一篇文章讲述其网络模型,可以参考看看),在servlet3.0之前使用的是thread per connection方式处理请求,就是每一个请求需要servlet容器为其分配一个线程来处理,直到响应完用户请求,才被...
从用户模式角度看零拷贝
杨辉
2018-09-11
阅读 4 分钟
2.3k
到目前为止,每个人都听说过Linux下所谓的零拷贝功能,但我遇到有些人对这个主题没有完全理解,正因为如此,我决定写几篇文章来更深入研究下这个问题,希望能够阐明这个有用的特性;这本文中,我们将从用户模式的应用程序角度来看看零拷贝,故省去复杂的内核级别细节。
rocketmq底层通信模块解析
杨辉
2018-09-06
阅读 4 分钟
3.1k
netty服务器启动,监听在8888;netty设置了一个心跳检测器IdleStateHandler,读写超时时间为120s,在120s后都没有读写操作将会触发相应事件。
spring-cloud-zuul原理解析(一)
杨辉
2018-08-07
阅读 4 分钟
16.8k
Zuul是Netflix开源的微服务网关,它可以和Eureka,consul,Ribbon,Hystrix等组件配合使用,网上也有很多如何使用zuul的文章,我们也在生产环境使用了,所以读了下zuul的源码,下面把它分享出来,与大家探讨下zuul核心原理。
从java的序列化和反序列化说起
杨辉
2018-08-02
阅读 6 分钟
3k
在java中允许我们创建可复用的对象,但是这些对象仅仅存在jvm的堆内存中,有可能被垃圾回收器回收掉而消失,也可能随着jvm的停止而消失,但是有的时候我们希望这些对象被持久化下来,能够在需要的时候重新读取出来。比如我们需要在网络中传输对象,首先就需要把对象序列化二进制,然后在网络中传输,接收端收到这些二进...
RestTemplate集成Ribbbon
杨辉
2018-08-02
阅读 6 分钟
3.9k
上一篇文章我们分析了ribbon的核心原理,接下来我们来看看springcloud是如何集成ribbon的,不同的springcloud的组件(feign,zuul,RestTemplate)集成ribbon有所不同,这篇文章先来看看RestTemplate。
sping-cloud-ribbon原理解析
杨辉
2018-08-02
阅读 3 分钟
4.1k
Ribbon是一个客户端负载均衡器,它可以很好地控制HTTP和TCP客户端的行为。Feign已经默认使用了Ribbon(参考文章)一、先来看看ribbon的几个核心类1、IClientConfig 默认实现类DefaultClientConfigImpl,主要用来配置ribbon客户端的相关属性配置2、ServerListUpdater默认实现类PollingServerListUpdater,主要负责动态更新服...
spring-cloud-feign源码深度解析
杨辉
2018-05-22
阅读 6 分钟
17k
Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插拔注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并在Spring Web中使用默认使用的HttpMessageConverters。Spring Cloud...
如何解决MQ消息消费顺序问题
杨辉
2018-04-21
阅读 3 分钟
38.6k
通常mq可以保证先到队列的消息按照顺序分发给消费者消费来保证顺序,但是一个队列有多个消费者消费的时候,那将失去这个保证,因为这些消息被多个线程并发的消费。但是有的时候消息按照顺序处理是很重要的,那我们该如何来保证消息的顺序呢,下面将从activemq和rocketmq来看看,它们是如何来保证消息的顺序问题的?我们...
zuul实现动态路由以及相关源码解析
杨辉
2017-04-25
阅读 2 分钟
15.1k
关于zuul如何实现动态路由,已经有大神写博客详解过,这里不啰嗦了,文章地址:Spring Cloud Zuul实现动态路由,咱们就从这篇文章最后的一个问题讲起,作者在最后实现动态刷新路由规则时说:为什么不自己是手动重新加载Locator.dorefresh?非要用事件去刷新?这牵扯到内部的zuul内部组件的工作流程,不仅仅是Locator本身...
activemq与spring整合,配置消费者监听器设置sessionAcknowledgeMode问题
杨辉
2017-03-15
阅读 2 分钟
13.7k
最近在研究activemq的ack消息确认机制,在activemq与spring整合时遇到的了一个问题。JMS规范的ack消息确认机制有一下四种,定于在session对象中:AUTO_ACKNOWLEDGE = 1 :自动确认CLIENT_ACKNOWLEDGE = 2:客户端手动确认 DUPS_OK_ACKNOWLEDGE = 3: 自动批量确认SESSION_TRANSACTED = 0:事务提交并确认但是在activemq...