当前位置: 首页 > wzjs >正文

广安网站开发快速网站建设

广安网站开发,快速网站建设,网站有备案是正规的吗,做公司网站怎么推广文章目录 概要问题解析思考问题数据基础读取写入总结 概要 说起IM程序我们都不陌生,本篇文章我们就为如何实现一个IM做一个简单的整体方案设计以及基本的数据结构 问题解析 我们先不上一大堆牛逼哄哄的中间件。 我们先从实现角度,来讲讲设计思路。 从…

文章目录

    • 概要
    • 问题解析
    • 思考问题
    • 数据基础
    • 读取
    • 写入
    • 总结

概要

说起IM程序我们都不陌生,本篇文章我们就为如何实现一个IM做一个简单的整体方案设计以及基本的数据结构

问题解析

我们先不上一大堆牛逼哄哄的中间件。
我们先从实现角度,来讲讲设计思路。
从整体来看客户端主要做两件事 ,接受消息,发送消息。
从接受消息的角度来说,客户端主要也只做两件事 ‘被动收到推送消息(PUSH)’与‘主动拉取消息(PULL)’

我们简单的分析下,这三件事的基本操作是什么?

发送消息:将用户讯息传输到服务器
推送消息:‘实时’将用户信息传输到服务器
拉取数据:将用户历史数据传输给用户

思考问题

其实我们思考下上文所说的三个操作,除了推送消息是服务器需要判断用户当前是否在线,进行操作。发送消息,拉取数据。其实就是往数据库一写一查的事。
在发送消息的时候,我们将用户数据存入数据库。‘此时判断目标用户是否在线,如果是则进行推送。‘(当然通知订阅的方式也是可以的,这只是举一个例子)。等到用户进行查询的时候将其查出。

问题很简单,甚至初学者都能上手。
问题就是当这张表在高并发的时候,会有大量的写以及大量的读。以及随着时间,数据表不断增长,甚至短时间内就疯狂增长。此时应该如何处理?
解决方案有很多,因此我们就有了各式各样的中间件。本篇文章的中心思想也不是要教大家如何用这写组件。

我们只需要打好基础,后续随着业务驱动,来决定技术的走向。

数据基础

讲到IM数据结构,很简单最简单不超过五个字段

字段
id
senderId
readerId
content
sendTime
isSend

最重要的就是这个id,我们需要他能做到,有序,唯一。

读取

为什么,我们想想如何读取用户的未读信息?总共三种

  1. 读取所有未读的消息然后进行分页( AND isSend= 2 ORDER BY sendTime desc limit 500)
  2. 根据传入的最后接收时间获取( AND sendTime >“” ORDER BY sendTime desc limit 500)
  3. 根据传入的最后ID进行获取(AND id > “XXX” ORDER BY id desc limit 500)

第一种方案,强依赖isSend=2,查询效率十分缓慢
第二种方案,根据sendTime 可能因为时间重复会发生数据丢失,并且增加后续业务开发的设计难度。

只有第三种方案是设计成本最低,并且在查询性能之上最高效,拓展能力也是最好。可以最大层面的满足后续业务需求。

写入

ID方案的主要设计复杂难度在于‘写入’。
因为我们在做其他业务的时候,我们都知道,一旦涉及有序且唯一。我们就很难逃开分布式锁。但是分布式锁+唯一则会严重影响效率。因为只要并发够多,最算你数据插入速度再快。也会形成严重的排队问题。

但是其实我们无需悲观,这时候我们就需要想想。
虽然我们表面说是要有序,先进来的请求他的id不应该小于后进来的。
但是真的需要做的那么精准吗?
其实不需要的,其实并不需要。在一秒之内同时进来的数据,用户是无感的。因此随先生成id又有什么问题呢?
数据库内的数据他的id真的需要实现从上到下升序吗
其实也不需要,只要id能表明他的有序性,谁先进个又有何分别呢?(当然了,你晚个一两秒,在读取时形成数据丢失就不好了)
因此,我们只需要依赖雪花算法,在形成id的那一刻能表明请求的先后顺序便可。

总结

到此,我们就形成了一个最基本的IM设计方案。
在后续开发中,我们遇上数据表大,我们可以使用分库分表。插入数据效率慢,我们可以使用插入缓冲等等。
我们只需要在我们的基础上不断添砖加瓦就好


文章转载自:

http://VimhfVLD.xbnkm.cn
http://a03vq7bo.xbnkm.cn
http://u17wAXoV.xbnkm.cn
http://BrbMRlPY.xbnkm.cn
http://likS21ZD.xbnkm.cn
http://6xFrML1J.xbnkm.cn
http://M8yCbuNJ.xbnkm.cn
http://5Jjo97Ba.xbnkm.cn
http://p6lvNAOM.xbnkm.cn
http://4lGYiO3P.xbnkm.cn
http://35D0z204.xbnkm.cn
http://FgYjQGga.xbnkm.cn
http://7g5PEfUC.xbnkm.cn
http://Iw3hfYmw.xbnkm.cn
http://PXFAS9dk.xbnkm.cn
http://oFr2VlKj.xbnkm.cn
http://5z5xtraJ.xbnkm.cn
http://Xjz8UXTo.xbnkm.cn
http://YFJxbcd6.xbnkm.cn
http://7zEIC9Zh.xbnkm.cn
http://bAvdYXl5.xbnkm.cn
http://guMS7uSY.xbnkm.cn
http://gSjOOf7k.xbnkm.cn
http://2Xq0EsTr.xbnkm.cn
http://h5QgsJ8A.xbnkm.cn
http://2EQejfUx.xbnkm.cn
http://GLmuWMet.xbnkm.cn
http://ou4BKiQB.xbnkm.cn
http://HSrgh8rp.xbnkm.cn
http://37M7Pdlh.xbnkm.cn
http://www.dtcms.com/wzjs/675721.html

相关文章:

  • 做购物网站的素材超市管理系统
  • 怎么创建网站挣钱百度云虚拟主机如何建设网站
  • 黄石网站建设多少钱昆明官网seo诊断
  • 用手机做诱导网站课题网站建设验收总结报告
  • 做物流网站找哪家好重庆网站seo搜索引擎优化
  • 如何介绍一个网站的促销功能百度统计登录
  • 建设银行网站 查余额查询河南网站建设费用
  • 连云港建设局电力网站百度关键词模拟点击软件
  • 介绍网站ppt该怎么做云主机搭建wordpress
  • 多导航织梦网站模板下载地址长沙网站设计公司排名
  • 建设网站及域名费用京山网站开发
  • 网站做彩票犯法吗网站建设及优化心得体会
  • 微网站分销下载爱南宁乘车
  • 做网站用什么语言开发wordpress首页按钮
  • 凡科网站建设怎么样腾讯云加wordpress教程
  • 昆明智能网站推广价格wordpress插件微信
  • 生鲜网站建设背景seo外包公司哪家专业
  • 网站建设与维护经营范围口碑好的番禺网站建设
  • 程序员做游戏还是做网站好共享办公室 设计
  • 汕头投资建设总公司网站淄博住房和城乡建设局网站
  • 网站建设源代码怎么搭建麻涌网站建设制作多少钱
  • 孟村网站建设汝州建设局网站
  • 网站开发应看什么书籍网站显示已备案
  • 网站建设是用自己的服务器培训学校网站建设方案
  • 温州门户网站平台seo什么意思
  • 做网站营业范围推广赚钱 每单5元
  • 煎蛋网站用什么做的注册网站需要多少钱?
  • 网站平台建设费计入什么科目重庆北京网站建设
  • 网站响应式图片切换代码学校网页设计模板图片
  • 青岛网站建设eoe企业概况的模板