使用ETCD官方提供的API实现分布式锁
此文的目的是我在使用etcd分布式锁的一些记录。
在常见的数据库操作中,大多数业务都是CURD
,公司业务,所属岗位都有可能造成这个问题,这些属于OLTP
应用。
而对应到现在,天级数据量数据库分析操作,替代大部分数据分析的代码,就是OLAP
,直接使用sql
语句进行逻辑操作。
在go中使用goroutine,协程中函数是无法对返回数据直接处理error的。官方库中,有着这么一个收纳子任务error的包:errgroup。
errgroup 包为一组子任务的 goroutine 提供了 goroutine 同步,错误取消功能。
Go调度器,Goroutine是如何调度的,Go协程运行在用户态还是内核态?
这篇文章大概是要解决这几个问题,整理起来有点麻烦,其实前面的问题,大神们已经讲了很多了,我主要是碰到其中最后一个问题,这算是一道面试题,很有意思的面试问题,估计很少有人会深入考虑这个问题,嗯,其中也包括了我。。。
刚学习Goroutine时,就应该会看到一些文章说过,goroutine
是非抢占式的,或者称之为协作式抢占调度,其运行在用户态。
访问策略如图,Apollo
整体由三个部件Portal
、apollo-configservice
和apollo-adminservice
(占用端口8070, 8080, 8090)组成:
快速的部署和更新底层设备需要一个类似于分发二进制文件的平台,根据这个需求,依托于etcd做了一个简略的OTA平台。
ETCD又类似于消息发布和订阅的操作,通过key的目录,可以划分不同的空间,执行不同的任务,可以满足我们的需求。
整体设计如下: