Go并发模型: pipeline中FAN模式(fanout,fanin)
流水线模型在编程中是非常常见的,但扇入扇出模型可能就较少听闻了。
以汽车组装为例,汽车生产线上有个阶段是给小汽车装4个轮子,可以把这个阶段任务交给4个人同时去做,这4个人把轮子都装完后,再把汽车移动到生产线下一个阶段。(这是流水线)
这个过程中,就有任务的分发,和任务结果的收集。其中任务分发是FAN-OUT,任务收集是FAN-IN。
流水线模型在编程中是非常常见的,但扇入扇出模型可能就较少听闻了。
以汽车组装为例,汽车生产线上有个阶段是给小汽车装4个轮子,可以把这个阶段任务交给4个人同时去做,这4个人把轮子都装完后,再把汽车移动到生产线下一个阶段。(这是流水线)
这个过程中,就有任务的分发,和任务结果的收集。其中任务分发是FAN-OUT,任务收集是FAN-IN。
Cache Aside 模型中,读缓存 Miss 的回填操作,和修改数据同步更新缓存,包括消息队列的异步补偿缓存,都无法满足 “Happens Before”,会存在相互覆盖的情况。
无意中在V站发现了有人提到ardanlabs
的课程,课程怎么样不清楚,贵是真的很贵(699刀了),但其在GitHub上的文档我觉得写的很好。
Ultimate Go:https://github.com/ardanlabs/gotraining/blob/master/topics/go/README.md
服务内部访问中,负载被均匀地分发给所有的后端服务,在任何时刻,最忙和最不忙的节点永远消耗同样数量的CPU。负载均衡(Load Balancing)是微服务可用性比较重要的一个技术,其目标:
均衡的流量分发。
消息队列一直是一个神兵利器,我之前也写过用于简化kafka消费和生产的中间件,其完整版也尝试在一些项目中使用。效果也还不错,这里也是巧然了解到可以增加Kafka单一partition并发消费能力的方法(为了保证partition而使用单一线程进行消费),也找到了解决方法,这里是对代码的一些分析,完整的注释解析就不放了。