分布式与gRPC | 第105期
分布式系统已经无处不在,作为开发者,又岂能熟视无睹,更不能一无所知。
这里就从动机、框架、协议和典型工具包这4方面简要介绍一些分布式系统搭建的一些要素和特点。
单机计算能力有限,要进行大规模计算时,分布式系统是一种常规且性价比高的构建方案。
想要在单点故障的情况下保持系统稳定性,分布式也是一个不错的选择。事实上,目前主流的解决方案也正是这样。
除了人为设计,有些场景天然就是分布式的。
如果想要在不同端上协同工作,构建完整强大的生态链,分布式也是一种不错的选择。
单中心框架是一种非常常见的结构,很多复杂系统都是用单中心的基础构建出来的。不过如果中心节点出现故障或者被劫持,那就非常危险了。
P2P框架中,中心节点的作用没有那么强,但如果出故障那也是灾难性的。
去中心化是这些年的热门技术,安全倒是没得说,但通讯效率比较低。
互联网中常用的框架是多用户对应对服务器的结构。
除了以上所说,还有一种分层结构,为了获得一定规模,同时控制复杂度,有一些系统正是这样设计的。
关于更多结构,可以发挥你的想象力......
不同实体之间进行通讯需要彼此都能听懂的协议,如果实体类型比较多,那么最好选择一种统一的协议。
无论是压缩后的大小还是编解码的速度,ProtoBuffer都是一种非常高效的协议。
ProtoBuffer的消息由message关键字定义,消息中的每个字段都需要指明类型和协议序号。
ProtoBuffer官网展示支持6种语言,但实际上,支持几乎所有主流的编程语言。可以很简单地直接编译proto文件产生对应语言的源代码文件。
gRPC可以保证跨语言的不同模块之间的兼容性,这对于复杂庞大的系统而言是一个振奋的消息。
实际的gRPC通讯比较复杂,但用户只需要像调用本地函数一样调用gRPC的API即可。
一个gRPC服务由service关键词定义,一个gRPC的API由rpc关键词定义。
如果单个消息太大,那就应该使用stream模式分段传输。
如果需要使用异步服务,gRPC的编译源码中直接提供。
欢迎在后台留言讨论。