京东、宅急送的微服务实践分享(二).docxVIP

京东、宅急送的微服务实践分享(二).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
京东、宅急送的微服务实践共享(二) 2021-02-14 Q:API 网关是怎样设计的? 京东章耿:我们有个 HTTP 的网关,但不是一个对外网服务的一个网关。对外的话业务本人都有一些网关,例如无线有本人的网关,网站有本人的网关,而另外一个公共的开放的是一个叫京东开放平台的网关。然后我们的网关干嘛用的?次要做的就是一个跨言语支持用的,协议转发和限流。这个网关存在的意义,次要是为了让有的调用端不用杰夫协议,或者不依靠服务端的情况下,来调服务端的服务。最次要就是刚才说那个 HTTP 转成内部协议的一个转发的功能,其次我们在上面做了一个接口级隔离,不要一个接口就把网关搞挂。还有一个就是限流,每分钟调多少次。还有授权,以前的网关转发的做法,一般是比如说类似于一个 VIP,然后前面挂个域名。然后那个虚 IP 后面挂的服务列表一般都是要手动维护上。而我们的网购自动就挂到这个网关上面,就是一个服务发觉,还有就是我们的结果,统计方面,我们会统一包装一下,我们的网关次要是做这个功能,现在一天应当是几十亿的调用量,九十台,差不多这些。? 服务发觉是到数据库里面去读服务列表,从注册中心读出来以后会推给我们的网关。网关跟调用者是类似的。它其实也是一个调用者,只不过它是一个代理的调用者。它的服务列表,也是从我们的注册中心订阅的,不直接连数据库,可以认为本人是调用者。网关第一次去注册中心去读,后面的话我们可以推变化的部分。比如说你原来 1000 台,你要是加了一台,按以前拉的思路你会拉 1001 台,然后你本人比较一下,多了哪一台。但我们现在不是,我们现在是反向给他推加一台。这样的话,大量的削减那个,还有网络 IO 的推送。京东章耿:我们想用 nginx+luaw 做一个 HTTP 转我们内部 JSF 协议的,但不是 worker 就是一个进程。会产生很多长链接,所以我们后来就放弃了,我们现在是基于 nitty 做了一个转发,就是对外是 HTTP,对内就 JSF 协议。也做了一些授权,限流,还有服务之间的线程隔离,服务发觉,还有一个是结果的包装,包装成标准的 HTTP 的响应。由于像对外网的那些其实都是有本人的系统,不管你是无线,还是 PC 他都有本人的系统,那个不需要我们做。对第三方的话,它也有其中京东一个开发平台,还有更严格的那个验证,我们这个次要还是做协议转换的 API 网关。 Q:你们怎样验证恳求的合法性的,你们接受什么方法?就是就那种效率与平安性的这种平衡你们怎样做的? 京东章耿:我们是有个授权,就是有个应用 ID,京东是每个启动的都有个应用 ID,带着那个应用 ID 过来,我们也可以支持头上带 token。京东开放的那种是对外比较严格,我们这个不需要那么严格,反正就看你对象,就看你的网关给谁用了。 Q:你们现在有两品种型,一种是内部之间调用的,另外一部分是外部调用内部的调用你们系统。? 京东章耿:那个是开放服务,有些供应商内部的系统,想要调京东的系统,那种就是京东开放服务,是需要 Oauth 认证。 **京东章耿:**HTTP+keepalive 也挺快的,由于它无非就是头上大一点,HTTP 的头大了一点。但假如后台是调 redis 那就比较明显的感觉,那假如后台是一个有个几百毫秒的,那你感觉不到那么明显。假如后台,你这就是读不取一下,读一下 redis,你感觉比较明显。我们这边是用 netty 做的 HTTP 跟二进制都是在同一个端口支持的。 Q:你怎样划分,哪些用二进制的,那些用 restful 协议的呢? 京东章耿:那个我们没有强制要求,业务它本人想用什么用什么。? 京东章耿:对我们来说,它一启动端线口它就支持这两种协议。启动同一个端口,两种协议都支撑的。 Q:你们是怎样区分一种端口种协议的呢? 京东章耿:每个数据包括头上前两位不是模数位吗?它们都有本人的模数位。然后我们本人协议有本人的模数位,你 HTTP 就是那几个打头的 H,然后我们的 decode 是自动装载的,它不是说你可以一开头装载一个什么那是适配器 decode。当你恳求来的时候,你再自动装载量,由于我们是超链接,不管你是 HTTP,我们一般都默认开启 keepalive 也是个超链接。其实,你可以晓得这个长链接对应的是什么协议。 Q:它一般保持稳定的一个超链接,确定是一种协议持续下去,不行能说动态的变质。 京东章耿:是,看效率要求,其实 HTTP keepalive 也还可以,功能也还可以,假如不是那种调量特殊特殊大的话,它效率也还是可以的。然后 debug 的时候可能可读性会好一点。二进制最大问题还是比较麻烦,特殊是,我们现在用 message pack,然后会生成一堆的代理类,模板类,反正问题也比较麻烦。? 宅急送石廷鑫:我们都用 Spring clou

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档