你就想想你的需求是啥,然后去实现,就行了。
自己先被概念搞懵逼了,还怎么写代码
自己已经知道需求了(多个进程、机器服务更多连接),却不知道怎么把需求转化为代码?
回复 11# cokeboL
你说对了,以前没接触过这块,有了需求不知道怎么去实现:mrgreen:我搜索了些资料,瞧瞧先。
本帖最后由 yulihua49 于 2017-07-13 11:37 编辑
leiing 发表于 2017-07-11 10:43
多谢各位大牛的耐心解答。
其实我只是想简单的了解,用途就是一般通用型C/S服务器,服务器就绑定一个ip, ...
你这个比较接近交易中间件的应用。负载均衡是实现分布式的一种手段。
也可以在前端开发一个管理服务器,所有客户端接入管理服务器。由管理服务器分解任务为多个可并行部分,并行发布到后端的多个服务器(每个服务器有多个连接/线程/核,管理器采用三维连接池管理这些资源,超额的任务请求在排队机,每个路由一个排队机)。然后从多个服务器接收处理结果,对整体任务进行完整性判断,在回复给客户端。可以看出来,这个管理器要完成负载均衡,交易路由处理(什么任务找什么服务器),交易完整性管理,交易安全管理(只处理合法的交易,把一切非法链接拒之门外)。。。。。
它同时处理大量客户端连接,并且完成各自的并行算法,就是说在交易层面和算法层面提供并行操作。
这是一个已经实现的架构,已经在生产系统使用多年。
三维连接池:
pool[路由号][服务器号][连接号]。
路由:任务的性质,找哪一类服务器。
服务器:每个任务可以由多台服务器构成,通过负载均衡算法找到其中一台。这就是分布式的含义,包括容错功能。
连接:在一个服务器设有多个连接,每个连接一个线程,每个线程一个核,实现最大并行度。这是并行性的含义。
绑定1个IP,就是管理服务器的前端侦听IP。前端接入上万的客户端。再前端,可以是web服务器群,每个web服务器配给若干连接。在web服务器内也是用连接池管理。而且可以分布在世界各地。
这是一个典型的MVC架构,M,模块,完成业务数据处理功能,由服务器群担当。C,控制,由管理服务器担当,V,view,由web服务器群担当,最终的展现由浏览器担当。
这些功能都已经实现了通用架构,只需插入应用插件即可实现客户的特定功能。
了解的不多。好像有中间件,ACE,ICE等 回复 14# yulihua49
谢谢耐心解答,很有帮助:em03: 分布式的难点在于错误处理, 很难判断和处理,例如:
一个消息包发出去以后,没有响应,超时,很难判断对端处于什么状态,也不知道对端是否已经收到了消息,也不知道消息处理到哪一步骤,
例如:网络临时阻塞,网卡坏了,网络交换机坏了,网线断了, 对端死机,对端过忙无法响应,对端掉电, 对端相应进程crash,对端重启中, 对端没有收到消息, 对端收到了消息还没有处理, 对端收到了消息处理了一半,对端收到了消息已经处理完毕还没有返回响应,对端收到了消息并且返回了结果但是网络不通,对端收到了消息并且准备返回结果但是死机了。。。。。。。。。。。。。。。。。。。。。。
所以, 分布式的关键是容错,就是出现错误后的处理。 本帖最后由 yulihua49 于 2017-07-13 19:19 编辑
wlmqgzm 发表于 2017-07-13 16:59
分布式的难点在于错误处理, 很难判断和处理,例如:
一个消息包发出去以后,没有响应,超时,很难判断对 ...
讲到点子上了。我说的那个管理器框架,就有一套超时处理机制。由于epoll不支持超时,所以动用了一些复杂的机制。总的来说,是在可能超时的节点安排由应用用户确定的超时时间的设定,并且支持用户设定的回调函数来解决超时后的事务完整性。
那个是生产系统,超时和事务完整性是极其重要的组成部分。一个ACC(清分清算)系统,它所处理的数据,一条不能多,一条不能少,一条不能错。
不管发生任何故障都是如此。
页:
1
[2]