给点建议!开源项目架构选择!仿腾讯IM后端项目!InChat!

希望各位猿类给点建议或者提一些新的方案思路!

前言

小弟无心插柳的聊天项目InChat(一开始叫SBToNettyChat)在广大互联网朋友的积极推动下,慢慢步入正轨,目前2个月(一周4小时开发时间的速度····)迭代着,已经50Star,对于小弟也是很大的肯定,小弟今年7月开始在GitHub做开源,对于开源还不太了解,不过想借助这个InChat项目正式开启开源之路

项目地址:https://github.com/UncleCatMy...

图片描述

项目的核心目标也做了转变,目前的大方向就是仿造腾讯IM服务端,以接口的形式提供给中小型团队做IM服务。项目核心是基于Netty改造的。

项目中还添加了Iot的物联网通信功能,这个不是本文重点就略过。

问题环境

项目预想环境:在用户量极大的情况下,将InChat配置为多台服务器,集群的环境,则可能存在用户连接实例在不同的服务器上,则需要如何将Server-One的用户A 发的消息发给 Server-Two的用户B,单台服务器下的点对点发送是简单的,但是跨服务器的话,连接实例只能存放在本服务器中。

猜想一

图片描述

这种是用到了分发器的思路

集群环境下多个用户在不同服务器登陆后,会将所用用户的登陆信息与服务器位置统一存放到Redis中,前端通过API调用,json格式A发送给B message时,由分发器去查询Redis中B的服务器是one还是two,然后向其中发送message

猜想二

图片描述

使用消息队列,处理直接放到每台InChat中

接口服务器只负责生产投递消息

交流与问题

以上两种是我想到的方式,是否还有更好的形式,我会后期整理更新到项目中(开一个新的分支)

项目QQ群交流:628793702


图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Project给任务分配资源

视图:资源工作表 现有资源如下: 项目经理,工时类资源,55元每小时,3月份在当前项目平均每天只能投入一半的时间 视图:任务分配状况工具 此视图分配给任务分配资源特别方便,分配任务的资源为“…

gdiplus判断一个点是否在圆弧线上_福建教师招聘考试小学数学面试教案:圆的认识...

开门见山地说:学科知识与教学能力教案设计知识点总结(查看更多)闽小狮:2020年福建教师招聘面试公告汇总(持续更新中)圆,根据欧几里得的《几何原本》定义,是在同一平面内到定点的距离…

Project中三种任务类型解释

概述 Project--文件---选项---日程里,有“默认任务类型”设置 三种任务类型,与资源结合起来后,就需要根据实际情况选择了。 固定单位 这是Project默认的任务类型。固定什么东西?固定的是资源单位。 资源单位定义:单…

电脑用电量_闲置电脑也能赚钱?「BOINC算力地球」借区块链技术扩大共享算力...

阎研希望在未来三到五年内,将BOINC平台的算力规模扩大到目前的四倍,这相当于目前阿里云两个大型机房的算力规模。你可曾想过,未来有一天你可以利用自己闲置的电脑来赚钱,同时还能为科研项目作出贡献,甚至突破太空&…

加了密的PDF如何破解复制?

概述 PDF被加密了,可以查看,可以打印,但是复制不了内容。 不知道密码,如何不花钱破解它? 方法 工具:谷歌浏览器,或谷歌内核的360、qq等浏览器 1.打开谷歌浏览器 2.将pdf文件拖进浏览器&…

nat - 虚拟服务器设置,nat 虚拟服务器设置

nat 虚拟服务器设置 内容精选换一换虚拟IP地址用于为网卡提供第二个IP地址,同时支持与多个云服务器的网卡绑定,从而实现多个云服务器之间的高可用性。登录管理控制台。单击管理控制台左上角的,选择区域和项目。选择“计算 > 云耀云服务器”…

新款苹果电脑_苹果真牛!iPhone的软件,苹果电脑上也照样可用了

在刚刚过去的双11大战中,几大手机厂商,打得是不可开交。为了这次年度狂欢,不仅苹果准备了iPhone12,余承东推出了华为Mate40,刘作虎亮出了一加8T,小米特供了Redmi K30S至尊版,就连久久没有动作的…

win10 设置游戏全屏

小米笔记本pro,双显卡,win10 用百度搜的修改注册表的值,没有用。 方法是: 1.桌面--右键--英特尔显卡设置 2.选择显示器 3.缩放比例,选择覆盖应用程序设置,点击应用

csgo客户文件与服务器,csgo与远程服务器

csgo与远程服务器 内容精选换一换远程连接Windows弹性云服务器后,不能复制、粘贴内容,右键单击菜单栏,“粘贴”选项置灰。未进行本地驱动器映射。服务器rdpclip.exe进程异常。系统禁止云服务器和本地主机之间进行文件的复制粘贴功能。未进行本…

java 容器都有哪些?_适合存储普洱茶的容器都有哪些?

收藏普洱茶的容器,首先强调的是无异味、无污染。就质地而言,收藏普洱茶的容器类型很多:土器、瓦器、木器、竹器、石器、陶器、瓷器、紫砂、玻璃、纸质等都可选择使用,金属、搪瓷容器密度高、透气性差,如不解决透气性问…

WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形

原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。 WPF将易用性的理念带入了3D世界&#xf…

logisim优先编码器怎么用_编码器简介、应用的stm32代码及注释

在机器人的旋转关节中、或者底盘的驱动轮中,编码器是一个很常用的部件,它用于检测输出轴的位置、转速。下面我们先从它的分类开始,后面还有一个简单的用法示例代码。磁编码器1.编码器分类: 按工作原理:光电式、磁电式和…

立项管理

项目建议书 也叫立项申请项目建设单位发起主要内容:项目的必要性、项目市场预测、产品方案或服务的市场预测、项目建设必需的条件项目可行性研究 特点 预见性、公正性、可靠性、科学性主要内容 投资、技术、财务、组织、经济、社会的可行性、风险因素及对策技术可行…

c++输出方块_【Blender】方块波浪动画音乐效果

先上结果:Blender方块动画效果https://www.zhihu.com/video/1232333427569262592老规矩:一、设置基本Wave Mesh(波浪面)创建Plane,S 8,这样宽度就是2*816m了。CtrlA/Object菜单->Apply->Apply Scale—…

Could not autowire. No beans of 'xxxx' type found的错误提示

spring 集成mybatis 找不到 beans 查了很多网页,解决办法是: 在PersonMapper 上加 Repositorypackage zengmiaogen.csdn.cn.mybatis;import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository;import java.ut…

怎么把页面按比例缩小_做PPT多图排版千万别套模板了,按这28种版式来,绝对靠谱!...

编按:各种类型的PPT经常会用到图片,这些图片到底如何排版才更出色呢?今天给大家分享一篇PPT图片排版手册,主要介绍了多张图常见的排版方式,希望能帮助到您!嗨,大家好,我是P小白。一张…

磁盘阵列怎么做_设计与后期制作该怎么选择笔记本电脑?朋克老师来教你

最近有很多人问我设计与后期制作该怎么选择笔记本电脑?既然选择笔记本电脑就说明在相关工作中对电脑有移动需求,比如自媒体、记者、影视后期出组人员等等,那该如何选择呢?视频剪辑咱们按工作内容分类聊一聊。第一类,平…

EventBus源码分析

简介 前面我学习了如何使用EventBus,还有了解了EventBus的特性,那么接下来我们一起来学习EventBus的源码,查看EventBus的源码,看看EventBus给我们带来什么惊喜以及编程思想。 这个图我们从一开始就一直放置在上面了。我们在来回顾…

Vue.js 概述与 MVVM 模式

一、Vue.js 1. Vue.js 是什么 Vue.js 是一个轻巧、高性能、可组件化的 MVVM 库,拥有非常容易上手的 API; Vue.js是一个构建数据驱动的 Web 界面的库。 2. Vue.js 的特性 1. 轻量级的框架 2. 双向数据绑定 3. 指令 4. 插件化(组件化&#…

ipad录屏软件_如何在 Mac 上优雅的截图和录屏

在使用电脑的时候,很多时候我们都需要截屏或者录屏分享。所以你可能已经听过 snip,或者经常使用 QQ、微信 等软件来实现截屏。但是今天我们一起来看一下,怎么使用系统提供的功能,来优雅的实现截图和录屏。最开始的这几篇都比较基础…