dubbo+zipkin调用链监控(二)
摘要:去年的时候写过dubbo+zipkin调用链监控,最近看到zipkin2配合brave实现起来会比我之前的实现要简单很多,因为brave将很多交互的内容都封装起来了,不需要自己去写具体的实现,比如如何去构建span,如何去上报数据。 收集器抽象 由于zipkin支持http以及kafka两种方式上报
阅读全文
posted @
2018-10-08 23:32
min.jiang
阅读(2319)
推荐(2) 编辑
Kafka Manager
摘要:Kafka Manager 这里记录下安装过程,以及当时遇到的一些问题。 依赖项 kafka manager依赖两个组件: java8 最新的kafka manager依赖java8,低版本的我没有尝试过。这里不对配置java8做说明 sbt sbt是一个scala项目的构建工具,我们通过下载kaf
阅读全文
posted @
2018-08-15 14:01
min.jiang
阅读(824)
推荐(1) 编辑
简易RPC框架-熔断降级机制
摘要:熔断与降级 为什么在RPC环节中有熔断以及降级的需求,详细的原因这里不多解释,从网上搜索一张图做示意。 熔断 我理解熔段主要解决如下几个问题: 当所依赖的对象不稳定时,能够起到快速失败的目的 快速失败后,能够根据一定的算法动态试探所依赖对象是否恢复 比如产品详细页获取产品的好评总数时,由于后端服务异
阅读全文
posted @
2017-12-02 17:07
min.jiang
阅读(11825)
推荐(2) 编辑
转:一篇讲线上优化查 CPU的脚本
摘要:原文链接:https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0、背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和
阅读全文
posted @
2017-11-08 08:13
min.jiang
阅读(2203)
推荐(0) 编辑
简易RPC框架-上下文
摘要:上下文 记的学英语的时候,总是不记的某个词是什么意思,然后就看不下去了,只能问周围的同学或者老师或者去查词典,他们的建议是通过上下文去推测这个词大概的意思,反正我那会上学时没理解,所以英文一直比较差。 现在英语水平也没提高多少,尽管有点领会。 后来慢慢理解了一些,因为有些词有很多种意思,放在某个场景
阅读全文
posted @
2017-10-29 02:01
min.jiang
阅读(3777)
推荐(0) 编辑
简易RPC框架-客户端限流配置
摘要:关键资源 关键资源总是有限的,也就意味着处理能力也有限,所以当面对大量业务时,为了保障自己能够有序的提供服务最经济的做法就是限制同一时间处理的事务数。比如银行的工作人员,一个工作人员同时只能为一个客户服务,来多了根本处理不了,不光是一种浪费而且有可以造成混乱的局面导致工作人员无法工作。 网络请求漏斗
阅读全文
posted @
2017-10-23 02:38
min.jiang
阅读(4419)
推荐(1) 编辑
简易RPC框架-过滤器机制
摘要:过滤器 字面义上理解的过滤器类似下图,从一堆物品中筛选出符合条件的留下,不符合的丢弃。 GOF 职责链 GOF中有一种设计模式叫职责链,或者叫责任链,常规的UML图如下: 正统的职责链是将一个请求发给第一个接收者,接收者判断是否属于自己能处理的,如果能处理则执行操作并中止请求下发,流程到此为止。如果
阅读全文
posted @
2017-10-08 00:00
min.jiang
阅读(2784)
推荐(0) 编辑
简易RPC框架-心跳与重连机制
摘要:心跳 就是告诉其它人自己还活着。在简易RPC框架中,采用的是TCP长连接,为了确保长连接有效,就需要客户端与服务端之间有一种通知机制告知对方的存活状态。 如何实现 客户端发送心跳消息 在状态空闲的时候定时给服务端发送消息类型为PING消息。 服务端接收心跳消息 捕获通道空闲状态事件,如果接收客户端P
阅读全文
posted @
2017-09-30 19:22
min.jiang
阅读(5451)
推荐(2) 编辑
简易RPC框架-私有协议栈
摘要:HTTP协议 客户机与服务端之间的数据交互需要遵守一定的约定,比如协议版本,数据类型,是否有缓存,是否有压缩等,只有在这些约定的基础上才能相互之间愉快的工作。 Netty通信过程中的编解码 这时说的是基于TCP/IP的Netty之间的通信。TCP/IP协议下客户端与服务端之间要进行数据交互,一般需要
阅读全文
posted @
2017-09-24 21:43
min.jiang
阅读(2227)
推荐(0) 编辑
dubbo源码分析(二):超时原理以及应用场景
摘要:本篇主要记录dubbo中关于超时的常见问题,实现原理,解决的问题以及如何在服务降级中体现作用等。 超时问题 为了检查对dubbo超时的理解,尝试回答如下几个问题,如果回答不上来或者不确定那么说明此处需要再多研究研究。 我只是针对个人的理解提问题,并不代表我理解的就是全面深入的,但我的问题如果也回答不
阅读全文
posted @
2017-08-06 02:16
min.jiang
阅读(17571)
推荐(7) 编辑
简单RPC框架-基于Consul的服务注册与发现
摘要:一般我们常见的RPC框架都包含如下三个部分: 注册中心,用于服务端注册远程服务以及客户端发现服务 服务端,对外提供后台服务,将自己的服务信息注册到注册中心 客户端,从注册中心获取远程服务的注册信息,然后进行远程过程调用 上面提到的注册中心其实属于服务治理,即使没有注册中心,RPC的功能也是完整的。之
阅读全文
posted @
2017-05-22 23:58
min.jiang
阅读(22218)
推荐(1) 编辑
简易RPC框架-学习使用
摘要:基于netty4,protostuff的出于学习目的的RPC框架,后续会完善功能。 背景 做微服务有不短时间了,单纯RPC框架呢生产环境上之前主要使用dubbo,出于学习了解过Spring Cloud以及其它的比如Finagle,grpc,thrift。看过dubbo部分源码,了解过RPC的基本原理
阅读全文
posted @
2017-05-16 00:53
min.jiang
阅读(9197)
推荐(2) 编辑
统一配置中心2
摘要:统一配置中心方案 统一配置中心1中记录了我之前项目中如何处理多系统中的配置问题,对于统一配置中心组件一般分为两种做法: 自建 它的好外与缺点都非常明确。 好处 设计以及代码实现都由自己把控,可形成自己的知识积累 设计可以足够简化,无需考虑过多场景 能够快速适应项目的需求,无需考虑开源的是否支持 缺点
阅读全文
posted @
2017-04-23 12:15
min.jiang
阅读(3886)
推荐(0) 编辑
dubbo+zipkin调用链监控
摘要:分布式环境下,对于线上出现问题往往比单体应用要复杂的多,原因是前端的一个请求可能对应后端多个系统的多个请求,错综复杂。 对于快速问题定位,我们一般希望是这样的: 从下到下关键节点的日志,入参,出差,异常等。 关键节点的响应时间 关键节点依赖关系 而这些需求原来在单体应用中可以比较容易实现,但到了分布
阅读全文
posted @
2017-04-14 17:27
min.jiang
阅读(24026)
推荐(1) 编辑
Spring Cache扩展:注解失效时间+主动刷新缓存
摘要:Spring Cache 两个需求 缓存失效时间支持在方法的注解上指定 Spring Cache默认是不支持在@Cacheable上添加过期时间的,可以在配置缓存容器时统一指定: @Bean public CacheManager cacheManager( @SuppressWarnings("r
阅读全文
posted @
2017-03-06 19:29
min.jiang
阅读(58296)
推荐(6) 编辑
转:深入理解Java G1垃圾收集器
摘要:本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践。 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单的说垃圾回收就是回收内存中不再使用的对象。 垃圾回收的基本步骤 回收的步骤有2步: 1,查找内
阅读全文
posted @
2017-03-03 14:15
min.jiang
阅读(29364)
推荐(3) 编辑
dubbo源码分析(一)
摘要:阅读源码的作用 提取设计思路,增强设计能力 理解运行机制,便于快速解决问题以及功能扩展 常见有关dubbo的问题 dubbo的负载均衡是在哪个组件中处理的? dubbo默认的负载均衡算法是什么? 如果注册中心挂掉了客户端是否能够继续调用dubbo? 一个请求从调用端到服务端的处理流程是什么? 如果你
阅读全文
posted @
2017-03-02 19:53
min.jiang
阅读(27994)
推荐(1) 编辑
理解WEB API网关
摘要:隐藏细节 现实生活中有很多隐藏细节的案例,比如我们平时用的电脑,当我们按电源按钮后电脑就自动开始启动了,对用户来讲很简单只需要知道按按钮就行。但电脑内部的工作原理其实是很复杂的一个流程,这里不多说。 如果不隐藏细节会怎样? 我想可能的结果就是电脑只能是特别特别的专业人员才能操作,永远无法像现在一样成
阅读全文
posted @
2017-02-25 19:27
min.jiang
阅读(8379)
推荐(4) 编辑
理解zookeeper选举机制
摘要:zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。 这篇主要分析leader的选择机制,zookeeper提供了三种方式: Leade
阅读全文
posted @
2017-02-20 21:35
min.jiang
阅读(66923)
推荐(14) 编辑