问答环节
Q1:api gateway使用开源产品还是自己开发,是否有必要自己开发?
A1:gateway是自己基于netty开发的,看需求和对可控性的要求来决定是否自己开发。如果觉得开源的产品不符合你想要的要求,那自己开发也是一条没有太多选择的路。
Q2:能解释一下什么是代理,什么是存根,以及它们的关系是什么吗?
A2:这个问题不是很明白你具体指的上下文,按我个人的理解,代理是在原有事情上包装一层,但是做的事情的核心没变。存根是一种降低使用复杂度的手段,生成一些重复、复杂的代码来减少使用者的负担。存根可能会使用到代理模式。
Q3:netty也适合做实时返回的交api gateway开发?netty发布的是什么协议的api?
A3:netty跟实时不冲突,只要你是长连接,那么它就具备接收和推送的能力。关于协议你只要在实现的时候不对原协议做破坏,那么它就是一个透明的穿透。我们内部的实现中,netty工作在http2上。
Q4:你们gateway有什么功能点?单机qps多少?
A4:现阶段具备注册发现、健康检查、负载均衡、反向代理、流量控制等功能。单机QPS在空包的情况下13万,1k数据包情况下3万左右,5k数据包的情况下1万5左右
Q5:spring boot很火,版本迭代速度很快,一些模块改动很大,但这给开发和部署带来一定的困惑,并且新人如果没接触过springMVC的话很容易掉入坑里,因为自动化程度很高,很多时候错误莫名其妙,也看不到里面发生了什么,这些问题如何解决?
A5:springboot的加载机制其实是很严谨的,都是在各种condition情况满足下才会加载,部署的话其实应该比原来更简单才对,它提供的maven 打包插件打出一个jar就能进行部署。如果说坑那可能是没有按照springboot的约定实施造成的,它提供了很多机制去查看它的状态,比如各种http的endpoint,官方参考文档应该会帮上大忙。
Q6:从esb soa转微服务,原本进程内的调用关系变成了网络调用,一次rpc变成了几次或者几十次rpc,同等条件下性能损失严重。这个问题如何得到解决?
A6:任何问题都有两面性,从开发的可维护性和降低复杂度等、部署的效率,故障影响的范围等等来说,微服务有很大的优势。你提到的性能问题,可能是服务的拆分过细导致,但不管怎么拆,从一个调用被拆成几十次调用肯定是粒度有严重问题,提高性能可以从按业务单元合理拆分粒度、合理的网络规划及部署、提高微服务本身性能等方面着手。
精彩线下活动推荐
当大数据走进天府,会引爆什么呢?当大数据遇到创新,会发生哪些新鲜事呢?当大数据遇到营销,会出现哪些疯狂呢?在大数据时代,我们该如何做才能立于不败之地呢?2017年3月18日,由飞马网与中生代技术联合组织的技术嘉年华--软件技术领域顶级盛宴,将在“天府之国”成都盛大开幕,带你了解新一年的技术走向。
或者点击 阅读原文 了解详情报名