[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"blog:\u002Fblog\u002F2020\u002F12\u002F10\u002Fgrpc-name-resolution\u002F":3},{"id":4,"title":5,"body":6,"categories":300,"comments":302,"date":303,"description":304,"draft":305,"extension":306,"legacySlug":307,"meta":308,"navigation":302,"path":339,"seo":340,"stem":341,"tags":342,"updated":344,"__hash__":345},"blog\u002Fblog\u002F2020\u002F12\u002F10\u002FgRPC-Name-Resolution.md","【译】gRPC名称解析",{"type":7,"value":8,"toc":289},"minimark",[9,32,36,39,42,46,55,58,61,151,154,229,236,239,242,245,265,268,272,280],[10,11,12,13,20,21,26,27,31],"p",{},"原文:",[14,15,19],"a",{"href":16,"rel":17},"https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc\u002Fblob\u002Fmaster\u002Fdoc\u002Fnaming.md",[18],"nofollow","gRPC Name Resolution","\n翻译整理: ",[14,22,25],{"href":23,"rel":24},"https:\u002F\u002Fzhizhi123.com",[18],"本站"," 译文链接:",[14,28,5],{"href":29,"rel":30},"https:\u002F\u002Fwww.zhizhi123.com\u002Fblog\u002F2020\u002F12\u002F10\u002Fgrpc-name-resolution\u002F",[18],"。 转载请保留原文出处和译文译者和出处。",[33,34,35],"h2",{"id":35},"概览",[10,37,38],{},"gRPC支持将DNS作为默认名称系统。 在各种部署中使用了许多其他类型的名称系统。 我们支持足够通用的API，以支持各种名称系统和名称的相应语法。 各种语言的gRPC客户端库将提供一种插件机制，以便可以插入用于不同名称系统的解析器。",[33,40,41],{"id":41},"详细设计",[43,44,45],"h3",{"id":45},"名称语法",[10,47,48,49,54],{},"用于 gRPC 通道构造的完全限定的自包含名称系统使用 ",[14,50,53],{"href":51,"rel":52},"https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc3986",[18],"RFC 3986","中定义的URI 语法.",[10,56,57],{},"URI scheme指示要使用的解析程序插件。 如果未指定scheme前缀或scheme未知，则默认使用dns scheme。URI路径指示要解析的名称。",[10,59,60],{},"大多数gRPC实现都支持以下URI schemes：",[62,63,64,92,113],"ul",{},[65,66,67,71,72],"li",{},[68,69,70],"code",{},"dns:[\u002F\u002Fauthority\u002F]host[:port]"," -- DNS (默认)\n",[62,73,74,80,86],{},[65,75,76,79],{},[68,77,78],{},"host","是要通过DNS解析的主机。",[65,81,82,85],{},[68,83,84],{},"port","是每个地址要返回的端口。 如果未指定，则使用443（但对于不安全的通道，某些实现默认为80）。",[65,87,88,91],{},[68,89,90],{},"authority"," 指示要使用的DNS服务器，尽管只有某些实现才支持。  （在C-core中，默认的DNS解析器不支持此功能，但是基于c-ares的解析器支持以“ IP：port”的形式指定此名称。）",[65,93,94,97,98,101,102],{},[68,95,96],{},"unix:path",", ",[68,99,100],{},"unix:\u002F\u002Fabsolute_path"," --Unix域套接字(只是在Unix系统)\n",[62,103,104,110],{},[65,105,106,109],{},[68,107,108],{},"path"," 指示所需套接字的位置.",[65,111,112],{},"在第一种形式中，路径可以是相对的或绝对的。 在第二种形式中，路径必须是绝对（即，实际上将有三个斜线，两个斜线在路径之前，另一个斜线开始绝对路径）。",[65,114,115,118,119],{},[68,116,117],{},"unix-abstract:abstract_path"," -- 抽象名称空间中的Unix域套接字(只是在Unix系统)\n",[62,120,121,127,130,133,136],{},[65,122,123,126],{},[68,124,125],{},"abstract_path","指示抽象名称空间中的名称.",[65,128,129],{},"该名称与文件系统路径名没有关系.",[65,131,132],{},"没有权限限制将应用于套接字-任何进程\u002F用户都可以访问套接字",[65,134,135],{},"抽象套接字的基础实现使用空字节（'\\ 0'）作为第一个字符。实现将会前置这个null。不要在abstract_path中包含null。",[65,137,138,140,141],{},[68,139,125],{},"不能包含null字节.\n",[62,142,143],{},[65,144,145,146,150],{},"TODO(",[14,147,148],{"href":148,"rel":149},"https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc\u002Fissues\u002F24638",[18],"):  Unix允许抽象套接字名称包含空字节，但是gRPC C核心实现不支持此功能。",[10,152,153],{},"gRPC C核心实现支持以下scheme，但其他语言可能不支持以下scheme：",[62,155,156,184],{},[65,157,158,161,162],{},[68,159,160],{},"ipv4:address[:port][,address[:port],...]"," -- IPv4 地址\n",[62,163,164],{},[65,165,166,167,170,171],{},"能够指定多个以逗号分割的地址，地址形式为",[68,168,169],{},"address[:port]",":\n",[62,172,173,179],{},[65,174,175,178],{},[68,176,177],{},"address"," 使用的IPv4地址.",[65,180,181,183],{},[68,182,84],{}," 使用的端口.如果没有指定, 使用443.",[65,185,186,189,190],{},[68,187,188],{},"ipv6:address[:port][,address[:port],...]"," -- IPv6 地址\n",[62,191,192],{},[65,193,194,195,170,197],{},"能够指定多个以逗号分割的地址，地址形式为 ",[68,196,169],{},[62,198,199,225],{},[65,200,201,203,204,206,207,209,210,213,214,217,218,221,222],{},[68,202,177],{}," 是使用的IPv6地址. 为了和 ",[68,205,84],{},"一起使用， ",[68,208,177],{}," 必须 用方括号括起来 (",[68,211,212],{},"["," and ",[68,215,216],{},"]","). 例如: ",[68,219,220],{},"ipv6:[2607:f8b0:400e:c00::ef]:443"," 或者 ",[68,223,224],{},"ipv6:[::]:1234",[65,226,227,183],{},[68,228,84],{},[10,230,231,232,235],{},"在未来, 额外的 schemes 例如 ",[68,233,234],{},"etcd"," 能够被添加.",[43,237,238],{"id":238},"解析插件",[10,240,241],{},"gRPC客户端库将使用指定的scheme来选择正确的解析器插件，并将完整的名称字符串传递给它。",[10,243,244],{},"解析器应该能够连接到认证机构（authority）并获得一个解析，认证机构将结构返回给gRPC客户端库。返回的内容包括:",[62,246,247,256],{},[65,248,249,250,255],{},"解析地址列表（IP地址和端口）。每个地址可以具有一组任意属性 (key\u002Fvalue 对) 与它关联,可以用来将信息从解析器传递到",[14,251,254],{"href":252,"rel":253},"https:\u002F\u002Fwww.zhizhi123.com\u002Fblog\u002F2020\u002F09\u002F11\u002Fload-balancing-in-grpc\u002F",[18],"负载平衡","策略。",[65,257,258,259,264],{},"服务配置信息：",[14,260,263],{"href":261,"rel":262},"https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc\u002Fblob\u002Fmaster\u002Fdoc\u002Fservice_config.md",[18],"service config",".",[10,266,267],{},"插件API允许解析器连续监视端点并根据需要返回更新的解析结果。",[33,269,271],{"id":270},"备注","备注：",[10,273,274,275,264],{},"1.C-core是grpc共享C 核心库 ",[14,276,279],{"href":277,"rel":278},"https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc\u002Fblob\u002Fmaster\u002Fsrc\u002Fcore",[18],"src\u002Fcore",[10,281,282,283,288],{},"2.**",[14,284,287],{"href":285,"rel":286},"https:\u002F\u002Fc-ares.haxx.se\u002F",[18],"c-ares","**是一个用于异步DNS请求(包括名称解析)的C库。",{"title":290,"searchDepth":291,"depth":291,"links":292},"",2,[293,294,299],{"id":35,"depth":291,"text":35},{"id":41,"depth":291,"text":41,"children":295},[296,298],{"id":45,"depth":297,"text":45},3,{"id":238,"depth":297,"text":238},{"id":270,"depth":291,"text":271},[301],"gRPC",true,"2020-12-10","原文:gRPC Name Resolution 翻译整理: 本站 译文链接:【译】gRPC名称解析。 转载请保留原文出处和译文译者和出处。 概览 gRPC支持将DNS作为默认名称系统。 在各种部署中使用了许多其他类型的名称系统。 我们支持足够通用的API，以支持各种名称系统和名称的相应语法。 各种",false,"md","gRPC-Name-Resolution",{"excerpt":309},{"type":7,"value":310},[311,322,324,326,328,330,335,337],[10,312,12,313,20,316,26,319,31],{},[14,314,19],{"href":16,"rel":315},[18],[14,317,25],{"href":23,"rel":318},[18],[14,320,5],{"href":29,"rel":321},[18],[33,323,35],{"id":35},[10,325,38],{},[33,327,41],{"id":41},[43,329,45],{"id":45},[10,331,48,332,54],{},[14,333,53],{"href":51,"rel":334},[18],[10,336,57],{},[10,338,60],{},"\u002Fblog\u002F2020\u002F12\u002F10\u002Fgrpc-name-resolution",{"title":5,"description":304},"blog\u002F2020\u002F12\u002F10\u002FgRPC-Name-Resolution",[301,343],"微服务",null,"HyuZPqNV4erJW-KAddZY44JZo8XbdNWlNWmLaE2xDKo",1783807996125]