打开我们手机上的各种应用,你会发现,大多应用基本上都是用微服务架构实现的,比如淘宝、微信、微博等都是典型的微服务架构。
微服务架构可以将单一的应用程序划分为一组小的服务,每个服务独立运行在自己的进程中,服务之间互相协调、互相配合。
如果要增加某种功能,只需在特定的某种服务中增加该功能,并不影响整体进程的架构,降低了系统耦合性,并提供了更加灵活的服务以及支持敏捷开发和高并发等需求。因此,越来越多的大型应用系统开始采用微服务架构。
但在微服务架构中,还必须调用不少服务才能完成这一项功能,因而服务之间如何互相调用就变成微服务架构中的一个关键问题。
不过被多数企业用来构建微服务的Go语言,提供远程过程调用(RPC)的支持:TCP、HTTP、JSONRPC。但Go的RPC包是独一无二的RPC,它和传统的RPC系统不同,它只支持Go开发的服务器与客户端之间的交互,因为在内部,它们采用了Gob来编码。