单个节点,进程间的负载均衡可以通过cluster、pm2实现; 但是多个节点之间如何实现高可用架构呢,不用nginx,单纯用node来实现有方案吗
@i5ting 狼叔有什么好的建议
haproxy也不错,纯node实现没有nginx效率高,负载算法也比较麻烦,另外就是周边nginx还是很强的
在最开始待的公司做过,其实也比较简单吧: 1.设计一个Master节点进程,不负责业务逻辑,只负责收集各个业务节点上报的服务器信息(服务器cpu、各个业务进程的内存以及tcp连接数等参数,具体和你业务相关的负载信息) 2.Master节点定时对收集到的信息进行计算处理,统计出各个业务节点的平均耗费,这里的各项信息的权重由你的业务确定 3.客户端第一次负载均衡请求打到Master节点,由Master节点根据统计的信息计算当前压力最小的业务节点,然后返回这个业务节点的ip端口路径等信息给客户端 4.客户端和真正分配到的业务节点做通信 5.客户端可以设置一些缓存分配到的业务节点的策略,比如多少时间之内不再向Master节点请求负载均衡
其实这些都是多余的,好多现成的工具都能做这一块,除了nginx还有比如netscaler这些。当然定制化负载均衡模块可以更加贴合你的业务,好处似乎仅此而已吧
@i5ting 那用nginx的话,node代码不用做什么对接之类的吗,另外,消息队列是什么时候用的,前端转过来,后台学习中。。;)
@hyj1991 造轮子工作量巨大。。请问代码层面如何做改动,支持可扩展;)