自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tinysakura的博客

每一次离散,都是为了下一次重聚。

  • 博客(430)
  • 收藏
  • 关注

原创 sentinel整合dubbo加入热点参数流控能力

热点参数维度流控何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以...

2019-10-21 20:58:22 732

原创 阿里sentinel流控框架初探

netflix的hystrix作为业界使用最广泛的流控框架,sentinel的开发团队自然少不了对其的学习与改进,这里有一篇开发团队写的两者的对比,总结起来就是sentinel的实现更加轻量,进行流控的维度也更多样。使用sentinel的另一个理由就是其与国内广泛使用的各大微服务框架都做了集成,接入sentinel更加方便。这里是sentinel集成的其它框架的接入文档。下面我们以国内使用最为...

2019-10-12 17:40:10 1508

转载 zuul2架构简析

上图是Zuul2的架构,和Zuul1没有本质区别,两点变化:前端用Netty Server代替Servlet,目的是支持前端异步。后端用Netty Client代替Http Client,目的是支持后端异步。过滤器换了一下名字,用Inbound Filters代替Pre-routing Filters,用Endpoint Filter代替Routing Filter,用Outbound F...

2019-10-09 18:01:50 1289

转载 zookeeper核心概念

转载自Snailclimb的博客一 什么是 ZooKeeperZooKeeper 的由来下面这段内容摘自《从Paxos到Zookeeper 》第四章第一节的某段内容,推荐大家阅读以下:Zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图...

2019-09-30 17:12:39 135

转载 kafka设计原理

转载自李克华的博客kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力.1、持久性kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.文件缓存/直接内存映射等是常用的手段.因为kafka是对日志文件进行append操作,因此磁盘检索的...

2019-09-30 11:38:00 414

转载 java堆分析工具MAT使用教程

MAT简介MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,从而定位内存泄漏的原因。什么时候会用到MAT?a) OutOfMemoryError的时候,触发full gc,但空间却回收不了,引发内存泄露b)java服务器系统异常,比如l...

2019-09-29 16:19:11 7841

转载 kafka核心概念

转载自happy19870612的博客一 Broker(代理)一台kafka服务器就可以称之为broker.一个集群由多个broker组成,一个broker可以有多个topic二 Topic(主题)每一条发送到kafka集群的消息都可以有一个类别,这个类别叫做topic,不同的消息会进行分开存储,如果topic很大,可以分布到多个broker上也可以这样理解:topic被认为是一个队列,...

2019-09-24 19:09:06 130

转载 logback配置指定类日志输出到指定日志文件

转载自里奥leo的博客打印日志package com.duke.api;@Controllerpublic class demo {private static final Logger logger = LoggerFactory.getLogger(demo.class); @RequestMapping("/test") public void testD...

2019-09-24 16:34:16 11117

转载 开源数据收集引擎Logstash

转载自狂乱的贵公子的博客Logstash介绍Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。集中、转换和存储你的数据Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsea...

2019-09-24 14:54:02 557

转载 kibana日志收集

一、Kibana安装Kibana 是为 Elasticsearch 设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图表的形式展现出来。kiabana下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0...

2019-09-24 13:10:29 8690

转载 go etcd客户端简单使用

转载自我的饭卡呢的博客获取etcd client首先获取clientv3:go get go.etcd.io/etcd/clientv3连接etcd:config := clientv3.Config{ Endpoints:[]string{"192.168.50.250:2379","172.16.196.129:2379"}, DialTimeout:10*ti...

2019-09-08 17:22:57 1422

转载 Mac安装单节点etcd

转载自Mistra丶的博客安装etcd用brew安装非常方便,没安装的自行安装Homebrewbrew search etcd可以看到候选安装包brew install etcd安装执行etcd即可启动服务etcd可以看到以下信息:2018-11-26 17:35:02.659194 I | etcdmain: etcd Version: 3.3.102018-11-2...

2019-09-08 16:07:54 1468 1

转载 etcdctl使用

转载自胡伟煌的博客使用etcdctl指令可以操作etcd集群,检查集群状态等环境变量设置使用etcdctlv3的版本时,需设置环境变量ETCDCTL_API=3。export ETCDCTL_API=3或者在/etc/profile`文件中添加环境变量vi /etc/profile...ETCDCTL_API=3...source /etc/profile查看当前etcd...

2019-09-08 16:00:55 1114

转载 Spring Cloud启动应用时指定IP或忽略某张网卡配置

说明:分布式应用部署到服务上,由于服务器可能存在多张网卡,造成IP地址不准的问题。解决方法:1、直接添加忽略某张网卡的配置:spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略eth0, 支持正则表达式正则:spring.cloud.inetutils.ignored-interfaces=eth.*2、指定默认IP:spr...

2019-09-05 16:58:00 1903 1

转载 logrus使用进阶

文件名与行号logrus的一个很致命的问题就是没有提供文件名和行号,这在大型项目中通过日志定位问题时有诸多不便。Github上的logrus的issue#63:Log filename and line number创建于2014年,四年过去了仍是open状态~~~网上给出的解决方案分位两类,一就是自己实现一个hook;二就是通过装饰器包装logrus.Entry。两种方案网上都有很多代码,但...

2019-08-30 14:50:26 2095 3

转载 go语言日志框架logrus

转载自李文周的博客logrus介绍Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。它有以下特点:完全兼容标准日志库,拥有七种日志级别:Trace, Debug, Info, Warning, Error, Fataland Panic。可扩展的Hook机制,允许使用者通过Hook的方式将日志分发到任意地方,如本地文件系统,logstash,e...

2019-08-30 14:25:55 1027

转载 go goroutine泄露

什么是goroutine泄露Go 中的并发性是以 goroutine(独立活动)和 channel(用于通信)的形式实现的。处理 goroutine 时,程序员需要小心翼翼地避免泄露。如果最终永远堵塞在 I/O 上(例如 channel 通信),或者陷入死循环,那么 goroutine 会发生泄露。即使是阻塞的 goroutine,也会消耗资源,因此,程序可能会使用比实际需要更多的内存,或者最...

2019-08-30 10:45:08 1048

转载 go闭包函数参数的作用

转载自cbsfly_的博客今天写代码的时候用到了协程go func,发现func函数块内部的代码也能使用外部的局部变量,当时我就加上了打印发现闭包内部的变量值和外部的局部变量是一样的,就觉得很费解匿名函数的传参是什么用的?然后我就做了个小实验,运行如下代码func main() { i := 1 go func() { time.Sleep(100*tim...

2019-08-30 09:35:28 769

转载 go runtime.Gosched()函数解析

runtime.Gosched()Go语言runtime.Gosched()函数的官方文档如下:func Gosched func Gosched()Gosched yields the processor, allowing other goroutines to run. It does not suspend the current goroutine, so executi...

2019-08-30 09:23:20 7093 4

转载 Slf4j MDC使用与实现

前言如今,在 Java 开发中,日志的打印输出是必不可少的,Slf4j + LogBack 的组合是最通用的方式。有了日志之后,我们就可以追踪各种线上问题。但是,在分布式系统中,各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程。因此,我们可能需要对一个用户的操作流程进行归类标记,比如使用线程+时间戳,或者用户身份标识等;如此,我们可以从大量日志信息中grep出某个用户的操作流程,或者...

2019-08-29 17:23:08 3829

转载 go time包定时器和断续器

定时器在time包中有两个函数可以帮助我们初始化time.Timertime.Newtimer函数初始化一个到期时间据此时的间隔为3小时30分的定时器t := time.Newtimer(3*time.Hour + 30*time.Minute)注意,这里的变量t是*time.NewTimer类型的,这个指针类型的方法集合包含两个方法Rest用于重置定时器该方法返回一个bool...

2019-08-29 09:19:48 210

转载 import 下划线作用

import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。示例目...

2019-08-28 20:56:00 797

转载 SSL证书签署流程

转载自灏玮的博客用openssl生成nginx.key1.key的生成openssl genrsa -des3 -out server.key 2048这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:openssl rsa -in server.k...

2019-08-28 15:34:20 366

转载 go Tag详解

转载自OhBonsai的博客我们可以通过Tag来增强结构体的定义,Tag会带上一些meta信息,在本文中我们将通过几个例子来深入了解Tag的用法。结构Struct是由一组field组成,每个field包括了名字(可选)和字段类型package mainimport "fmt"type T1 struct { f1 string}type T2 struct { T1...

2019-08-27 11:51:10 5818

转载 go 函数类型(function types)

转载自咕咕鷄的博客从golang的官方文档得知function types的解释是这样的。A function type denotes the set of all functions with the same parameter and result types.先找个例子来看一下:package mainimport "fmt"// Greeting function ...

2019-08-27 09:03:05 1055 1

原创 grpc命令行工具grpcurl使用

安装go get github.com/fullstorydev/grpcurlgo install github.com/fullstorydev/grpcurl/cmd/grpcurl注册reflection服务grpcurl对于其他grpc服务的感知皆来自reflection服务,所以在注册自己的服务之前需要先注册reflection服务,否则会提示$ grpcurl -pla...

2019-08-25 16:46:59 17590

原创 go语言 grpc入门

what grpcgRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load b...

2019-08-25 15:25:25 782

转载 go unsafe包使用

转载自stefno的博客什么是 unsafe前面所说的指针是类型安全的,但它有很多限制。Go 还有非类型安全的指针,这就是 unsafe 包提供的 unsafe.Pointer。在某些情况下,它会使代码更高效,当然,也更危险。unsafe 包用于 Go 编译器,在编译阶段使用。从名字就可以看出来,它是不安全的,官方并不建议使用。我在用 unsafe 包的时候会有一种不舒服的感觉,可能这也是语...

2019-08-22 17:17:46 140

原创 go select语句

简介go语言的select语句和其它语言有所不同select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。注意select没有case运行的情况下是会阻塞的,如果想要...

2019-08-13 11:27:45 207

转载 go Context深入理解

转载自飞雪无情的博客Context背景 和 适用场景golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。比如有一个网络请...

2019-08-13 11:15:20 260

原创 如何使用bit位更高效的声明协议状态

前言众所周知一个byte由8位bit组成,当我们表示一个状态时没有必要使用整个字节而是转为使用一个字节的一位或连续几位,这样做可以有效的减少协议头长度,提高传输效率。而如何灵活的使用bit表示状态,则需要对位操作比较熟悉。下面通过go语言rpcx协议的设计为示例进行介绍。rpcx使用的字节序是大端序(也是几乎所有网络协议的选择),如果对字节序不够了解的读者可以参考我的这篇博客rpcx协议r...

2019-08-12 20:15:39 619

原创 字节序与go binary库

二进制协议基于文本类型的协议(比如 JSON)和二进制协议都是字节通信,他们不同点在于他们使用哪种类型的字节和如何组织这些字节。文本协议只适用于 ASCII 或 Unicode 编码可打印的字符通信。例如 “26” 使用 “2” 和 “6” 的 utf 编码的字符串表示,这种方式方便我们读,但对于计算机效率较低。在二进制协议中,同样数字 “26” 可使用一个字节 0x1A 十六进制表示,减少...

2019-08-12 16:03:40 2241

转载 Go 反射

转载自赵帅虎的博客飞雪无情的博客简介Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型。它是元编程的一种形式,也是最容易让人迷惑的一部分。本文中,我们将解释Go语言中反射的运作机制。每个编程语言的反射模型不大相同,很多语言索性就不支持反射(C、C++)。由于本文是介绍Go语言的,所以当我们谈到“反射”时,默认为是Go语言中的反射。阅读建议本文中,我们...

2019-08-12 10:54:16 854

转载 nginx try_files指令

转载自博客try_files指令说明try_files指令语法:try_files file … uri 或 try_files file … = code默认值:无作用域:server location其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。需要注意的是,只有最后...

2019-08-08 17:54:57 396

转载 java并发工具类——Phaser

转载自sithcait的博客在JAVA 1.7引入了一个新的并发API:Phaser,一个可重用的同步barrier。在此前,JAVA已经有CyclicBarrier、CountDownLatch这两种同步barrier,但是Phaser更加灵活,而且侧重于“重用”。一、简述1、注册机制与其他barrier不同的是,Phaser中的“注册的同步者(parties)”会随时间而变化,Phas...

2019-08-08 09:02:29 581

转载 深入浅出java semphore

转载自占小狼的博客前言JDK的并发包中提供了几个非常有用的工具类,这些工具类给我们在业务开发过程中提供了一种并发流程控制的手段,本文会基于实际应用场景介绍如何使用Semaphore,以及内部实现机制。Semaphore是什么Semaphore也叫信号量,在JDK1.5被引入,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。Semaphore内部维护了一组虚...

2019-08-07 20:19:30 194

转载 go grountine通讯管道Channel

转载自鸟窝的博客什么是channelChannel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。它的操作符是箭头 <- 。(箭头的指向就是数据的流向)ch <- v // 发送值v到Channel ch中v := <-ch // 从Channel ch中接收数据,并将数据赋值给v...

2019-08-07 17:02:34 452

转载 go goroutine线程模型

转载自guyan0319的博客Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。为了更好理解Goroutine,现讲一下线程和协程的概念线程(Thread):有时被称为轻量级进程(Lightweight Process,LWP),...

2019-08-07 16:27:30 262

转载 go文件操作大全

转载自鸟窝的博客[译]Go文件操作大全参考Go官方库的文件操作分散在多个包中,比如os、ioutil包,我本来想写一篇总结性的Go文件操作的文章,却发现已经有人2015年已经写了一篇这样的文章,写的非常好,所以我翻译成了中文,强烈推荐你阅读一下。原文: Working with Files in Go, 作者: NanoDano介绍万物皆文件UNIX 的一个基础设计就是"万物皆文件"...

2019-08-07 14:59:13 559

转载 redis执行lua脚本

转载自琦彦的博客EVAL 脚本 numkeys 键[键…] arg [arg …]自Redis2.6.0版本起可用。时间复杂度:取决于执行的脚本。EVAL介绍EVAL和EVALSHA用于从Redis2.6.0版本,开始使用内置在Redis中的Lua解释器来评估脚本。EVAL的第一个参数是一个Lua 5.1脚本。脚本不需要定义一个Lua函数(不应该)。这只是一个将在Redis服务器上...

2019-08-07 11:00:10 207

空空如也

空空如也

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

TA关注的人

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