大并发接口开发

JJYY0088 2017-06-13 11:36:44
比如用WebApi开发一个业务接口,客户端调用这个接口上传数据 并 返回 操作结果提示,由于客户端(营业点)很多,每天提交的数据了是非常大(没有具体,假设)。服务器/DB会卡死。

问下大家有什么好的高性能优化方案(从软件考虑)?


注意:上传数据后 还要 返回操作结果
...全文
5217 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-07-27
  • 打赏
  • 举报
回复
高并发接口开发 VereRPC 微分布式远程调用框架

http://www.verejava.com/?id=1756827901192
你好毒你好毒 2018-04-12
  • 打赏
  • 举报
回复
最好采用消息队列,只要保证数据最终的一致性就好,如果对数据的持久化要求不高直接存缓存采用lru清除机制保证热点数据就好,反之存数据库,如果数据压力过大而且不计成本的话,可以采用某个字段做一致性hash分多库的的方式,再细一点可以按日期或月进行分表,当然了分库分表的策略很多,任意选就好,如果还要保证接口的高可以用可以做分布式部署,前面加个nginx做反向代理和负载均衡
menghaipeng 2018-03-21
  • 打赏
  • 举报
回复
从简单方面入手,比如说借鉴executor多线程框架里面的处理方式,用多任务异步去执行,返回一个友好提示。数据库写入瓶颈,那得从数据库优化入手了,也可以用MQ异步写入减轻并发写入的压力。不是简单一两句说得清楚的。感觉分布式是最好的方式,但是带来的问题也多。
架构师大头兵 2018-03-20
  • 打赏
  • 举报
回复
分布式部署,负载均衡处理,问题面有点大
架构师大头兵 2018-03-20
  • 打赏
  • 举报
回复
引用 2 楼 inrtyx 的回复:
不能等处理完结果才响应客户端。不然处理太慢的话,连接一直挂在那边。
看看能不能异步处理
liangtu 2018-03-05
  • 打赏
  • 举报
回复
接收和处理分开。
qswtyn 2017-12-13
  • 打赏
  • 举报
回复
把这个上传做成单独的服务 有自己业务单元和数据库、缓存等,数据库可考虑分库,定期写,避免锁表时间过长
I_AM_ROOT__ 2017-11-26
  • 打赏
  • 举报
回复
负载均衡貌似解决不了问题 题主的问题集中在 : 高并发导致服务器/DB卡死。 你说的卡死模棱两可,到底是服务器卡死还是DB卡死? 如果是服务器卡死那就负载均衡了,但是根据题主所说的 “由于客户端(营业点)很多每天提交的数据了是非常大” 我猜想并不是服务器卡死 而是高并发导致不优秀的DAO层算法导致了每个并发的锁表时间太长 才导致的“卡死” 那么问题就到了高并发导致数据库卡死的解决方案: 使用缓存,定期写库 优化算法,异步提交
ying1234 2017-11-25
  • 打赏
  • 举报
回复
提交数据以文件形式上传,放在不同目录下,(每个营业点有自已唯一编号),上传成功,对于客户端来说就已经是提交数据成功了。服务端有个程序不停地扫描目录,读取文件写入数据。有可能数据格式不对,导入数据库失败,有个日志表记录成功或失败信息,供客户端查询上传的数据结果. 上传服务器目录成功时,向日志表写一条数据,记录数据状态为“待导入”,如果导入数据库失败,更写状态为导入失败,能查看失败原因,导入成功,才能整个流程成功,更写数据状态为"上报成功"
hzz1988 2017-11-24
  • 打赏
  • 举报
回复
我们现在做的千万级接口服务,用的是开源dubbo
31737951 2017-11-24
  • 打赏
  • 举报
回复
1. 事务相关的分布式数据库 2. 非事务相关的异步 + 队列 kafka,rocksdb,redis等
  • 打赏
  • 举报
回复
基本上提高并发性能的策略就是: 同步变异步 使用索引 使用缓存 部署多服务器,以空间换时间
xiaotuni 2017-09-19
  • 打赏
  • 举报
回复
可以试试,队列呢
airwolf1217 2017-09-05
  • 打赏
  • 举报
回复
把数据库分为读库和写库,然后在空闲时候同步其数据(同步数据的速度非常快,这你不用担心) 把数据库水平分库(按照表的大小分)和垂直分库(按照业务分),加索引,分析索引是否真能提高性能,不用外键,加上缓存。 耗时主要耗在读写数据库上,内存操作还是很快的
  • 打赏
  • 举报
回复
上传数据 是 上传一个文件,然后服务器 读取这个文件再处理吗? 还是说客户端实时的同步的提交一些数据给服务器? 这个场景还是有必要 具体描述的
Keson168 2017-08-09
  • 打赏
  • 举报
回复
之前遇到跟类似情况,针对当时的数据库瓶颈,是优化了接口操作数据库的逻辑代码,降低事务中sql锁表的时间,拆分了部分表
青年卫大师 2017-08-09
  • 打赏
  • 举报
回复
方案很多 具体看要达到什么级别的
JScala 2017-07-06
  • 打赏
  • 举报
回复
接口方面:同步请求异步响应,禁止阻塞 数据处理方面:使用缓存机制,定期写库
Jcon_ 2017-07-06
  • 打赏
  • 举报
回复
服务器接口可以建立成分布式的,增加缓存服务器。客户端提交请求到接口(分布式),接口从缓存中拿数据,然后再到数据。我现在公司的方案也是这样的。
tianfang 2017-07-04
  • 打赏
  • 举报
回复
还有就是接口使用长连接技术,系统间采用单个TCP连接,减少系统开销。
加载更多回复(5)

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧