自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 OpenResty 概要及原理

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty 官网地址:https://openresty.org/cn/。OpenResty主要包含两方面的技术:Nginx: 一个免费的、开源的、高性能的 HTTP 服务器和反向代理,也是一个电子邮件(IMAP/POP3/SMTP)代理服务器。有关Ngi

2021-02-01 19:11:11 568

原创 Kafka消息发送模式

kafka有同步(sync)、异步(async)以及oneway这三种发送方式,某些概念上区分也可以分为同步和异步两种,同步和异步的发送方式通过“producer.type”参数指定,而oneway由“request.require.acks”参数指定。1. sync vs async在官方文档Producer Configs中有如下:Property Default Description producer.type sync This parameter sp

2021-01-25 17:50:06 1834

原创 WebFlux简介

因企业应用大都和web相关,而Java的web标准中较核心的一部分其实就是JavaEE里的Servlet。Spring和Servlet“相亲相爱”一番后,我就来到了这个世界。我的全名叫Spring MVC,这里的Spring既是我的姓也是我的“爸爸”,那Servlet就是我的“妈妈”了,大家叫我MVC就行了。那个年代社会很落后,条件也不好,好歹我们要求也不高,求个温饱就行了。所以我的妈妈Servlet和她的闺蜜Filter天生就是同步阻塞的,包括她们同事HttpServletRequest的getP.

2021-01-18 16:12:18 735

原创 Java Reactor编程概念

响应式编程作为响应式编程方向上的第一步,微软在.NET生态系统中创建了Rx库(Reactive Extensions)。RxJava是在JVM上对它的实现。响应式编程是一个异步编程范式,通常出现在面向对象的语言中,作为观察者模式的一个扩展。它关注数据的流动、变化的传播。这意味着可以轻易地使用编程语言表示静态(如数组)或动态(如事件发射源)数据流。响应式流随着时间的推移,一个专门为Java的标准化出现了。它是一个规范,定义了一些接口和交互规则,用于JVM平台上的响应式库。它就是响应式.

2021-01-11 13:52:56 454

原创 Kafka集群配置

假设集群中有三台机器, ip地址分别为: xx.101.139.1, xx.101.139.2, xx.101.139.3.zookeeper集群: xx.101.139.1:2181, xx.101.139.2:2181, xx.101.139.3:2181.kafka broker集群: xx.101.139.1:9092, xx.101.139.2:9092, xx.101.139.3:9092.配置zookeeper集群1 修改zookeeper的配置文件,在$ZOOKEEPER_H

2021-01-04 18:19:46 769

原创 零拷贝的几种方式

大白话解释,零拷贝就是没有把数据从一个存储区域拷贝到另一个存储区域。但是没有数据的复制,怎么可能实现数据的传输呢?其实我们在java NIO、netty、kafka遇到的零拷贝,并不是不复制数据,而是减少不必要的数据拷贝次数,从而提升代码性能。零拷贝的好处 减少或避免不必要的CPU数据拷贝,从而释放CPU去执行其他任务 零拷贝机制能减少用户空间和操作系统内核空间的上下文切换 减少内存的占用 内核空间和用户空间 内核空间:Linux自身使用的空间;主要提供进程调度、

2020-12-21 17:20:41 1954 1

原创 IO多路复用

假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。那么问题就来了:很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。 空管员之间需要协调,屋子里面就1, 2个人的时候还好,几十号人以后 ,基本上就成菜市场了。 空管员经常需

2020-12-14 15:54:35 242

原创 Java ProcessBuilder

概述ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处理实现进程的控制管理。每个 ProcessBuilder 实例管理一个进程属性集。它的start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。每个进程生成器(即ProcessBuilder

2020-12-07 09:12:07 4014

原创 Java nio记录

内存映射文件JAVA处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的IO类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer。MappedByteBuffer是NIO引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器(Selector)中,不时调用后者的选择(select)方法就能返回满足的选择键(SelectionKey),

2020-11-29 20:42:24 215

原创 K8s - Pod

抽象层面 :Pod = random-ip:fixed-port1. 概述K8S中调度的最小单元。可以简单的类比:平台 最小调度单元 KVM VM Docker Container K8s Pod 2. 容器的资源限制resources: # 资源限制 requests: # 请求的资源: k8s根据requests来进行pod的调度; HPA进行伸缩时也是根据requests来计算的。 cpu.

2020-11-23 13:18:44 119

原创 Java Unsafe类

Unsafe类是Java提供一个底层的类型,位于sun.misc包中,主要用来提供一些不安全的底层内存操作。其内部实现在Jdk中略有差异,比如。Jdk 81和Jdk 152的源码。1 获取Unsafe对象由于Unsafe在实现上添加了限制(只能由BootstrapClassLoader加载的类型来调用,而我们的代码通常都是AppClassLoader加载的),所以我们无法直接通过Unsafe.getUnsafe()这个静态方法来获取。@CallerSensitivepublic st

2020-11-16 09:30:33 263

原创 Kafka入门记录(3)

Producer异步发送 public static void producerSend() throws ExecutionException, InterruptedException { Properties properties = new Properties(); properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "39.107.241.57:9092"); propert

2020-11-08 22:40:49 114

原创 Kafka入门记录(2)

继续AdminClient的API使用记录查看TOPIC的信息 public static void describeTopics() throws ExecutionException, InterruptedException { AdminClient adminClient = adminClient(); DescribeTopicsResult describeTopicsResult = adminClient.describeTopics(Ar

2020-11-01 23:37:23 228

原创 MongoDb复制集搭建

复制集的作用MongoDB 复制集的主要意义在于实现服务高可用 它的现实依赖于两个方面的功能: 数据写入时将数据迅速复制到另一个独立节点上 在接受写入的节点发生故障时自动选举出一个新的替代节点 在实现高可用的同时,复制集实现了其他几个附加作用: • 数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的读延迟 读写分离:不同类型的压力分别在不同的节点上执行 异地容灾:在数据中心故障时候快速切换到异地 典型复制集结构一个典型的复制集由3个以上具有投票权的节点组成,包.

2020-10-25 22:52:37 360

原创 Kafka入门记录

什么是kafka分布式流平台(A distributed streaming platform) 基于zookeeper的分布式消息系统 具有高吞吐量 高性能 实时及高可靠等特点kafka相关命令启动kafkanohup bin/kafka-server-start.sh config/server.properties &停止kafkabin/kafka-server-stop.sh创建Topicbin/kafka-topics.sh --create --zoo

2020-10-12 08:29:13 161

原创 IO 模型

0 I/O 模型在I/O模型中,设想如此场景 :application通过kernel的read函数读取数据,但是kernel还未准备好数据。那么此时read函数有两种处理方式(大致的流程):1 等待数据准备好后再返回。此时: 对于application是Blocking的。 对于kernel的read函数是Synchronous的。 2 立即返回,告知application数据还未准备好。此时: 对于application是Non-Blocking的; 对.

2020-09-28 09:33:36 116

原创 数据同步:主从库如何实现数据一致

如果Redis发⽣了宕机,AOF和RDB可以分别通过回放⽇志和重新读⼊RDB⽂ 件的⽅式恢复数据,从⽽保证尽量少丢失数据,提升可靠性。 不过,即使⽤了这两种⽅法,也依然存在服务不可⽤的问题。⽐如说,我们在实际使⽤时只运⾏了⼀个 Redis实例,那么,如果这个实例宕机了,它在恢复期间,是⽆法服务新来的数据存取请求的。 那我们总说的Redis具有⾼可靠性有两层含义:⼀是数据尽量少丢失 数据尽量少丢失,⼆是 服务尽量少中断 服务尽量少中断。AOF和RDB保证了前者,⽽对于后者,Redis的做法就是增加副本冗余量

2020-09-21 08:56:42 344

原创 X.509公钥证书

X.509是# 公钥证书的格式标准, 广泛用于TLS/SSL安全通信或者其他需要认证的环境中。X.509证书可以由# CA颁发,也可以自签名产生。1 OverviewX.509证书中主要含有公钥、身份信息、签名信息和有效性信息等信息。这些信息用于构建一个验证公钥的体系,用来保证客户端得到的公钥正是它期望的公钥。公钥: 非对称密码中的公钥。公钥证书的目的就是为了在互联网上分发公钥。 身份信息: 公钥对应的私钥持有者的信息,域名以及用途等。 签名信息: 对公钥进行签名的信息,提供公钥...

2020-09-14 09:19:43 3057

转载 软件设计的目标和途径

1 目标和途径我们在做某一件事情的时候,总是会带有一定的目的性的:比如说一日三餐,是为了给身体补充所需的能量。那么这三餐具体如何落实呢,则会有多种多样的方式。比如你可以选择吃碳水食物、蔬菜、肉类、牛奶或者蛋类等等;也可以选择通过静脉注射一些所需的葡萄糖或者蛋白质。总之,能够为身体补充能量就可以了。1.1 目标那么在上述的小例子中,我们的目的就是给身体补充能量,用以维持正常的生命活动所需。当然也可以说是我们的目标,不过目标侧重于过程,目的则更强调结果。1.2 途径从上面的例子中可以看出有多

2020-09-06 22:08:48 1112

原创 Netty实战进阶

2020-08-30 23:30:22 131

原创 Netty实战进阶

2020-08-23 21:39:13 291

原创 Netty 实战入门 写一个“玩具”项目

编写网络应用程序基本步骤案例介绍及数据结构设计完善客户端Netty 编程中易错点解析LengthFieldBasedFrameDecoder 中 initialBytesToStrip 未考虑设置ChannelHandler 顺序不正确ChannelHandler 该共享不共享,不该共享却共享分配 ByteBuf :分配器直接用 ByteBufAllocator.DEFAULT 等,而不是采用ChannelHandlerContext.alloc()未考虑 ByteBuf 的释

2020-08-16 23:15:47 156

原创 Netty源码---从“线”(请求处理)的角度剖析

Netty源码核心包速览our thread创建selector创建serversocketchannel初始化serversocketchannel给serversocketchannel从bossgroup中选择一个NioEventLoopboss thread将serversocketchannel注册到选择的NioEventLoop的selector •绑定地址启动注册接受连接事件(OP_ACCEPT)到selector上启动服务的本质Selector selecto

2020-08-09 22:29:20 192

原创 WebFlux简介

基本介绍https://docs.spring.io/spring/docs/5.0.0.RELEASE/spring-framework-reference/web-reactive.html#webflux-introductionSpring框架中所包含的最原始的web框架Spring Web MVC,是专门为Servlet API和Servlet容器构建的。而The reactive stack, web framework, Spring WebFlux是在后来Spring5.0版本中添

2020-08-02 21:15:18 13387 1

原创 Reactive简介

理解Reactive相关技术反应堆模式(Reactor) 同步非阻塞,多工模式,一个事情可以分为几个步骤,每个步骤相应去做,同步串行先做A,后做BProactor模式异步非阻塞,多工模式,A,B,C同时去做,异步去做。观察者模式(Observer) 事件通知和监听的模式,也是一种推模式,由服务端推送到客户端。迭代器模式(Iterator) 拉模式,服务端准备好数据,由客户端通过循环去获取。Java并发模型 WebFlux的底层核心技术是Reac...

2020-07-26 22:02:06 5061

原创 Netty源码:从“点”(领域知识)的角度剖析

文章目录Netty切换三种I/O模式什么是经典的三种I/O模式阻塞与非阻塞同步与异步Netty对三种I/O模式的支持为什么Netty有多种NIO实现NIO一定优于BIO么Netty切换三种I/O模式什么是经典的三种I/O模式Netty对三种I/O模式的支持为什么Netty仅支持NIO为什么Netty有多种NIO实现NIO一定优于BIO么源码解读Netty怎么切换I/O模式什么是经典的三种I/O模式生活场景:当我们去饭店吃饭时:食堂排队打饭模式:排队在窗口,打好才走;点单、等待被

2020-07-12 21:10:56 257

原创 初识Netty:背景、现状与趋势

文章目录Netty概述Netty之Hello World不直接使用JDK NIO选择Netty的原因Netty发展史Netty概述Netty由Trustin Lee (韩国,Line公司) 2004年开发。Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & cli

2020-07-05 19:54:18 2090

原创 Kong网关upstream健康检查机制

upstream概念及作用upstream是指位于Kong网关之后的上游API/service,即客户端请求被Kong网关转发到的目标地址。在Kong网关中,upstream表示虚拟主机名,可用于:健康检查 熔断 负载均衡。在实际生产环境中,upstream可以指向部署在不同ip和端口的服务(target),在Kong网关的service中代替具体的单个target的配置,结构图如下:负载均衡器以轮询等方式对upstream中配置的target进行负载,并对target进行健康检查,K

2020-06-28 18:38:58 5045 1

空空如也

空空如也

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

TA关注的人

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