永发信息网

java 高可用高并发系统怎么设计

答案:2  悬赏:80  手机版
解决时间 2021-02-27 11:42
java 高可用高并发系统怎么设计
最佳答案
说实话 从软件或代码角度 没辙 都是长连接 逃不掉的
只能从系统设计上去考虑,大致上会有以下这两种思路(基本上是都用的):
1、对于所有的上传的文件,根据随机生成的名称或code取hash用策略取模,分服务器存/取文件,保证不触及io瓶颈,内部文件同步策略自己考虑
2、对所有请求,分pop点分发,根据用户的物理地址选择相应较近的pop点处理请求(当前pop请求已满则顺延至下一pop点,依次类推)
全部回答
我用的java nio,一般常用的高并发io框架,也是用的这个做扩展。 java nio是在jdk1.4开始使用的,它既可以说成“新i/o”,也可以说成非阻塞式i/o。下面是java nio的工作原理: 1. 由一个专门的线程来处理所有的 io 事件,并负责分发。 2. 事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 3. 线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。 java nio的服务端只需启动一个专门的线程来处理所有的 io 事件,这种通信模型是怎么实现的呢?呵呵,我们一起来探究它的奥秘吧。java nio采用了双向通道(channel)进行数据传输,而不是单向的流(stream),在通道上可以注册我们感兴趣的事件。一共有以下四种事件: 事件名 对应值 服务端接收客户端连接事件 selectionkey.op_accept(16) 客户端连接服务端事件 selectionkey.op_connect(8) 读事件 selectionkey.op_read(1) 写事件 selectionkey.op_write(4) 服务端和客户端各自维护一个管理通道的对象,我们称之为selector,该对象能检测一个或多个通道 (channel) 上的事件。我们以服务端为例,如果服务端的selector上注册了读事件,某时刻客户端给服务端发送了一些数据,阻塞i/o这时会调用read()方法阻塞地读取数据,而nio的服务端会在selector中添加一个读事件。服务端的处理线程会轮询地访问selector,如果访问selector时发现有感兴趣的事件到达,则处理这些事件,如果没有感兴趣的事件到达,则处理线程会一直阻塞直到感兴趣的事件到达为止。下面是我理解的java nio的通信模型示意图:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
室内设计和景观设计在哪些城市发展较好?
电脑怎样设置一个密码
欧L怎么去啊,有知道地址的么
青岛李村集都是什么时候赶啊~
涉县汽东印刷厂地址在什么地方,想过去办事
把一个长方行拉成平行四边形面积缩还是是增大
约翰尼德普和莱昂纳多的关系
交通银行y-power信用卡黑卡额度一般是多少
安徽三一工程建筑有限公司地址有知道的么?有
【桔子比梨多5个,桔子和梨之比是5:3,问桔子和
农历腊月十五去世好吗
alcohol-resistantfoam,是什么意思
威海市三剑服装材料设备有限公司地址在哪,我
Sinead O'Connor还有哪些歌好听?
腿起皮 干 用什么沐浴露
推荐资讯
上古卷轴5一天是多少分钟?
我是卖木制立体拼图的淘宝店铺开了两个月了还
左肾结石7*4MM严重吗?需要吃什么要碎石呢?
聚鑫温室大棚地址有知道的么?有点事想过去
【形容词顺序】英语形容词排序口诀?急
和泰里一区地址在哪,我要去那里办事
赛琪怎么去啊,有知道地址的么
猜成语2一个数字5一个4一个天使女孩
下列不属于西藏在古代的名称的是
那马中心幼儿园在什么地方啊,我要过去处理事
陵墓中的天井有什么用
2017年985大学各校在福建省招生共多少人
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?