Go里面竟然还有单飞?—(singleflight)

singleflight,官方解释其为:singleflight提供了一个重复的函数调用抑制机制。

阅读全文

cache aside模型保持数据一致性

Cache Aside 模型中,读缓存 Miss 的回填操作,和修改数据同步更新缓存,包括消息队列的异步补偿缓存,都无法满足 “Happens Before”,会存在相互覆盖的情况。

阅读全文

使用docker-compose创建mongoDB副本集

创建容器

使用docker-compose部署mongoDB副本集环境。

docker-compose.yml文件:

阅读全文

gRPC负载均衡代码解析(未完成)

ETCD Resolver 示例

ETCD :gRPC naming and discovery

阅读全文

ardanlabs gotraing,深入理解Go及相关编程理念

无意中在V站发现了有人提到ardanlabs的课程,课程怎么样不清楚,贵是真的很贵(699刀了),但其在GitHub上的文档我觉得写的很好。

Ultimate Go:https://github.com/ardanlabs/gotraining/blob/master/topics/go/README.md

阅读全文

gRPC负载均衡

服务内部访问中,负载被均匀地分发给所有的后端服务,在任何时刻,最忙和最不忙的节点永远消耗同样数量的CPU。负载均衡(Load Balancing)是微服务可用性比较重要的一个技术,其目标:

  • 均衡的流量分发。

阅读全文

databus源码浅析

消息队列一直是一个神兵利器,我之前也写过用于简化kafka消费和生产的中间件,其完整版也尝试在一些项目中使用。效果也还不错,这里也是巧然了解到可以增加Kafka单一partition并发消费能力的方法(为了保证partition而使用单一线程进行消费),也找到了解决方法,这里是对代码的一些分析,完整的注释解析就不放了。

阅读全文

protobuf扩展插件编写

Protocol Buffers(简称:ProtoBuf)是一种序列化数据结构的协议。对于透过管道(pipeline)或存储资料进行通信的程序开发上是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,用于将这些数据结构产生或解析资料流。——维基百科

阅读全文

etcd终于解决冲突了

如题,etcd终于解决了一个老大难的问题,就是依赖问题,它简直不要让人再多痛苦了。

在新发布的etcd 3.5中,已经解决了对Go Module 的支持,并将之前大的 etcd 模块按功能进行了拆分,实现了 etcd 的模块化等,解决了各种 “go get fail”、依赖复杂、循环依赖、以及强制依赖过低的 gRPC 版本等问题,使用起来更简单了。

阅读全文