Firebase和绝大多数云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase 最高能处理百万级的并发和 TB 级的数据传输,数据发生更改,同步敏感颗粒度基本达到 10 毫秒级别。另外通过简单的api,你仅需要10几行代码,就可以写一个实时性聊天室。
总结一下Firebase有以下几个优点:
1.云服务,随时扩展,高性能,无需部署管理自己的服务器,数据库,大大减少工作量
2.api简单,使用起来非常的方便,可大大减少代码量
3.可通过网页对数据进行管理,很方便
经过这段时间的使用,也发现几个缺点:
1.数据结构和数据库存储方式不一致(由于想支持REST方式读取数据)
2.不能部署自己的数据库(很多项目都需要自己维护数据库的)
3.目前数据操作能力较弱(有很多需求(稍微复杂点的查询)目前Firebase很难支持)
4.数据分析功能很弱,只能查看流量和当前在线人数(独立数据库的话,这部分很容易做的更强大)
5.不支持离线开发(废话。。)
总结一下就是Firebase弱化了数据库的存在,看起来很酷,但是现实情况下出于安全、数据分析等考虑,自己维护数据库才是更合适的。
如果既想使用Firebase的便捷,又想自己维护数据库,那么End.js或许是个好选择。End.js学习了Firebase的api,同时基于socket.io和MongoDB,提供了类似Firebase的功能。End.js是Node.js的一个package,所以很方便的和其他package一起使用。
简单的入门使用
1:安装
npm install end -g
2: 服务器端使用
End.init(mongo_config,sio_config)
3: 客户端使用
var chat = new End('chat','htcalhost:8080'),
chatRoom = chat.c www.hbbz08.com hild(window.location.search.split('?')[1]),
chatMsgs = chatRoom.child('msgs')
chatMsgs.on('child_added',function(msg){
$('.msgs').append('<div class="msg">'+msg.value.name+' : '+msg.value.text+'</div>')
})
$('#btn_send').click(function(){
var name = $('.txt_send_name').val()
var text = $('.txt_send_text').val()
chatMsgs.push({name:name,text:text})
})
Serverless(无服务器架构)是指服务端逻辑由开发者实现,应用运行在无状态的计算容器中,由事件触发,完全被第三方管理,其业务层面的状态则存储在数据库或其他介质中。
Serverless可以使开发者更聚焦在业务逻辑,而减少对基础设施的关注。
Serverless通常包含了两个领域 BaaS(Backend as a Service)和 FaaS(Function as a Service)
BaaS是一种广泛依赖于第三方应用和服务的无服务器计算方法。BaaS供应商可以提供加密、用户认证、云数据库的使用。这些服务可以通过调用云供应商提供的API进行访问;相比自己重新开发,这些功能可以更方便地整合到各个类型的系统中。
FaaS 是一种事件驱动的由消息触发的服务,FaaS 供应商一般会集成各种同步和异步的事件(如AWS的SNS),通过订阅这些事件,可以触发指定的函数运行,例如当前使用很广泛的 AWS 的 Lambda函数。
Serverless架构的优点
降低运营成本:
Serverless是非常简单的外包解决方案。它可以让您委托服务提供商管理服务器、数据库和应用程序甚至逻辑。由于这个服务使用者的数量会非常庞大,于是就会产生规模经济效应。在降低成本上包含了两个方面,即基础设施的成本和人员(运营/开发/维护)的成本。
降低开发成本:
Serverless作为一种云服务,使得整个应用程序组件被商品化。
扩展能力:
横向扩展是完全自动的、有弹性的、且由服务提供者所管理。从基本的基础设施方面受益最大的好处是,您只需支付您所需要的计算能力。
更简单的管理:
Serverless架构明显比其他架构更简单。更少的组件,就意味着您的管理开销会更少。
有效利用计算资源:
据《福布斯》的统计,在商业和企业数据中心的典型服务器仅提供5%~15%的平均最大处理能力的输出。这无疑是一种资源的巨大浪费。Serverless让服务提供商提供我们的计算能力最大限度满足实时需求,更有效地利用计算资源。
Serverless架构的缺点
状态管理:
要想实现自由的缩放,无状态是必须的,而对于有状态的服务,使用serverless这就丧失了灵活性。
延迟:
Serverless应用程序是高度分布式、低耦合的,这就意味着延迟将始终是一个问题,单纯使用serverless的应用程序是不太现实的。
本地测试:
Serverless应用的本地测试困难是一个很棘手的问题。虽然可以在测试环境下使用各种数据库和消息队列来模拟生产环境,但是对于无服务应用的集成或者端到端测试很困难。
API:应用程序接口(API:Application Program Interface) 应用程序接口(是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。 API 同时也是一种中间件,为各种不同平台提供数据共享。 根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型: 远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。 标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。 文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。 信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。 当前应用于 API 的标准包括 ANSI 标准 SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些 API 以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的 API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种 API 只处理一种信息格式,所以该情形下的信息交付 API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付 API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付 API 类型是比较理想的选择。 API 与图形用户接口(GUI)或命令接口有着鲜明的差别:API 接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)