如何设置一套强鲁棒性系统

date
Jun 7, 2021
slug
43
status
Published
tags
Backend
summary
type
Post
这个是从某处复制来的, 但是太久了, 好几年了, 出处记不得了..
要设计一套撸棒性强的系统,核心在于缓存,层层缓存。 从 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 连接数,最大打开文件数等等,可以优化的地方太多了。
 

© chaleaoch 2021