基于不同的数据源提供统一的RESTful风格的API

    xiaoxiao2025-11-26  6

    可能的数据源

    Hbase

    一个结构化的分布式数据库。存储非关系型数据。 提供数据查询接口有以下几种方式:

    local API(java)RESTThriftC/C++ Apache Hbase Clientuse JDO with HBaseScalaJython

    Phoenix

    官方提供了一下的集成: 1.Spark 2.MapReduce 3.Pig 4.EMR 5.Python 6.Flume 7.ORM library for JAVA


    而在github上有1个项目avatica(15stars其中一个我)

    Spark SQL

    SparkSQL是与spark深度集成的,因此没用提供给第三方开发的API是可以理解的。 PS值得注意的是:ThriftServer是一个JDBC/ODBC接口,用户可以通过JDBC/ODBC连接ThriftServer来访问SparkSQL的数据。ThriftServer在启动的时候,会启动了一个SparkSQL的应用程序,而通过JDBC/ODBC连接进来的客户端共同分享这个SparkSQL应用程序的资源,也就是说不同的用户之间可以共享数据;ThriftServer启动时还开启一个侦听器,等待JDBC客户端的连接和提交查询。

    DRUID

    Python\R\JavaScript\Clojure\Ruby\PHP\SQL SQL: 1.Apache Calcite - SQL parser, planner and query engine whose Druid adapter can query data residing in Druid, and combine it with data in other locations; has local and remote JDBC drivers powered by Avatica 2.implydata/plyql - A command line and HTTP interface for issuing SQL queries to Druid

    总结:go的兼容性确实不是很好,python相对于go还是好点的。其实最好的还是java。

    WEB后端的技术选型Go/Python

    RESTful风格

    RESTful设计理念基于4点: - Use HTTP methods explicitly. - Be stateless. - Expose directory structure-like URIs. - Transfer XML, JavaScript Object Notation (JSON), or both.

    总结来说:Restful并不是一种协议,而是一种web编程风格满足以下几个特点的都可以称为restful框架 1. 连接协议具有无状态(be stateless) 2. 客户端服务器结构 (分层) 3. 能够利用cache机制增进性能 (分层) 4. 统一的接口 (HTTP协议) 5. 资源的设定 (expose directory structure-like uri 显示的目录结构化资源) 6. 转移过程使用json、xml等数据格式

    外链文章:http://www.ibm.com/developerworks/library/ws-restful/

    web服务器端开发

    web服务器端选型之语言: 1. 并发性要给力 2. 包要多 3. 框架要给力 4. 向下兼容性要好

    web框架的处理流程: 1. 接受连接 2. 路由 3. handler处理

    Go框架

    beego(7.7k stars 1.9k forks) 高性能web框架fasthttp(3k 230forks) go的HTTP包,高性能(需要集成插件比如路由模块-handler)–httprouter(3.4k 333forks)gin(7.3k 805forks) HTTP web框架,使用了Martini-like API,拥有更好的性能martini(8.6k 909forks) web框架iris(4.7k 229forks) 号称最快的web框架,和fasthttp、httprouter(fasthttp-routing)集成的差不多echo(5.1k 381forks) HTTP server框架

    http://colobu.com/2016/04/06/the-fastest-golang-web-framework/

    Python框架

    django(20.7k stars 8.8forks) 高等的web框架。flask(22k stars 6.9forks) 微型的网络框架,基于Werkzeug(实现了WSGI的库)web2py(1.1k stars) 全栈式的web框架,工业化般的支撑falcon(3.1k stars) 高性能的web框架,主打快,轻,灵活bottle(3.8k stars) 微型的网络框架tornado(11.9k stars) 异步的网络,简单的网络框架webpy(3.9k stars) 简单的web框架

    web框架样本测试—Go vs Python

    beego测试情况,100个并发,发送100次

    Transactions: 100000 hits Availability: 100.00 % Elapsed time: 12.19 secs Data transferred: 21.93 MB Response time: 0.02 secs Transaction rate: 8203.45 trans/sec Throughput: 1.80 MB/sec Concurrency: 175.61 Successful transactions: 100000 Failed transactions: 0 Longest transaction: 1.17 Shortest transaction: 0.00

    flask测试情况, 100个并发,发送100次

    Transactions: 99971 hits Availability: 99.97 % Elapsed time: 68.43 secs Data transferred: 3.72 MB Response time: 0.06 secs Transaction rate: 1460.92 trans/sec Throughput: 0.05 MB/sec Concurrency: 90.58 Successful transactions: 99971 Failed transactions: 29 Longest transaction: 56.23 Shortest transaction: 0.02

    总结:结果显而易见,go完爆python。在框架方面go的框架虽然不及python的多,但是功能还是很全的。根据数据源对接的兼容性(半斤八两),因此go更适合当web服务器端语言选型。

    转载请注明原文地址: https://ju.6miu.com/read-1304438.html
    最新回复(0)