扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
腾讯云提供的连接:Windows系统。可以用远程桌面连接,你本地电脑点击,开始-运行-输入mstsc,弹出的框里,填IP和账号密码信息。
专注于为中小企业提供成都网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业宜秀免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
管理服务器上还会运行一个数据采集程序,他定时将各种性能数据采集下来并发送到中央的数据采集服务器上存储服务器群:存储服务器可以是ISCSI或内置存储容量比较大的x86服务器。
通过 集群文件系统组成一个统一的存储池,为节点内的虚拟机提供逻辑磁盘存储、非结构数据存储以及整合备份服务。
管理服务器上提供:
管理服务(管理节点的计算服务器,对外提供管理接口)、DHCP服务(为计算服务器的网络启动分配管理网段的IP)、tftp 服务(为计算服务器的网络启动提供远程启动映象)、nbd 服务(为计算服务器提供网络块设备服务)。
在这篇文章中将我们一起来探讨当前的API网关的作用。
一、API网关的用处
API网关我的分析中会用到以下三种场景。
二、API网关在企业整体架构中的地位
一个企业随着信息系统复杂度的提高,必然出现外部合作伙伴应用、企业自身的公网应用、企业内网应用等,在架构上应该将这三种应用区别开,三种应用的安排级别、访问方式也不一样。
因此在我的设计中将这三种应用分别用不同的网关进行API管理,分别是:API网关(OpenAPI合伙伙伴应用)、API网关(内部应用)、API网关(内部公网应用)。
三、企业中在如何应用API网关
1、对于OpenAPI使用的API网关来说,一般合作伙伴要以应用的形式接入到OpenAPI平台,合作伙伴需要到 OpenAPI平台申请应用。
因此在OpenAPI网关之外,需要有一个面向合作伙伴的使用的平台用于合作伙伴,这就要求OpenAPI网关需要提供API给这个用户平台进行访问。
如下架构:
当然如果是在简单的场景下,可能并不需要提供一个面向合作伙伴的门户,只需要由公司的运营人员直接添加合作伙伴应用id/密钥等,这种情况下也就不需要合作伙伴门户子系统。
2、对于内网的API网关,在起到的作用上来说可以认为是微服务网关,也可以认为是内网的API服务治理平台。
当企业将所有的应用使用微服务的架构管理起来,那么API网关就起到了微服务网关的作用。
而当企业只是将系统与系统之间的调用使用rest api的方式进行访问时使用API网关对调用进行管理,那么API网关起到的就是API服务治理的作用。
架构参考如下:
3、对于公司内部公网应用(如APP、公司的网站),如果管理上比较细致,在架构上是可能由独立的API网关来处理这部分内部公网应用,如果想比较简单的处理,也可以是使用面向合作伙伴的API网关。
如果使用独立的API网关,有以下的好处:
• 面向合作伙伴和面向公司主体业务的优先级不一样,不同的API网关可以做到业务影响的隔离。
• 内部API使用的管理流程和面向合作伙伴的管理流程可能不一样。
• 内部的API在功能扩展等方面的需求一般会大于OpenAPI对于功能的要求。
基于以上的分析,如果公司有能力,那么还是建议分开使用合作伙伴OPEN API网关和内部公网应用网关。
四、API网关解决方案
私有云解决方案如下:
• Kong是基于Nginx+Lua进行二次开发的方案
• Eolinker和Kong比较接近,但是因为是国内公司开发的,后续的技术支持和培训比较友好。
• Netflix Zuul,zuul是spring cloud的一个推荐组件,
• orange,这个开源程序也是国人开发的,不过这个是个人开发不是公司。
公有云解决方案:
• Amazon API Gateway,
• 阿里云API网关,
• 腾讯云API网关,
自开发解决方案:
• 基于Nginx+Lua+ OpenResty的方案,可以看到Eolinker,Kong,orange都是基于这个方案。
• 基于Netty、非阻塞IO模型。通过网上搜索可以看到国内的宜人贷等一些公司是基于这种方案。
• 基于Node.js的方案。这种方案是应用了Node.js天生的非阻塞的特性。
• 基于java Servlet的方案。zuul基于的就是这种方案,这种方案的效率不高,这也是zuul总是被诟病的原因。
五、企业怎么选择API网关
现在的亚马逊、阿里、腾讯云都在提供基础公有云的API网关,当然这些网关的基础功能肯定是没有问题,但是二次开发,扩展功能、监控功能可能就不能满足部分用户的定制需求了。
另外很多企业因为自身信息安全的原因,不能使用外网公有网的API网关服务,这样就只有选择私有云的方案了。
在需求上如果基于公有云的API网关只能做到由内部人员为外网人员申请应用,无法做到定制的合作伙伴门户,这也不适合于部分企业的需求。
如果作为微服务网关,大多数情况下是希望网关服务器和服务提供方服务器是要在内网的,在这里情况下也只有私有云的API网关才能满足需求。
综合上面的分析,基础公有云的API网关只有满足一部分简单客户的需求,对于很多企业来说私有云的API网关才是正确的选择。
据腾讯客服介绍,腾讯天御验证码服务与腾讯防水墙是同一款产品,不同的是两者的接入方式和管理后台不一样。且面向的用户群体也不同,防水墙主要面向于中小企业,且处于免费推广期,而天御则面向较大型企业。
1)客户端从服务端获取验证码 JS 文件
2)客户端嵌入验证码JS页面(iframe形式)
3)用户完成验证码验证
4)客户端获得验证 ticket,并提交服务端进行二次验证
5)服务端通过天御服务器接口进行ticket验证
服务端主要有两个接口:
1) 后台获取验证码js地址
2) 后台验证票据API
腾讯云的API请求由两类请求参数:公共请求参数和接口请求参数。公共请求参数的首字母均为大写,接口请求参数首字母为小写。对于公共请求参数的生成可以参考 官方文档 ,难点在于公共参数中 Signature 字段生成,这里有一份较为详细的 签名方法文档 。
虽然尝试过动手工生成请求参数,但文档中的描述与实际接口的要求不相符,始终没有成功。最终,通过这个库 —— 腾讯云 API 2.0 SDK for node.js ,完成API参数的生成。
其中,返回值的 code 字段。0表示成功,其他值表示失败。
主要流程如下:
1)从后端获取 JS SDK 地址
2)动态加载 JS 文件
3)初始化验证码服务,注册回调事件,并绑定到DOM节点中
从接入文档和接入方式看,防水墙的接入防水比较简单且文档很详细、准确。天御的文档则含糊不清,文档中字段与实际接口字段有出入,联系专业客服人员也不回答。接入起来有一定成本。
本来打算将天御作为主要验证码服务,奈何文档太烂,又没有Node的SDK,管理后台又不好用,最后放弃了。(疯狂甩锅 (╯°□°)╯︵┻━┻)
有意思的是,腾讯天御的公共参数设定方式与阿里云的公共参数设定方式大同小异。很好奇,是谁借鉴谁的。
阿里云得比较好,但是稍微贵一点。
阿里云服务器优势:
云服务器ECS与拥有传统服务器和虚拟主机无法企及的优势:稳定性:服务可用性高达99。95%,数据可靠性高达99。99%。支持宕机迁移、数据快照备份和回滚、系统性能报警。容灾备份:每份数据多份副本,单份损坏可在短时间内快速恢复。安全性:支持配置安全组规则、云盾防DDOS系统、多用户隔离、防密码破解。
多线接入:基于边界网管协议(BorderGatewayProtocol,BGP)的最优路由算法。BGP多线机房,全国访问流畅均衡。骨干机房,出口带宽大,独享带宽。弹性扩容:10分钟内可启动或释放100台云服务器ECS实例;支持在线不停机升级带宽;5分钟内停机升级CPU和内存。
成本低:无需一次性大投入,按需购买,弹性付费,灵活应对业务变化。可控性:作为云服务器ECS的用户,您拥有超级管理员的权限,能够完全控制云服务器ECS实例的操作系统,可以通过管理终端自助解决系统问题,并可以进行部署环境、安装软件等操作。易用性:丰富的操作系统和应用软件,使用镜像可一键简单部署同一镜像;可在多台ECS实例中快速复制环境,轻松扩展;支持自定义镜像、磁盘盘快照批量创建云服务器ECS实例。
API接口:使用ECSAPI调用管理,通过安全组功能对一台或多台服务器进行访问设置,使开发使用更加方便。[收起]
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流