jeffrey11223
码龄8年
求更新 关注
提问 私信
  • 博客:389,133
    社区:10
    389,143
    总访问量
  • 40
    原创
  • 42
    粉丝
  • 0
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2017-10-22
博客简介:

jeffrey11223的博客

查看详细资料
个人成就
  • 获得140次点赞
  • 内容获得64次评论
  • 获得310次收藏
  • 博客总排名438,682名
创作历程
  • 1篇
    2019年
  • 30篇
    2018年
  • 12篇
    2017年
成就勋章
TA的专栏
  • golang
    20篇
  • redis
    7篇
  • mysql
    6篇
  • 消息队列
    4篇
  • mongodb
    3篇
  • 单元测试
    3篇
  • http
    4篇
  • rpc
    1篇
  • websocket
  • docker
    1篇
  • 微服务
    1篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 数据结构与算法
    排序算法
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

76人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

golang结合Kafka消息队列实践(一)

公司决定使用kafka来作为新一代的消息队列来使用,于是开始对kafka的机制,原理,go客户端的使用,各种了解了一番,过程中也遇到了不少的坑,特地写出来,和大家分享,也供自己参考,加深印象。首先,kafka的设计思想,各个角色比如broker,producer,consumer,partition等等还有与它们相关的配置,这里就先不作介绍了,官方文档都有,文章后面也会提到。附上kafka...
原创
博文更新于 2018.06.07 ·
24649 阅读 ·
3 点赞 ·
5 评论 ·
27 收藏

用golang实现一个熔断器

首先贴出仓库地址:https://github.com/JeffreyDing11223/goBreaker这个熔断器实现简单,使用方便,同时大家也可以fork后进行自己需要的改造,当然,也欢迎大家提pr,一起优化goBreaker下面介绍下goBreaker:goBreaker状态机状态转换逻辑初始为closed状态,一旦遇到请求失败时,会触发熔断检测(见下方的 ShouldTri...
原创
博文更新于 2019.01.01 ·
2755 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

用golang实现一个熔断器

首先贴出仓库地址:https://github.com/JeffreyDing11223/goBreaker这个熔断器实现简单,使用方便,同时大家也可以fork后进行自己需要的改造,当然,也欢迎大家提pr,一起优化goBreaker下面介绍下goBreaker:goBreaker状态机状态转换逻辑初始为closed状态,一旦遇到请求失败时,会触发熔断检测(见下方的 ShouldTri...
原创
博文更新于 2019.01.01 ·
2755 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

mysql分库分表技术选型时需要注意的点

首先需要明确的一些概念和问题:原先:一个库一张表,即db和table。水平拆分之后:多个库多张表,即 { db1,db2,db3,… } 和 { table1,table2,table3,… },假设现在有物理机器 { server1,server2,server3,… },那么这三者之间的对应分配关系是?是一对多还是一对一?在中间件看来,shard指的是db这个维度?中间件目前对sq...
原创
博文更新于 2018.12.16 ·
695 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Quic协议介绍和浅析

Quic协议介绍和浅析一,Quic全称是什么?QUIC 全称 Quick UDP Internet Connection, 是Google制定的一种基于 UDP 协议的低时延互联网应用层协议。二,Quic的优势和应用场景1,为什么需要Quic:近三十年来,tcp协议发展得非常缓慢很多网络中间层,比如防火墙、网关等,都强依赖于tcp指定的各类规则,所以tcp的修改很容易由于这些中间环节...
原创
博文更新于 2018.11.24 ·
9180 阅读 ·
9 点赞 ·
0 评论 ·
28 收藏

结合innodb的B+树索引来优化sql查询一例

先上表结构:CREATE TABLE `quote_xxxxx` ( `instrument_id` varchar(20) NOT NULL, `time_type` varchar(20) NOT NULL, `datetime` datetime NOT NULL,... `metal` varchar(20) NOT NULL DEFAULT '', PRIMARY...
原创
博文更新于 2018.09.30 ·
570 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

制作docker镜像构建gcc+boost的容器

基础镜像选用alpine DockerFile如下 :FROM alpine:latestLABEL maintainer="me"LABEL description="An environment with Boost C++ Libraries based on Alpine Linux."ARG BOOST_VERSION=1.67.0ARG BOOST_DIR=boost_...
原创
博文更新于 2018.08.24 ·
2322 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

用go实现的kafka客户端,基于sarama和sarama-cluster

工作中需要将原先的消息队列替换成kafka,于是接触了基于go实现的sarama,又因为sarama不支持consumer group,于是又使用了sarama cluster,同时因为需要尽量保证消费一次的语义,就自己造了个简单的轮子,把sarama和sarama cluster封装到一起,同时实现了保证消费一次的语义,我给它起名为kago。先附上kago的依赖,需要先进行安装:go...
原创
博文更新于 2018.08.10 ·
23873 阅读 ·
1 点赞 ·
1 评论 ·
8 收藏

kafka消息交付语义的分析

在kafka中,在producer和consumer这两个维度上都有三种消息交付的语义:At most once ---- 消息可能会丢失但绝不重传.At least once ---- 消息可以重传但绝不丢失.Exactly once ---- 每一条消息只被传递一次.先来看producerproducer设置中有这么一个选项:每发送一次消息,都会要求broker返回...
原创
博文更新于 2018.08.10 ·
2049 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

golang httpServer对于keepAlive长连接的处理方式

当下http1.1对于长连接是默认开启的,golang的内置httpServer也很好的支持了这一点。今天查阅资料时,发现自己写了这么多的接口,但是对于httpServer是如何实现长连接的,却一时说不上来。于是就去go的src源码里面翻了翻。本文只讨论server端是如何确保长连接的,client端如何确保呢,这里先简要说一下,当调用client.Do()函数后,通过transport去获取...
原创
博文更新于 2018.07.26 ·
10527 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

grpc基于golang的客户端服务端整体预览

proto文件:/** @Title: 服务接口说明* @Description: 接口目录*/service SpotDataHandler { rpc GetProductInfo(GetProductInfoRequest) returns (GetProductInfoResponse) {}//获取所有商品信息}/*** @Title: 统一说明* @D...
原创
博文更新于 2018.07.07 ·
974 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

golang结合Kafka消息队列实践(二)

上周分享了如何使用go来对kafka进行生产和消费,这周接着对kafka消息队列的一些特性来进行使用。 上次讲到kafka有个consumer group的概念,而我们使用的sarama并没有支持,所以这次引入sarama-cluster项目 : go get “github.com/bsm/sarama-cluster”producer的代码不变,参考上一篇文章,consumer的代码改为...
原创
博文更新于 2018.06.15 ·
6905 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

golang处理http response碰到的问题和需要注意的点

在处理http response的时候,偶然发现,body读取之后想再次读取的时候,发现读不到任何东西。见下方代码:
原创
博文更新于 2018.05.28 ·
18918 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

mongodb中upsert和insert的使用注意

新服务已经上线跑了差不多两周,暴露出一个问题,我们发现db进行upsert的速度越来越慢,以前两个小时就能消费完队列里的数据,现在需要四五个小时,并且消耗时间是呈现不断上升的趋势。所以我觉得应该是和upsert这个操作有关。问题定位: 1,由于是写多读少的场景,所以我们并没有对集合加入索引。并且经查阅资料发现,mongodb索引的存储机制和mysql不同,mysql的索引是存储在硬盘中,需要...
原创
博文更新于 2018.05.18 ·
40391 阅读 ·
8 点赞 ·
0 评论 ·
12 收藏

发现mgo的一个坑,以及解决过程

碰到的问题: 在使用”https://github.com/go-mgo/mgo“过程中发现,当大量多次交互之后,也就是服务运行大概一到两个小时之后,会出现cpu占用率极速上升的情况,并且是必现的。所以我用pprof的火焰图来分析了一下,到底是哪里占用了cpu: 从火焰图能很明显的看出来,是 SaltPassword() 占用了大部分资源,即 func (s *Session) ...
原创
博文更新于 2018.05.04 ·
2453 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

golang服务与mongodb交互,以及驱动mgo源码浅析

公司大数据部门有一个需求,要将所有的交易数据进行落地,以便进行分析和价格预测等等。具体场景: 1,写多读少 2,数据量庞大,并且每天日益增长为什么选mongodb: 1,mongodb是弱数据结构模式,每个文档之间的结构互不影响,日后如果需要增加字段直接增加即可,对集合不会产生任何影响。 2,分布式,面对庞大的数据量,mongo原生支持sharding存储。 3,无事务和join...
原创
博文更新于 2018.05.02 ·
1866 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

redis主从加哨兵模式的实践

redis是一个基于内存的kv数据库,其吞吐性能可想而知,随着redis应用得越来越广泛,以及对它的依赖程度越来越高,它的高可用便成了需要考虑的一个很重要的点。于是今天在自己电脑上实践了一下redis的主从模式和哨兵监控。基本架构:一主二从,加一哨兵先为master和slave编辑配置文件: 为它们配置ip和端口,这里6379是master,6380和6381为slave...
原创
博文更新于 2018.04.22 ·
1391 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

golang sync.once的应用

sync.once是被用于全局执行单次函数的场景,用法比较简单。 我们用到它主要是为了单元测试的执行,因为有些单元测试的函数需要和db交互,还有log的初始化,config配置文件的初始化,等等,这些其实都只需要执行一次就够了,对于单元测试来说,如何知道这些是否执行过呢,那就用sync.once,这样我就不需要关心这些是否重复执行,只要在每个用例的最前面执行sync.once的方法就行了。s...
原创
博文更新于 2018.04.13 ·
1623 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

基于gin的单元测试之httptest

目前我们的后端服务提供大量的restful api接口,每次上线都需要测试那边回归一遍这些接口,造成人力的浪费。正好借着这次单元测试和持续集成,我们引入了httptest框架,结合gin来做接口单元测试。httptest是golang官方提供的一个包,位于/src/net/http/httptest下。其原理的话我也看了源码研究了下,这里大致说下,它有一个ResponseRecorder结...
原创
博文更新于 2018.04.04 ·
9113 阅读 ·
0 点赞 ·
1 评论 ·
5 收藏

golang单元测试之mock

搞单元测试,如果碰到这些情况: 1,一个函数,内部包含了很多并且很深的调用,但是如果单单测这个函数,其实实现的功能很简单。 2,一个函数,包含了其他还未实现的调用。 3,函数内部对数据的要求极为苛刻。那么这时候就可以考虑使用mock来处理。mock,简而言之就是可以通过注入我们所期望返回的数据,或者我们所期望传递的参数,来避免上面那些情况,其原理则是通过反射来实现。这次就来看看g...
原创
博文更新于 2018.03.30 ·
8069 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏
加载更多