忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12
最近访问板块 发新帖
楼主: leiing

[算法] 请问如何实现分布式 [复制链接]

论坛徽章:
35
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2017-07-11 17:31 |显示全部楼层
楼主偏离了干活的本质
你就想想你的需求是啥,然后去实现,就行了。
自己先被概念搞懵逼了,还怎么写代码
自己已经知道需求了(多个进程、机器服务更多连接),却不知道怎么把需求转化为代码?

论坛徽章:
2
巳蛇
日期:2014-10-26 22:38:12天蝎座
日期:2016-01-08 09:25:17
发表于 2017-07-12 13:39 |显示全部楼层
回复 11# cokeboL

你说对了,以前没接触过这块,有了需求不知道怎么去实现我搜索了些资料,瞧瞧先。

论坛徽章:
14
射手座
日期:2014-11-29 19:22:49黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:252015年迎新春徽章
日期:2015-03-04 09:50:28
发表于 2017-07-13 10:37 |显示全部楼层
本帖最后由 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服务器群担当,最终的展现由浏览器担当。

这些功能都已经实现了通用架构,只需插入应用插件即可实现客户的特定功能。

论坛徽章:
0
发表于 2017-07-13 11:10 |显示全部楼层
了解的不多。好像有中间件,ACE,ICE等

论坛徽章:
2
巳蛇
日期:2014-10-26 22:38:12天蝎座
日期:2016-01-08 09:25:17
发表于 2017-07-13 13:39 |显示全部楼层
回复 14# yulihua49

谢谢耐心解答,很有帮助

论坛徽章:
9
程序设计版块每日发帖之星
日期:2015-10-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-01 06:20:00程序设计版块每日发帖之星
日期:2015-11-02 06:20:00每日论坛发贴之星
日期:2015-11-02 06:20:00程序设计版块每日发帖之星
日期:2015-11-03 06:20:00程序设计版块每日发帖之星
日期:2015-11-04 06:20:00程序设计版块每日发帖之星
日期:2015-11-06 06:20:00数据库技术版块每周发帖之星
日期:2015-12-02 15:02:47数据库技术版块每日发帖之星
日期:2015-12-08 06:20:00
发表于 2017-07-13 16:59 |显示全部楼层
分布式的难点在于错误处理, 很难判断和处理,例如:
一个消息包发出去以后,没有响应,超时,很难判断对端处于什么状态,也不知道对端是否已经收到了消息,也不知道消息处理到哪一步骤,
例如:网络临时阻塞,网卡坏了,网络交换机坏了,网线断了, 对端死机,对端过忙无法响应,对端掉电, 对端相应进程crash,  对端重启中, 对端没有收到消息, 对端收到了消息还没有处理, 对端收到了消息处理了一半,对端收到了消息已经处理完毕还没有返回响应,对端收到了消息并且返回了结果但是网络不通,对端收到了消息并且准备返回结果但是死机了。。。。。。。。。。。。。。。。。。。。。。

所以, 分布式的关键是容错,就是出现错误后的处理。

论坛徽章:
14
射手座
日期:2014-11-29 19:22:49黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:252015年迎新春徽章
日期:2015-03-04 09:50:28
发表于 2017-07-13 19:13 |显示全部楼层
本帖最后由 yulihua49 于 2017-07-13 19:19 编辑
wlmqgzm 发表于 2017-07-13 16:59
分布式的难点在于错误处理, 很难判断和处理,例如:
一个消息包发出去以后,没有响应,超时,很难判断对 ...

讲到点子上了。我说的那个管理器框架,就有一套超时处理机制。由于epoll不支持超时,所以动用了一些复杂的机制。总的来说,是在可能超时的节点安排由应用用户确定的超时时间的设定,并且支持用户设定的回调函数来解决超时后的事务完整性。

那个是生产系统,超时和事务完整性是极其重要的组成部分。一个ACC(清分清算)系统,它所处理的数据,一条不能多,一条不能少,一条不能错。
不管发生任何故障都是如此。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP