gdb 查看golang程序的入口和启动 流程

Posted by 夏泽民

文件:startup.go ,代码如下:



etcd

Posted by 夏泽民

etcd raft是目前使用最广泛的raft库,如果想深入了解raft请直接阅读论文 “In Search of an Understandable Consensus Algorithm”(https://raft.github.io/raft.pdf), etcd raft在etcd, Kubernetes, Docker Swarm, Cloud Foundry Diego, CockroachDB, TiDB, Project Calico, Flannel等分布式系统中都有应用,在生成环境得到了验证。 传统raft库的实现都是单体设计(集成了存储层、消息序列化、网络层等), etcd raft继承了简约的设计理念,只实现了最核心的raft算法, 这样更加的灵活。etcd将网络、日志存储、快照等功能分开,通过独立的模块实现,用户可以在需要时调用。etcd自身实现了自己的一套raft配套库:etcd-wal(用于存储日志),snap(用于存储快照),MemoryStorage(用于存储当前日志、快照、状态等信息以供raft核心程序使用)。 https://raft.github.io/raft.pdf 集群中最核心内容是保证数据一致性,那么如何保证数据一致性?在业界有很多算法、协议,例如:Paxos,Raft。         Raft协议相比之前协议Paxos等,算是年轻协议,而且Raft协议比较简单,容易实现。



cqrs 命令和查询责任分离

Posted by 夏泽民

https://mp.weixin.qq.com/s/mfjtDrdVQYfLuh4pNaHpZw 命令和查询责任分离(CQRS)是指将数据存储的读取和更新操作分开的一种模式。实施 CQRS 据称可以提高性能、可扩展性和安全性。迁移到 CQRS 模式所创造的灵活性,使系统能够随着时间的推移而更好地发展。不过 CQRS 模式有一些众所周知的陷阱,本文介绍了三种实用的场景。



schedt systemon

Posted by 夏泽民

https://blog.csdn.net/u010853261/article/details/84790392 http://supertech.csail.mit.edu/papers/steal.pdf https://xargin.com/go-scheduler/ http://xiaorui.cc/archives/5251 https://studygolang.com/articles/11865



mpg

Posted by 夏泽民

传统的并发形式:多线程共享内存,这也是Java、C#或者C++等语言中的多线程开发的常规方法,其实golang语言也支持这种传统模式,另外一种是Go语言特有的,也是Go语言推荐的:CSP(communicating sequential processes)并发模型。不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。 “不要以共享内存的方式来通信,相反,要通过通信来共享内存。”



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required