BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

【QCon上海2015】开发平台与服务技术实践专场重点回顾

| 作者 薛梁 关注 1 他的粉丝 发布于 2015年10月23日. 估计阅读时间: 6 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

QCon上海2015全球软件开发大会17号的“开发平台与服务技术实践”专场里,参加演讲的技术专家及工程师着重介绍了内部的最新技术实践过程和实际案例,同时也为在场的听众出谋划策,提供在开发与服务技术上的参考意见。这其中参与分享的IT公司有:GitCafe、野狗科技、个推和VMware。

使用Swagger快速打造REST API文档

Swagger是一个描述REST service的规范,那么用Swagger能解决什么问题呢?GitCafe技术负责人吴江介绍说,交流的时候直接用Swagger UI,则可以直接在文档上调用API,这解决了在API调用上可能出现的调用方式和其它问题。此外,Swagger还能实现不同团队不同公司之间的相互交流,同步代码和文件,确认REST服务等等。

吴江还讲到,Swagger可以通过API Routes、Input Types和授权的形式来描述REST service,这样做的好处就是能及时查出错误的输入,方便API处理问题。那么如何调用写好的service呢?Swagger有一个官方的功能是读Swagger的描述文件之后生成一些代码,先是Swagger读取好了描述文件,还有相关的token endpoint,然后对文件进行操作,非常方便,只要读到这文件就可以通过这个代码调用Swagger。Swagger也有一些缺点,在使用过程中需要三个组件,但是grape有一个bug,grape里面是支持符号*的,某些时候调用的API里面也需要一些线的支持,最后调查下来这个bug是在grape-Swagger里面,这些组件你都要熟悉才能最终抓出来这个bug,所以对人的能力要求是非常高的,甚至可能是全站人的能力才能把这个bug抓出来。其次就是这三个组件之间的兼容性一直都是一个问题,因为它是开源软件,难免会出现一些瑕疵。

REST API需要回顾一下,REST API刚提出来的时候,所有人都觉得API很简单,但是事实上,这个API也是通过WADL、HAL和HATEOAS的组合而形成的。

总的来说,Swagger并没有什么使用上的规范,只是描述了REST的服务功能,提供了带有Swagger UI的现实的可测试的文档,能从源代码里生成服务,它的缺点就是需要调试的时候不得不从组件里进行调用。最后再回顾一下DRY原则,Swagger是很抽象的,发现需要做重复的时候,要先做抽象,这样把重复的东西避免掉;其次就是选用合适的工具。

Node.js与实时BaaS的云开发实践

野狗实时作为BaaS云平台,其用处就是进行云端数据存储和数据的实时同步。用户使用野狗实时的SDK来关注自己的业务层开发,很方便的进行开发游戏、WEB、物联网的应用,不需要编写服务端代码、也不需要维护繁琐的后端服务器。

野狗科技联合创始人兼首席架构师谢乔在演讲中分析了使用Node.js服务端的原因。Node.js服务端开发主要用与长连接的入层架构,在开发实践上,主要是用于服务端的:Websocket长连接、Long polling和Rest API。在网站前端上用于:前后端分离、高效的上线发布和Grunt Brower等等。之所以使用Node.js,主要还是因为它的开发率高/易维护、单进程高并发、线程安全/无锁、适合IO密集、减少CS,节省栈空间、适合请求分发、透传、轻业务逻辑。这些都不是重点,重点是他还有很不错的特性:异步编程的习惯、V8的垃圾回收、增量标记、Openssl AES-NI、随意调试等等。Node.js的缺陷就是:单进程,进程容易崩溃,一崩溃整个系统就玩完了,不能充分利用多核,用户单性能的时候同步代码会阻塞后面的代码执行,后面的请求执行,可靠性差等等。

那么在应用的过程中,如何克服Node.js所带来的缺陷呢?方案之一:Nginx+Node.js,优势是:并发建连能力强;TLS加解密优势;负载均衡;权重控制;健康检查;IP Hash。方案二:虚拟机+Nginx+Node.js。优势:并发建连能力强,TLS加解密优势;充分利用资源。劣势:单点故障,运维成本高;没有负载均衡;长连接开销×2。方案三:虚拟机+Node.js。直接建立连接;TLS建连实际表现不俗;问题依旧存在。方案四:Node.js Master-Worker。优势是简单,运维成本低,TLS建连实际表现不俗;劣势就是没有负载均衡、Master单点故障。最后,经过实际测验的结果表明,不用虚拟机的方案,直接采用物理机,用模拟Nginx的模式,多进程进行,充分利用这个资源。虽然还是会出现物理机上的单点故障的劣势,但可以通过客户端和服务端引入一个节点,服务端保证可用性和伸缩性。

除了上面所提到的内容,谢乔还在后面谈到了Node.js Master和Node.js Worker等相关细节内容,以及Node.js健壮性保障开发建议等等内容。

为期三天的QCon上海2015大会已圆满结束了,开发平台与服务技术实践专场的内容同样为参会者提供了有价值的IT技术分享,以上内容是第三天的开发平台的重点回顾。需要了解更多内容,请查看QCon大会官方网站

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT