如何设计一个鲁棒性强的系统

要设计一套撸棒性强的系统,核心在于缓存,层层缓存。
从 cdn 缓存到 view 层缓存到业务逻辑缓存到数据库缓存到内存缓存到 cpu 一级二级等缓存。

如果用 django ,就应该抛弃他的模板渲染。
只基于 restful 输出 json ,然后基于 nodejs 做模板数据组装与 json 数据缓存。

然后用户前端完全可以使用 reactjs/angularjs 做单页 web 应用,这样可以节省许多无意义的 html 数据流量,很大程度节省服务器带宽。

nginx 和 nodejs 以及 redis 的异步 IO/事件驱动模型天生就是为这种高并发的 io 请求而生的。

说完 web 说业务逻辑,业务逻辑可以设计的很美。
比如创作社区,可以解耦和为博客系统,论坛系统,图片(文件)存储系统,评论系统,用户系统等。
各个系统之间使用 restful/webservice/私有协议/异步队列来进行相互之间的通信。
哪一个系统的模块如果成为瓶颈,那么就给这个模块增加相应的机器 /容器。
用户多了后图片系统撑不住,负荷大大超出其他系统,那么可以给图片系统增加机器。
在这方面, docker 是个很好的容器工具。

一个系统拆分成一个一个足够小足够好的模块后,各模块就变成的单独的服务, a 如果依赖 b ,那么 a 直接调用 b 的服务接口。
一个系统里模块多的话,你调用我我调用你,调用关系就会变得很复杂,变成一个网。
这时候就需要引入服务治理,需要一个注册中心给各个服务自己注册。
java 方面阿里巴巴在这块专门有一个 dubbo 框架,基于 netty 的一个异步非阻塞的 nio 网络框架。 python 方面我还不了解。

再说业务缓存,业务缓存的设计是最能体现出一个程序员理解和提炼需求,掌控业务的能力,
基于 aop 的拦截机制 ,哪些方法该走缓存,什么时候该刷新缓存,分布式缓存下如何做到数据的同步,这些都是细微之处见真功。
再说数据库层面,既然选了 mongodb ,读写分离,索引什么的就不说了,如何做到基于业务的请求,少查询库。

返回部分 json 也是调优特别该注意的地方。
数据量上来的话,可以考虑数据分片,这方面, hadoop 等都不错。
再说操作系统层面, linux 内核级的调优, http 连接数,最大打开文件数等等,可以优化的地方太多了。

转载的是某个帖子的回复,当时复制粘贴了下来,出处已经找不到了。

转载于:https://www.cnblogs.com/chaleaoch/p/7324867.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值