2021年5月22日

Netty——心跳机制

摘要: 前言 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性。 心跳包还有另一个作用,经常被忽略,即:一个连接如果长时间不用,防火墙或者路由器就会断开该连接。 操作系统内核心跳 Netty 是 基于 TCP 协议开发的 阅读全文

posted @ 2021-05-22 18:52 曹伟雄 阅读(2052) 评论(0) 推荐(0) 编辑

Netty——自定义协议通信

摘要: 前言 为了满足自己业务场景的需要, 应用层之间通信需要实现各种各样的网络协议。本文记录如何设计一个高效、可扩展、易维护的自定义通信协议,以及如何使用 Netty 实现自定义的通信协议。 一、通信协议设计 所谓的协议,就是通信双方事先商量好的接口“暗语”, 在 TCP 网络编程中,发送方和接收方的数据 阅读全文

posted @ 2021-05-22 18:51 曹伟雄 阅读(6357) 评论(1) 推荐(0) 编辑

Netty——发送消息流程&高低水位

摘要: 相关概念 SO_SEND_BUF和SO_REC_BUFF SO_SEND_BUF是操作系统内核的写缓冲区,所有应用程序需要发送到对端的信息,都会放到该缓冲区中,等待发往对端 SO_REC_BUFF是操作系统内核的读缓冲区,所有对端发过来的数据都会放到该缓冲区中,等待应用程序取走 ChannelOut 阅读全文

posted @ 2021-05-22 18:50 曹伟雄 阅读(1545) 评论(0) 推荐(1) 编辑

Netty——Protostuff编解码

摘要: 前言 java的序列的机制,一种是默认的java序列化机制,这种方式效率太低。另外一种是谷歌的protobuf,但是这种我们还要写proto文件,并且我们还要使用工具来编译生成java文件,实在太麻烦。 但是protostuff却不一样,能够很好的解决上面两者的问题。 什么是Protostuff? 阅读全文

posted @ 2021-05-22 18:49 曹伟雄 阅读(839) 评论(0) 推荐(0) 编辑

Netty——Protobuf编解码

摘要: 什么是protocol buffers? Protocol buffers是谷歌的语言中立,平台中立的,可扩展机制的序列化数据结构框架,可以看作是xml,但是体积更小,传输速率更快,使用更加简单。 一旦你定义了你的数据格式,你可以使用生成源代码去轻松地从各种数据流读和写你的结构化数据并且使用不同的语 阅读全文

posted @ 2021-05-22 18:48 曹伟雄 阅读(1031) 评论(1) 推荐(0) 编辑

Netty——编解码

摘要: Netty编解码 Netty 涉及到编解码的组件有 Channel 、 ChannelHandler 、 ChannelPipe 等,我们先大概了解下这几个组件的作用。 ChannelHandler ChannelHandler 充当来处理入站和出战数据的应用程序逻辑容器。 例如,实现 Channe 阅读全文

posted @ 2021-05-22 18:47 曹伟雄 阅读(549) 评论(0) 推荐(0) 编辑

Netty——粘包和拆包

摘要: Netty粘包拆包 TCP 粘包拆包是指发送方发送的若干包数据到接收方接收时粘成一包或某个数据包被拆开接收。 如下图所示,client 发送了两个数据包 D1 和 D2,但是 server 端可能会收到如下几种情况的数据。 上图中演示了粘包和拆包的三种情况: D1和D2两个包都刚好满足TCP缓冲区的 阅读全文

posted @ 2021-05-22 18:46 曹伟雄 阅读(1064) 评论(0) 推荐(2) 编辑

Netty——参数说明

摘要: Netty参数 ALLOCATOR Netty参数。ByteBuf的分配器 ByteBufAllocator,对象池化。可选值(Netty4.x):ByteBufAllocator.DEFAULT、PooledByteBufAllocator.DEFAULT、UnpooledByteBufAlloc 阅读全文

posted @ 2021-05-22 18:44 曹伟雄 阅读(5044) 评论(0) 推荐(1) 编辑

JVM——参数说明

摘要: 前言 本文对常用 JVM 常用参数做了一个整理,但是参数的使用很复杂,本文仅仅提供常用参数的查阅,具体的使用还是需要根据具体的情况。 JVM 是一个开放的标准,谁可以来实现 JVM,这导致不同 JVM 实现的参数有所不同,本文基于 Hotspot 虚拟机。 JVM 参数很多,总体上可以分成三类: - 阅读全文

posted @ 2021-05-22 18:43 曹伟雄 阅读(2022) 评论(0) 推荐(0) 编辑

应用性能监控——NewRelice

摘要: 前言 New Relic 是一个很强大的服务器性能监控工具,New Relic目前专注于SaaS和App性能管理业务,它支持支持agent和API传送数据,能够对部署在本地或在云中的web应用程序进行监控、故障修复、诊断、线程分析以及容量计划。 New Relic APM将你没有发现的问题暴漏出来, 阅读全文

posted @ 2021-05-22 18:36 曹伟雄 阅读(5378) 评论(0) 推荐(2) 编辑

分布式服务调用链路跟踪——Spring Cloud Sleuth + Zipkin

摘要: 前言 微服务架构下,会有很多微服务,服务之间调用关系会非常复杂,就非常有必要对每个请求的完整调用链进行跟踪,了解调用了那些服务,当出现问题时可以快速定位。 Spring Cloud Sleuth 为 Spring Cloud 实现了一个分布式跟踪解决方案,该组件大量借签了 Dapper、Zipkin 阅读全文

posted @ 2021-05-22 18:35 曹伟雄 阅读(1190) 评论(0) 推荐(0) 编辑

分布式服务调用链路追踪——Pinpoint

摘要: 1. Pinpoint架构 官网地址:https://github.com/pinpoint-apm/pinpoint 从下图来看,Pinpoint主要分成几个部分: Agent,负责从应用服务端收集数据,上传到collector; Collector,负责接收Agent上传的数据,并存储到Hbas 阅读全文

posted @ 2021-05-22 18:34 曹伟雄 阅读(6721) 评论(0) 推荐(1) 编辑

分布式服务调用链路追踪——方案选型

摘要: 前言 目前大多数分布式追踪系统的思想模型都来自 Google's Dapper 论文。 全链路追踪工具一览: Drapper(google--未开源):最早的APM; 鹰眼(阿里--未开源): CAT(大众点评--开源):跨服务的跟踪功能与点评内部的RPC框架集成,这部分未开源且项目在2014.1已 阅读全文

posted @ 2021-05-22 18:33 曹伟雄 阅读(7979) 评论(1) 推荐(2) 编辑

分布式服务调用链路追踪——Skywalking

摘要: SkyWalking是什么? SkyWalking是一个可观测性分析平台和应用性能管理系统,提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,并支持多种开发语言。 官网:http://skywalking.apache.org/ 特点: 性能好 针对单实例5000tps的应用,在全量 阅读全文

posted @ 2021-05-22 18:32 曹伟雄 阅读(10211) 评论(1) 推荐(4) 编辑

导航