mongodb怎么从collection查询数据 怎么提高api接口的稳定性?

[更新]
·
·
分类:互联网
1972 阅读

mongodb怎么从collection查询数据

怎么提高api接口的稳定性?

怎么提高api接口的稳定性?

这个问题我就结合着自己的项目来说一说。
我们现在的项目是没有前台页面的,只对外提供接口服务,甚至我们项目都没有交易类的服务,都是单纯的查询类服务。项目最初的建设目标就是为了缓解核心系统数据查询的压力,或者你们可以把我们项目看成几个核心项目的缓存层(因为有多个核心系统,我们项目还可以提供跨系统的查询,这一点也很重要)。
打铁还需自身硬,要提高接口的稳定性和响应速度,首先代码要写好:
我们项目采用了关系型数据库做中间库,数据经过加工后落地到MongoDB和Redis,对外的提供的服务,只会查询MongoDB和Redis;
数据加工很重要,关系型数据库中需要多表关联的查询,现在只查询MongoDB的一个collection就可以了。(因为要做数据加工,所以数据和生产库比,有一定的延迟,这个一定要看业务场景是否允许有延迟);
MongoDB采用副本集 分片的方式部署,副本集保证数据库的稳定性,挂掉一台,还有其他几台可以使用;分片保证数据量增大后,可以平行扩容。(现在数据量大概在亿级,个位数);
服务部署还采用比较传统的方式,N台服务器前面挂负载均衡;上各种监控,随时关注接口调用和资源使用情况;
严格的参数校验,避免做无用的查询;
大原则就是:【能查缓存就不要查数据库,能不查的话就更好】
除了自身架构之外,还有些非自身的控制:
内部系统在调用接口的时候,主要通过网络权限的控制,除此之外不做任何的限制,包括鉴权;
如果是互联网端的接入,还是需要依赖网关;由网关做鉴权、限流、降级、熔断等;
参与对方系统功能的设计(这一点很神奇),因为大多数时候都是公司内部的系统,所以在做需求讨论的时候,最好能看一下对方系统的调用场景;很有可能调整一下什么时候调用接口,就能大大减少接口的调用次数;
建议调用方设置合理的超时时间,并有合理的重试机制;
如果可以的话,最好可以采用异步调用的机制;
如果接口要依赖于另外系统的接口,也需要额外的做一些考虑(依赖的接口返回慢或者报错,自己的接口肯定会有问题);比如数据时效性要求不高的话,可以考虑把对方接口返回的数据缓存下来(设置失效时间,保证一段时间后能把最新的数据刷新回来),但如果数据时效性要求非常高,可以考虑使用熔断;不过说实话,还没见过谁敢用熔断的....
希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

怎样删除mongodb中的collection?

drop() 方法MongoDB 的 () 是用来从数据库中删除一个集合。语法:drop() 命令的基本语法如下_NAME.drop()示例:首先,检查可用的集合在数据库 mydbuse mydbswitched to db mydbshow 现在删除集合名称为 ()true再次检查到数据库中的集合列表show () 方法将返回 true,如果选择成功收集被丢弃,否则将返回 false