大多优秀的开源的后端程序,通常有三个部分组成,而这些都完全独立开发。
协议
本质是有对外沟通(通讯)的需求,服务于client与server。
- 大多数情况下,我们采用内置的通用网络协议(http或各种rpc)
- 也可以自定义网络协议,只需提供序列化和反序列化函数,就可以定义出自己的
算法
常言道:数据是稳定的,处理是多变的,而算法着手于在稳定的数据结构中,提供高效丰富的计算,评估它的标准在于时间及空间复杂度。
通用算法有:sort,merge,map-reduce等
任务流
任务执行的宿主是线程,常见的基础任务:通讯,文件IO,CPU,GPU,定时器,计数器
- 任务流就是实际的业务逻辑,就是把开发好的协议与算法放在流程图里使用起来
- 所有任务都是同步或异步执行的
- 典型的任务流是一个闭合的串联操作,复杂的业务逻辑,可能是一个非闭合的DAG
当然我们知道了这些,就可以系统化的思考我们在构建系统的过程。