Elivs Blog

ENNERVATE

Algorithm-Platform

算法平台服务实践

写在前面 互联发展近几年,所有火热的产品都会增加上算法赋能。怎么猜中客户心理,成为了产品用户增长必不可少的一环。那怎么为自家的算法业务赋能。就是这篇文章想探究的内容。「本文旨在讨论算法工程化共性的部分,无特指任何框架平台」 做好算法工程化意味着,建设一个AlgorithmComb平台。「自己瞎取的名字,如有雷同,纯属巧合,请不要代入任何框架与平台」 旨在提供一站式的服务,覆盖算力管理、...

GoRoutine-Errgroup

Errgroup

ErrGroup 如果您不需要对错误进行任何进一步的处理,可以尝试使用ErrGroup! ErrGroup 本质上是一个包装好的 sync.WaitGroup,用于从启动的 goroutine 中捕获错误。 WaitGroup 这是一个普通使用 WaitGroup 没有错误的示例(来自 godoc,并加了一些改造): 1 2 3 4 5 6 7 8 9 10 11 12 13 14...

Opentracing

链路追踪

Logging(ELK),Metrics(Prometheus) 和 Tracing(Zipkin) Logging,Metrics 和 Tracing 有各自专注的部分。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。 Metrics - 用于记录可聚合的数据。例如,队列的当前深度可被定义为一个度量值,在元素入队或出队时被...

Sync-Pool

golang-cache

是什么 sync.Pool 是 sync 包下的一个组件,可以作为保存临时取还对象的一个“池子”。个人觉得它的名字有一定的误导性,因为 Pool 里装的对象可以被无通知地被回收,可能 sync.Cache 是一个更合适的名字。 有什么用 对于很多需要重复分配、回收内存的地方,sync.Pool 是一个很好的选择。频繁地分配、回收内存会给 GC 带来一定的负担,严重的时候会引起 CPU ...

Kubernetes-Introduce

kubernetes介绍

下面是简单介绍一下k8的各个组件,后面会详读源码展开介绍。 Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态; apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler负责资源的调度,按照...

Unsafe-Map

redis分布式锁

map为什么说是非线程安全的 因为hash map 的内存是按照2的倍数开辟的,当前面开辟的内存不够的时候,会新开辟一段内存,将原来内存的数据转移到新的内存块中,这个过程是没有加锁的,如果这个时候同时有个读的线程过来获取这块内存数据,就会出现安全问题。 但本人实测,在以上扩容情况下也会报fatal error: concurrent map read and map write ...

Redis-Lock

redis分布式锁

Redis 分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢? 因为我发现网上 99% 的文章,并没有把这个问题真正讲清楚。导致很多读者看了很多文章,依旧云里雾里。例如下面这些问题,你能清晰地回答上来吗? 基于 Redis 如何实现一个分布式锁? Redis 分布式锁真的安全吗? Redis 的 Redlock 有什么问题?一定安全吗? 业界争论 Redlo...

Redis-Transaction

redis事务

Redis事务命令 Redis事务(transaction)提供了以下五个命令,用于用户操作事务功能,其分别是: 命令 描述 MULTI 标记一个事务块的开始 EXEC 执行所有事务块内的命令 DISCARD ...

Redis-Single-Thread

redis单线程模型

redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。 R...

Redis-Struct-Type

redis基础数据类型

Redis的数据结构与实现 String 常用命令: set,get,EXISTS,DEL,SETEX,decr,incr,mget 等。 Redis 官方提供了在线的调试器,可以在里面敲入命令进行操作:http://try.redis.io/#run String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-valu...