Go语言学习——基于GRPC和ETCD实现服务注册、发现与负载均衡

1.简介<br /> &emsp;&emsp;最近在做服务拆分,目标就是先抽出一个流量解析模块,主要是负责流量的接入、协议的转化,将所有媒体请求都以统一接口访问后续服务,因为时间紧迫,服务间访问、负载均衡采用的是比较传统的处理方案——新服务通过内网LB访问后续服务,该种方案的最大问题就是在原有上、下层服务之间又加了一层,即数据链路又增加了一环,增加性能开销;后来利用周末时间,研究了软负载策略(又称客户端负载策略 ),该方案的特点就是将LB放在服务消费方,服务消费方通过LB组件获知可以提供服务的...阅读全文

2020-07-19 16:42:29

Go语言学习——Go语言的GMP调度模型整理

1.简介<br /> &nbsp;&nbsp;&nbsp;&nbsp;协程是G语言的一大亮点,关于协程的调度机制还不甚了解,通过查看源码和搜资源,对Go的GMP调度模型做了整理;针对一些资料图例简单、一些问题讲解不清的问题,重新画了流程图,由于时间有限,本文主要是围绕流程图讲解,后续有空在针对源码部分,逐个详细介绍。<br /> 2.GMP<br /> 2.1构成<br /> 2.1.1元素<br /> &nbsp;&nbsp;&nbsp;&nbsp;就本质而言,协程是用户态下的执...阅读全文

2020-08-25 16:39:27

Go语言学习——深入学习一致性算法Raft

1.简介<br /> &nbsp;&nbsp;&nbsp;&nbsp;了解分布式的同学都知道,在分布式理论中有个CAP定理,CAP代表分布式系统的三个要素:一致性(C)、可用性(A)、分区容错性(P),本文要介绍的Raft算法,它就是实现日志复制一致性的算法;之前用ETCD做服务注册、发现时,有接触过一点Raft,但是,了解的不够深入,正好前段时间休了个长假,就研读论文、结合网上资料,按照自己的理解、重新整理如下,如有不当或者疑问之处,还请各位大佬留言、多多指点。<br /> 1.1由来...阅读全文

2020-08-27 12:11:15