随着互联网数据的爆发式增长,互联网业务的发展速度已经明显高于计算机硬件的发展速度。在此背景下,我们可以看到仅靠单机系统能解决的问题越来越少,而越来越多的领域和应用场景需要构建分布式系统。C++作为native的编程语言,由于其高性能、轻量级的特点广泛应用于现代分布式系统中,如Tensorflow、Caffe、XGboost、Redis等都选择C/C++作为主要的编程语言。
相比单机应用,想要构建一个功能完善、高可用、可应用于生产环境的C++分布式系统并没有那么简单。通常我们需要做以下考虑:
解决通信问题。我们通过protobuf等序列化工具定义组件间的通信协议,然后通过RPC框架(或者socket)实现通信。这里面还需要考虑服务发现、同/异步IO和多路复用等问题,整个实现较为繁琐。
解决部署问题。我们需要找到满足特定资源规格的服务器,对不同组件的进程进行部署。这个过程可能需要对接不同的云平台实现资源调度。
解决故障恢复问题。监控任意一个节点的故障事件,重启并恢复系统状态。
看起来,整个实现中需要考虑的问题非常多,完成所有这些事情并不容易。那么有没有一个系统,能够帮你解决以上所有的分布式问题,让你能够专注在系统本身的逻辑上呢?随着Ray的到来,理想即将成为现实。
Ray是什么整体介绍Ray(