知识卡片
服务坐标三元组与两种服务发现范式
内容
远程服务调用要靠”全限定名+端口号+服务标识”这个三元组精确定位——全限定名 定位主机,端口号定位主机上的程序,服务标识(因协议而异,REST是URL、 RMI是Stub方法、SOAP是WSDL定义方法)定位具体方法入口。这决定了服务发现 存在两种不同范式:一种是以UDDI为代表的”百科全书式”,从企业信息、联系 方式到方法名/参数/返回值/技术规范全部纳入服务发现的管辖范围;另一种是 类似DNS的”门牌号码式”,只负责把全限定名翻译成主机IP地址,不关心服务 提供者是谁、有几个方法——它默认这些细节消费者早就通过接口文档或代码 契约知道了,服务坐标因此可以简化为”全限定名+端口号”。当今主流是后一种, 本质上是把”服务发现”这个问题的范围主动缩小到只解决”名字能不能翻译成 可访问地址”,而不试图成为服务的完整说明书——这个取舍类比编译链接过程 中链接器只负责把符号引用转换为内存地址,不关心符号背后的业务语义,是 计算机科学里”分层、各司其职”这一惯用思路的又一次体现。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第7章"从类库到服务"
7.1.1节"服务发现的意义"(源文件:_epub-src对应OEBPS/Text/chapter85.xhtml)
- 结论依据:原文定义远程服务坐标的三元组构成,区分UDDI式"百科全书式"
服务发现与DNS式"门牌号码式"服务发现,并说明当今主流是后者、服务坐标
可退化为全限定名+端口号,直接支撑本卡片结论。
- 原始内容:所有的远程服务调用都是使用全限定名、端口号与服务标识所
构成的三元组来确定一个远程服务的精确坐标的……当今,后一种服务发现
占主流地位,本文后续所说的服务发现,如无说明,均是特指后者。