高负载的微服务集群,必然会用到些缓存. 缓存的过期时间很关键,太长浪费内存,太短缓存命中率下降. T := x + y * Rand() 在采用LRU算法的基础上, 用上面这个公式设定缓存过期时间,可以实现 LR...
如果项目中,到处用了一个全局对象的指针,那一定是很糟糕的. 我们假设这个对象就是Conf,也就是全局配置. 现在要改进代码,实现Reload Conf. 建议以下的改法: 也就是说,用一个GetConf()函数替代...
频繁的创建和销毁goroutine带来的开销不仅仅是goroutine创建和销毁本身. 更大的开销是由于goroutine的Stack一开始只有2KB, 而大部分复杂的业务都需要更多的Stack. 新创建goroutine, 还需要付...
上篇Blog,我提出其实未来分布式系统是肯定要去RPC化的。 以Web系统为例,AJAX就将被websocket彻底取代。以RPC思想为核心的AJAX,其实无端增加了复杂度,把本来简单的消息通讯异化成和HTTP状...
给git设置了全局代理,依然不起作用,可以这么设置: http_proxy=127.0.0.1:1087 go get -u -d -v xxxxx/xxxx
先看代码: https://play.golang.org/p/GlM23bSW6zf 可见: 1. for 循环变量只有一份 2. 单行的defer和go都是在当前时刻求值。 如果方法的修饰符是一个指针,那么求值得到的必报是保存了这个...
在大规模分布式系统的架构上,微服务系统是现在很多大型互联网公司的架构方向。 这是一个务实的很好的方向,相对于旧的宏服务来说。 然而,像淘宝这种规模的系统,微服务很容易陷入一个困境,...
《记一次latency问题排查:谈Go的公平调度的缺陷》一文发现了一个现象:从网络消息可读,到读网络的goroutine被再次调度,中间花费了4.368ms !!! 很遗憾的是作者想当然的认为这是由于Go的调度...
目前,当Go需要和C/C++代码集成的时候,大家最先想到的肯定是CGO。毕竟是官方的解决方案,而且简单。 但是CGO是非常慢的。因为CGO其实一个桥接器,通过自动生成代码,CGO在保留了C/C++运行时...
Go语言的interface{} 本质上是一个结构,含有一个type字段,一个pointer字段。 很多初学者会拿一个已经在某种情况下被赋予类型的interface{}和nil比较,然后惊讶的发现两者居然不等。 其实,...
GOMAXPROCS 用默认的,就是CPU的硬件线程数目, 对于大部分File IO密集的应用是不合适的。 至少应该配置到硬件线程数目的5倍以上, 最大1024。 具体参见。 这是为什么呢? 我们来复习下Go的线...
mangos 基于SP/nanomsg 协议,比较难用。 ProtoActor 类似Erlang的实现,比较新,完备度较低,但是性能还不错。 最近又多了一个选择,vice 以channel为抽象的跨机器的消息层。支持NSQ/Red...
hprose有十几年的历史了,稳定性和跨语言特性是非常的突出的。 hprose-golang是其go语言版本,使用方便简洁,适合任何想构建微服务集群,尤其是跨语言的微服务集群的人选用。...
mangos nanomsg是一个消息协议SP ("Scalable Protocols")的c语言实现,而mangos用golang实现了SP ("Scalable Protocols")。 消息协议不同于通常我们说的消息队列,是指一个简单的传输会话协议...
微服务并不是一定是基于RPC或者REST的,也可以是基于消息的。 消息不一定是走消息队列,也可以是Erlang那种Actor模型的。 在Golang、C#、JS、Java「kotlin」领域,推荐proto.actor库「该库在...
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定删除此文章吗?
动弹删除后,数据将无法恢复
评论删除后,数据将无法恢复