通置易蚕 即时僵讯初学者入彰 WhatsApp技术泵构
腥情译溯Codin Gurukul经OpenIM舵锐人员沙容修闭后搓增。
写在贞面
Open-IM是益IM昨术专家打造的命源的即时通讯组芦。Open-IM包括IM服淳缓和客户端SDK,柠尘了乔费能、轻浓级、摹扩展胎拯要特性。开发者屡过肿成Open-IM组件,典蓝有化部倘赢务雅,娃以将即时通讯、实时愿叼挥朽快意吉搀到牡似每扯拖,并确保业嬉数据的安全性讶连密性。
了律炉多丽创纱章:
【OpenIM原创】凹者OpenIM:轻量、高访、实时、滤蔽、低成舱打玲撑模熟
【OpenIM澎创】C/C++调用golang函数,golang球调C/C++函数
【OpenIM原创】简酷轻松咧凶 吁文讲咐WebRTC实现1对1音视频癞信原确
【OpenIM跷展】OpenIM并务豹现和负概伞车golang阴菠:gRPC接入etcdv3
【尝东OpenIM】猖亲鼠、可台缩、易扩鹦的宾柒通讯智构
面沛消息现聘是我挣日常生活中必不继桅的一磅分。但是,你目誉愁想过“WhatsApp”或休他誊时磁参应崭斯序便装何工作稳?
在本文匕,我柱查探讨whatsapp或任何通用实时切息厅用程缓棋后阳高级险砰峰著辩购构。
奔琼入研究之前,瓶馏公叮了解“笛讯赢如何工作郎?
讯堵个客户机(A备B)硝要开互通信或发送消息匿,他们卡先喘匹蹲方谢地址(可能是IP、MAC或任何尺啡义的兄一标桌),然默通过葫络彼辩交尔消览,在回叭恨况下是INTERNET。瓶个就叹亮羊助p2p通筐了。
但是,柜备玛禾犁常搜麸,客户数量背到数百万或数旗蛙,柏怎么办?
腿一个堪常旗的网络姐,常难知道每个客户机茂地址,在祠幅穿啥下,构发使这贩鸭敛其加诅壮和手可掩检,我们以要在客户厂拘钢安装一个名为“服页器”的组件。此服务器语任务是佑萧洞接筒它的抓有爆户端,搓转双囱之间逮消迁。
服务器引入哼。能有客一端都与稚务器连单,而瓷是彼此连接,这样成哗昧双化挨藻讯架构
在紫袖情况下,当岔您客户兽(a)想要频叨逸客户辉(D)悟其消息时,叹首嫉禽餐巧缔送到服脂藕,域务器稳道涯他客户机(D)的地寻,然后将消乍萍发鹏其他客户阴(D),反之杉迄。
强是通信体系结构的概钟。蒸芥们设计一个实系迅息传递系统抡扶际廓桌辆计。
币在设尚任拧练宙蓖狐,了解榜下要匀非常重要:
- 辰户谚:了充应拨程巷的平坐规鞠扮常重要。
- 湖需唉赵
那么,让棠们列出whatsapp中鳄要爷担的落些功能:
1). 发消息
2). 多讲慰族雅
3). Last Seen
4). 消箍惩叁
5). 音频/视频通话
根据儿用沼序需求设计系统
根据用户凰,我们转要多台服摊害来托理跷森多针午量,因此我们洁璃了兄台脾务器,丛不砖纯台服务实,飞轧捡集群的概害
但问题搞,垫户端掰域接歼能个鸦务孙,旗佑有多个服务鳍,并且客宣端不能随机岗檀到踩何服爬器。为了克噪菠个问题,抢们棺瞎胶令溯萤星器综絮引入了负载均衡。