用golang实现一个熔断器

首先贴出仓库地址:https://github.com/JeffreyDing11223/goBreaker 这个熔断器实现简单,使用方便,同时大家也可以fork后进行自己需要的改造,当然,也欢迎大家提pr,一起优化goBreaker 下面介绍下goBreaker: goBreaker状态机 状...

2019-01-01 15:38:14

阅读数 547

评论数 0

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

首先需要明确的一些概念和问题: 原先:一个库一张表,即db和table。水平拆分之后:多个库多张表,即 { db1,db2,db3,… } 和 { table1,table2,table3,… },假设现在有物理机器 { server1,server2,server3,… },那么这三者之间的...

2018-12-16 20:57:28

阅读数 118

评论数 0

Quic协议介绍和浅析

Quic协议介绍和浅析 一,Quic全称是什么? QUIC 全称 Quick UDP Internet Connection, 是Google制定的一种基于 UDP 协议的低时延互联网应用层协议。 二,Quic的优势和应用场景 1,为什么需要Quic: 近三十年来,tcp协议发展得非常缓慢 很多...

2018-11-24 16:01:46

阅读数 1776

评论数 0

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

先上表结构: CREATE TABLE `quote_xxxxx` ( `instrument_id` varchar(20) NOT NULL, `time_type` varchar(20) NOT NULL, `datetime` datetime NOT NULL, ...

2018-09-30 10:30:41

阅读数 182

评论数 0

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

基础镜像选用alpine DockerFile如下 : FROM alpine:latest LABEL maintainer="me" LABEL description="An environment with ...

2018-08-24 20:25:58

阅读数 414

评论数 0

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

工作中需要将原先的消息队列替换成kafka,于是接触了基于go实现的sarama,又因为sarama不支持consumer group,于是又使用了sarama cluster,同时因为需要尽量保证消费一次的语义,就自己造了个简单的轮子,把sarama和sarama cluster封装到一起,同时...

2018-08-05 22:51:08

阅读数 5219

评论数 1

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

当下http1.1对于长连接是默认开启的,golang的内置httpServer也很好的支持了这一点。今天查阅资料时,发现自己写了这么多的接口,但是对于httpServer是如何实现长连接的,却一时说不上来。于是就去go的src源码里面翻了翻。 本文只讨论server端是如何确保长连接的,cli...

2018-07-26 16:35:19

阅读数 2707

评论数 0

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

proto文件: /* * @Title: 服务接口说明 * @Description: 接口目录 */ service SpotDataHandler { rpc GetProductInfo(GetProductInfoRequest) returns (GetProductIn...

2018-07-06 20:52:31

阅读数 484

评论数 0

kafka消息交付语义的分析

在kafka中,在producer和consumer这两个维度上都有三种消息交付的语义: At most once ---- 消息可能会丢失但绝不重传. At least once ---- 消息可以重传但绝不丢失. Exactly once ---- 每一条消息只被传递一次. 先来看...

2018-06-22 19:59:51

阅读数 622

评论数 0

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

上周分享了如何使用go来对kafka进行生产和消费,这周接着对kafka消息队列的一些特性来进行使用。 上次讲到kafka有个consumer group的概念,而我们使用的sarama并没有支持,所以这次引入sarama-cluster项目 : go get “github.com/bsm/s...

2018-06-15 18:42:16

阅读数 2820

评论数 0

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

公司决定使用kafka来作为新一代的消息队列来使用,于是开始对kafka的机制,原理,go客户端的使用,各种了解了一番,过程中也遇到了不少的坑,特地写出来,和大家分享,也供自己参考,加深印象。 首先,kafka的设计思想,各个角色比如broker,producer,consumer,partit...

2018-06-07 20:49:28

阅读数 9416

评论数 2

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

在处理http response的时候,偶然发现,body读取之后想再次读取的时候,发现读不到任何东西。见下方代码:

2018-05-25 20:50:22

阅读数 5054

评论数 0

mongodb中upsert和insert的使用注意

新服务已经上线跑了差不多两周,暴露出一个问题,我们发现db进行upsert的速度越来越慢,以前两个小时就能消费完队列里的数据,现在需要四五个小时,并且消耗时间是呈现不断上升的趋势。所以我觉得应该是和upsert这个操作有关。 问题定位: 1,由于是写多读少的场景,所以我们并没有对集合加入索引。...

2018-05-18 16:31:51

阅读数 10463

评论数 1

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

碰到的问题: 在使用”https://github.com/go-mgo/mgo“过程中发现,当大量多次交互之后,也就是服务运行大概一到两个小时之后,会出现cpu占用率极速上升的情况,并且是必现的。 所以我用pprof的火焰图来分析了一下,到底是哪里占用了cpu: 从火焰图能很明显的看出...

2018-05-04 19:50:35

阅读数 560

评论数 0

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

公司大数据部门有一个需求,要将所有的交易数据进行落地,以便进行分析和价格预测等等。 具体场景: 1,写多读少 2,数据量庞大,并且每天日益增长 为什么选mongodb: 1,mongodb是弱数据结构模式,每个文档之间的结构互不影响,日后如果需要增加字段直接增加即可,对集合不会产生任何影...

2018-04-29 17:41:47

阅读数 858

评论数 1

redis主从加哨兵模式的实践

redis是一个基于内存的kv数据库,其吞吐性能可想而知,随着redis应用得越来越广泛,以及对它的依赖程度越来越高,它的高可用便成了需要考虑的一个很重要的点。 于是今天在自己电脑上实践了一下redis的主从模式和哨兵监控。 基本架构:一主二从,加一哨兵 先为master和slave编辑配置...

2018-04-22 23:18:36

阅读数 871

评论数 0

golang sync.once的应用

sync.once是被用于全局执行单次函数的场景,用法比较简单。 我们用到它主要是为了单元测试的执行,因为有些单元测试的函数需要和db交互,还有log的初始化,config配置文件的初始化,等等,这些其实都只需要执行一次就够了,对于单元测试来说,如何知道这些是否执行过呢,那就用sync.once...

2018-04-13 18:43:34

阅读数 627

评论数 0

基于gin的单元测试之httptest

目前我们的后端服务提供大量的restful api接口,每次上线都需要测试那边回归一遍这些接口,造成人力的浪费。正好借着这次单元测试和持续集成,我们引入了httptest框架,结合gin来做接口单元测试。 httptest是golang官方提供的一个包,位于/src/net/http/httpt...

2018-04-04 16:53:04

阅读数 2335

评论数 2

golang单元测试之mock

搞单元测试,如果碰到这些情况: 1,一个函数,内部包含了很多并且很深的调用,但是如果单单测这个函数,其实实现的功能很简单。 2,一个函数,包含了其他还未实现的调用。 3,函数内部对数据的要求极为苛刻。 那么这时候就可以考虑使用mock来处理。 mock,简而言之就是可以通过注入我们所期望...

2018-03-30 21:01:58

阅读数 3264

评论数 0

走进golang单元测试

工作需求,各个服务的代码需要陆陆续续加入单元测试。作为这次单元测试和持续集成持续发布的推动人,这几天都在查找golang单元测试相关的资料和实践。 单元测试的作用: 提高代码的可维护性。 代码的可维护性是指增加一个新功能,或改变现有功能的成本,成本越低,可维护性即越高。 是修改代码乃至未来...

2018-03-23 20:12:35

阅读数 315

评论数 0

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