Spring Cloud(三)《应用服务快速失败熔断降级保护 Hystrix》
在互联网开发中经常会听到雪崩效应,比如某明星发一些状态某猿就要回去加班了!那么为了应对雪崩我们经常会进行服务扩容、添加缓存、优化流程但往往突发的事件依然有击穿缓存、应用负载、数据库IO、网络异常等等带来的风险,所以一些常见的做法有服务降级、限流、熔断,在逐步恢复系统可用率来保护…
Spring Cloud(二)《服务提供与负载均衡调用 Eureka》
本章节提供一个基于Eurka的服务注册中心,两个服务提供者之后分别使用Ribbon、Fegin方式进行调用,测试负载均衡。 服务提供者Service Provider 本质上是一个 Eureka Client,它在服务启动时,会调用服务注册方法,向 Eureka Server注…
Spring Cloud(一)《服务集群注册与发现 Eureka》
1、对于能提供完整领域服务接口功能的RPC而言,例如;gRPC、Thrift、Dubbo等,服务的注册与发现都是核心功能中非常重要的一环,使得微服务得到统一管理。 2、在分布式领域中有个著名的CAP理论;一致性(Consistency)、可用性(Availability)、分区…
Spring Cloud(零)《总有一偏概述告诉你SpringCloud是什么》
为了更好的实现领域驱动设计的落地,不仅要在设计思路上做到领域职责清晰、系统边界明确,还需要使用到Spring Boot、Spring Cloud框架服务体系来更好的构建微服务。后续部分章节将针对Spring Cloud的使用以及有益于构建微服务的知识技能做系列案例整理,以最终完…
基于jvmti定位java异常信息
JVMTI(JVM Tool Interface)位于jpda最底层,是Java虚拟机所提供的native编程接口。JVMTI可以提供性能分析、debug、内存管理、线程分析等功能。 JPDA 定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了它们三者之间的交…
基于JavaAgent的全链路监控六《开发应用级监控》
在我们的监控程序中,需要对各种模块进行监控;servlet、rpc、http、jdbc、redis、logic等,那么我们在设计监控程序时就需要对监控的程序进行模块化开发,可以在需要的时候进行组装配置即可,以方便我们监控程序的扩展和可控制性。这一章节我们把监控模块剥离,采用工厂…
基于JavaAgent的全链路监控五《ThreadLocal链路追踪》
当业务程序代码在线上运行时,实例A、实例B、实例C,他们直接可能从上到下依次调用,为了能很好的监控程序的调用链路,我们需要对调用链路进行追踪监控。实例的外部可能是通过RPC、HTTP、SOCKET、WEBSERVICE等方式进行调用,内部是方法逻辑依次执行。外部例如http可以…
基于JavaAgent的全链路监控四《JVM内存与GC信息》
除了监控java方法的执行耗时,我们还需要获取应用实例的jvm内存与gc信息,以实时把控我们的服务器性能是否在安全范围。监控jvm内存与gc信息是非常重要的,尤其是在大促以及微博火热爆点的时候,我们需要根据监控信息进行扩容,以保证系统稳定。
基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》
在第二章中我们已经可以监控方法执行耗时,虽然它能完成我们一些基本需要,但是为了增强代码的扩展性,我们需要使用字节码操作工具ByteBuddy来帮助我们实现更完善的监控程序。
基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》
通过上一章节的介绍《嗨!JavaAgent》,我们已经知道通过配置-javaagent:文件.jar后,在java程序启动时候会执行premain方法。接下来我们使用javassist字节码增强的方式,来监控方法程序的执行耗时。
基于JavaAgent的全链路监控一《嗨!JavaAgent》
JavaAgent是在JDK5之后提供的新特性,也可以叫java代理。开发者通过这种机制(Instrumentation)可以在加载class文件之前修改方法的字节码(此时字节码尚未加入JVM),动态更改类方法实现AOP,提供监控服务如;方法调用时长、可用率、内存等。本章节初步…
bugstack虫洞栈 | netty4.1案例文章列表汇总,跟着案例学Netty
Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 因为你要涨工资!无论是在互联网还是在物联网开发中,都离不开Socket通信,尤其是…
netty案例,netty4.1源码分析篇六《Netty异步架构监听类Promise源码分析》
他们的含义都是对未来即将要发生的事情做相应的处理,这也是在异步编程中非常常见的类名。 Netty是一个异步网络处理框架,在实现中大量使用了Future机制,并在Java自带Future的基础上,增加了Promise机制。这两个实现类的目的都是为了使异步编程更加方便使用。 jav…
netty案例,netty4.1源码分析篇五《一行简单的writeAndFlush都做了哪些事》
对于使用netty的小伙伴来说,ctx.writeAndFlush()再熟悉不过了,它可以将我们的消息发送出去。那么它都执行了那些行为呢,是怎么将消息发送出去的呢。 在这段代码中我们可以看到,writeAndFlush方法里提供了一个默认的newPromise()作为参数传递。…
netty案例,netty4.1源码分析篇四《ByteBuf的数据结构在使用方式中的剖析》
在Netty中ByteBuf是一个非常重要的类,它可以以高效易用的数据结构方式来满足网络通信过程中处理数据包内字节码序列的移动。 那么这种数据结构之所以能高效的处理数据传输处理并解决半包粘包,主要得益于ByteBuf中有两个不同的索引;读索引(readIndex)、写索引(wr…
netty案例,netty4.1源码分析篇三《Netty服务端初始化过程以及反射工厂的作用》
本章节主要分析Netty在启动过程中的配置内容以及最终调用bind方法是如何启动Netty服务端的。 在Netty启动过程中,我们分别通过调用.group、.channel、.option、.childHandler来配置服务端信息,最后调用.bind()来启动服务。 grou…
netty案例,netty4.1源码分析篇二《ServerBootstrap配置与绑定启动》
结合上一章节介绍NioEventLoopGroup,本章节继续介绍ServerBootstrap相关代码。 BootStrap,客户端不接收连接,并且是在父通道完成系列操作。 新建NioEventLoopGroup类型的bossGroup和group。bossGroup主要处理…
netty案例,netty4.1源码分析篇一《NioEventLoopGroup源码分析》
本章节我们从一个基础构建的基础NettyServer来分析NioEventLoopGroup源码,其中包括了;EventLoopGroup事件循环组、NioEventLoopGroup异步事件循环组、MultithreadEventLoopGroup多线程事件循环组等。 Nio…
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》
窃听风险[eavesdropping]:第三方可以获知通信内容。 篡改风险[tampering]:第三方可以修改通信内容。 冒充风险[pretending]:第三方可以冒充他人身份参与通信。 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。 鉴别:可选的客户端认证,和强…
netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》
你是否使用过某盘,在前几年我们使用的时候速度飞快,上传下载嗖嗖嗖。但是近年来只要不办会员,速度慢的像蜗牛,当然人家也得赚钱我们能理解。那么这样的限速是怎么实现的呢,我们这个案例使用Netty的流量整形进行限速传输,测试过程中当你把流量整形功能去掉后你就是年费VIP。 流量整形(…