【微服务实战序列】本文是使用微服务创建应用系列的第五篇文章。第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点;第二和第三篇描述了微服务架构模块间通讯的不同方面;第四篇研究了服务发现中的问题。本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题。 我要晨读
【微服务实战序列】这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。 我要晨读
【微服务实战序列】在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分布式应用是运行在多台机器上的。一般来说,每个服务实例都是一个进程。在这篇文章中,我们将讨论系统服务之间如何通信。 我要晨读
【微服务实战序列】当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种API Gateway的方法。 我要晨读
【微服务实战序列】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 读者将会从中学到方法,并且和单体式架构模式进行对比。 我要晨读
北京时间2016年2月18日凌晨,在Go 1.5发布 半年后,Go 1.6正式Release 了,与Go 1.5的“惊天巨变”(主要指Go自举)相比,Go 1.6的Change 算是很小的了。我们来看看Go 1.6中哪些变化值得我们关注。主要由:cgo、HTTP/2、Templates、Runtime GC 延迟等。 我要晨读
go-fuzz是一款随机测试(Random testing)工具。对于随机测试想必很多人都比较陌生,我也不例外。至少在接触go-fuzz之前,我从未在golang或其他编程语言中使用过类似的测试工具(c/c++开发者可以使用afl-fuzz),本文介绍 Go语言随机测试工具go-fuzz。 我要晨读
CockroachDB GC优化总结。本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 我要晨读
【Go语言TCP Socket编程】Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流。 我要晨读
D、GO、Rust 谁会在未来取代 C?为什么?每一个语言都有一些基础优势(我称之为“十倍优势”,因为在一定的基准上比较其他确实效率更高)和数个挑战。这些语言在未来能否取代 C 语言取决于它们如何利用它们的十倍优势,并且如何克服他们的数个挑战。 我要晨读
关于Go错误处理的资料和视频已有许多,Go authors们也在官方Articles和Blog上多次提到过一些Go error handling方面的一些tips和best practice,这里仅仅算是做个收集和小结,尽视野所及。 我要晨读
本文分析了Golang的socket文件描述符和goroutine阻塞调度的原理。代码中大部分是Go代码,小部分是汇编代码。完整理解本文需要Go语言知识,并且用Golang写过网络程序。更重要的是,需要提前理解goroutine的调度原理。 我要晨读
开源项目 分布式 NewSQL 数据库 TiDB 和 分布式缓存 Codis 的 创始人 刘奇,给大家介绍一下 NewSQL 与 TiDB 的设计实现, 未来的一些 Roadmap 以及 一些做开源项目的心得。 我要晨读
Go以简洁著称,但简洁中不乏值得玩味的小细节。这些小细节不如goroutine、interface和channel那样"高大上","屌 丝"得可能不经常被人注意到,但它们却对理解Go语言有着重要作用。关于Go,你可能不注意的7件事:本文较Low,适合初学者,高手可飘过:) 我要晨读
Golang在京东列表页实践总结:描述了目前的状况和为什么选择Go语言作为服务端语言。给出了一些设计架构图、遇到的一些问题和解决方案等。虽然没有过多的细节,但也值得一读。 我要晨读
var a, b, c = f() + v(), g(), sqr(u()) + v(); func f() int {return c}.... 这样一个复杂的变量初始化语句之后,a、b、c三个变量的值是多少呢?如果感觉迷惑,可以来看看这篇post:“理解Golang语句中的求值顺序”。 我要晨读
Go语言最有用的特性是将并发作为第一支持的语言,使用协程goroutine,非常容易实现代码的并发,这使得Go成为网络类应用的重要选择,本文以银行转账为例,阐述了Go1.5新版本中如何使用协程实现并发。该文还指出了在Go1.5版本之前默认所有协程只是运行在单个进程,并不支持多核CPU并行计算,1.5以后提升到支持多核。 我要晨读
Go 1.5中加入了一个experimental feature: vendor/。这个feature不是Go 1.5的正式功能,但却是Go Authors们在解决Go被外界诟病的包依赖管理的道路上的一次重要尝试。本文和大家一起来理解下vendor这个新feature。 我要晨读
是否担心自己的Go服务挂掉?supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。当然也可以用来管理golang的进程。本文介绍如何使用 supervisor 管理 golang 进程。 我要晨读
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案相比,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案等。本文是Consul的入门介绍,并用一些例子说明如何使用Consul实现服务的注册和发现。 我要晨读