专精专业和冗余流程的管理应该在什么时候把握平衡
在写程序和架构的过程中,经常会面临到底是以快速实现功能为目标取向的单点服务系统,还是在开始设计架构和功能的时候就考虑周全的分布式具有冗余的系统架构。 以技术角度看,得出合理的结论并不是特别难。在前期快速产品迭代争取竞争优势的时期,只要能保证基本的稳定性,当然是怎么快怎么来,单点未必就不是最佳选择。
继续阅读 »
微服务(分布式)架构下,关于事务补偿机制
整个17年整理过不少遇到的case,在笔记内太凌乱,太懒没做整理,瞬间已经12月,17年算是结束了。整理一个笔记,给2017留下点回忆哈哈 :)
概述
微服务,或是非集中式应用,也就是系统架构做拆分后,会涉及一个非常典型的问题,就是事务的问题。不管是特别在意一致性的金钱相关的,还是其他业务场景,都不同程度存在一个操作流转与多个服务之间的问题。
这其中涉及的分布式事务问题,随便搜一把,够看一礼拜了,不过多数都是重复的,TCC, 二阶段,三阶段,最重要还是在业务中挖掘发现自己试用的场景。 这里总结表述的是事务性数据补偿的方案。
继续阅读 »
用golang实现内存池
用golang做一个预分配的内存池,代码可以很小量做到。 实现细节,主要是一个链表,用来保存内存块.
定义2个值:
num 每次需要增长内存池的时候,预分配的内存块数量
size 预分配时,单个内存块的大小
继续阅读 »
用redis造一个分布式rate limiter
号称分布式, 其实是装逼了呢。我也潮流用一发高逼格词 =。=
场景是: 我有一个服务, 需要对用户请求进行限速, 根据uid或者其他user信息, 服务进程是多节点的
经典的限速方式有很多种, token bucket(令牌桶), leaky bucket(漏桶), 它们的区别基本是对Burst(突发流量)的限制不一样,token bucket能允许一定突发流量, 具体算法查看wiki描述吧。
继续阅读 »
goima>是B站开源的一个方便横向扩容的im系统,用来做聊天室系统非常合适,代码质量也非常不错。
组件 router, logic, comet, job
继续阅读 »
Hot-Samer.club一个色色的samer网站
hot-samer.club
过年无聊,整理的一个图片网站
代码在 这里
继续阅读 »
# saltstack DSL
用salt很多人都在用,我们也在用,用的还算较多,现在所有服务,自定义服务,常用系统服务,包安装,git库更新等都进入salt管理了
salt默认采用的是yaml jinja模版做sls的语法渲染,可以自定义macro, 可在pillar里根据每个minion不同来定义不同的lib,然而这些都不是今天的重点
继续阅读 »
celery 初始化过程
consumer初始过程:
这些步骤都是celery/bootsteps.py中 StartStopStep的子类,Gossip例外, 它是ConsumerStep的子类;
他们被封装在Blueprint (蓝图?)中,
继续阅读 »
common.css
* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !important;}blockquote {margin: 0;padding: 0 15px;color: #777;bor
继续阅读 »
celery source code analysis
最近用celery做了分布式消息队列服务(我们取名hera), 同时稍微改了一些strategy, celery的一些retry的逻辑, 增加了pause功能,并且为项目封装了一个简单的go-celery, 现在它支持:
继续阅读 »