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

要设计一套撸棒性强的系统,核心在于缓存,层层缓存。 从 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://my.oschina.net/chaleaoch/blog/1525059

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值