自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(18)
  • 收藏
  • 关注

转载 分布式事务利器——RocketMQ事务消息的启示

一、大事务 = 小事务 + 异步我们以一个转帐的场景为例来说明这个问题,Bob向Smith转账100块。这个列子在瓜子也有很多实际场景映射,如:车源状态变化,订单状态变化,金融放款,物流运输……在单机环境下,执行事务的情况,大概...

2019-07-01 18:03:43 261

转载 IM系统海量消息数据是怎么存储的?

一、与消息相关的主要场景1、存储和离线消息。现在的IM系统,消息都要落地存储。这样如果接收消息的用户不在线,等他下次上线时,能获取到消息数据。2、消息漫游消息漫游包括主要两种场景,(1)用户新安装IM软件,要能看到以前的聊天记录...

2019-03-26 17:49:11 6021

转载 10分钟弄懂Raft算法

分布式系统在极大提高可用性、容错性的同时,带来了一致性问题(CAP理论)。Raft算法能够解决分布式系统环境下的一致性问题。我们熟悉的ETCD注册中心就采用了这个算法;你现在看的这篇微信公众号文章,也是保存在基于Raft算法的高...

2019-02-27 16:09:52 555

转载 一个海量在线用户即时通讯系统(IM)的完整设计

1 服务器端设计1.1 总体架构总体架构包括5个层级,具体内容如下图。1.1.1 用户端移动端重点是移动端,支持IOS/Android系统,包括IM App,嵌入消息功能的瓜子App,未来还可能接入客服系统。1.1.2 用户端A...

2019-02-27 16:08:29 1845

转载 ID生成策略——SnowFlake

一、遇到问题某个项目采用了数据库(MySQL)自增ID作为主要业务数据的主键。数据库自增ID使用简单,自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利。单库环境下,数据库自增ID问题不大。但在分布式环境或分库分表环...

2019-02-15 17:28:08 715

转载 微服务拆分到什么粒度合适——康威定律

微服务这个概念一直很火,现在ServiceMesh概念更火,最近我经手的多个项目也都采用微服务的方式开发。但实践发现,当一个RD同时开发超过2个微服务的时候,出现bug或故障的概率会提升。我现在看项目的时候会不自觉的关注工程服务...

2019-01-24 16:05:54 641

转载 HttpOnly是怎么回事?

最近配合公司安全团队开展一些工作,安全团队建议,内部系统(用户端系统有跨域需求,其他方式解决更合适)对接SSO建议开启HttpOnly。HttpOnly?没听说过,赶紧百度一下。一、什么是HttpOnly根据Jordan Wie...

2019-01-14 17:39:19 1051

转载 58到家多端消息整合之路

经历野蛮发展阶段后,58到家存在众多消息收发场景及不同技术。案例分享总结多个业务场景下消息收发的难点与挑战,梳理各项技术的特点,结合实际业务及研发需求,构建了一套通用消息投递方案。方案建立统一的端到端、端到服务器、服务器到端的消...

2018-12-06 16:58:57 203

转载 Tigase手动安装过程

公司要做一个IM系统,现阶段人力资源很有限。产品、研发、测试目前就我一个人。跟领导沟通后决定先采用开源原件tigase先解决有无问题,后续人员到位后进行重构。本文主要介绍生产环境下tigase的安装问题(此次安装是在测试机器中进...

2018-12-06 16:55:45 205

转载 JWT技术解决IM系统的认证痛点

一、痛点随着业务的发展,多个业务线接入了IM系统,IM系统长连接的安全问题变得很重要。瓜子有统一登录认证系统SSO,IM长连接通道也利用这个系统做安全认证,结构如下图。认证步骤如下1、用户登录App,App从业务后台拿到单点系...

2018-11-16 14:16:57 313

转载 基于TimeLine模型的消息同步机制

我们当前的IM虽然进行了微服务化,但是核心的消息投递模式仍然采用下图描绘的方式,参看《一个海量在线用户即时通讯系统(IM)的完整设计》。在这个方式下,消息同步的基本思路和步骤如下(序号不对应图中序号)1、把消息存储到离线收件箱2...

2018-11-08 15:40:36 1223

转载 TimeLine模型下确保消息有序不丢

通过《基于TimeLine模型的消息同步机制》一文,我们了解到Timeline模型有非常多的优点,也是钉钉采用的消息同步机制。实际工作中,我们也将该模型应用在了C端用户的消息场景中。实施过程中也遇到了一些问题,积累了一些经验。本...

2018-11-08 15:37:23 323

转载 Redis SortedSet结构score字段丢失精度问题解决办法

一、问题现象项目中采用Redis SortedSet存储用户的离线消息,score值存储的msgid(消息ID)。msgid采用snowflake算法生成,按照时间有序。(参看《一个海量在线用户即时通讯系统(IM)的完整设计》)...

2018-10-30 15:58:36 1793

转载 瓜子智能在线客服整体架构

瓜子业务重线下,用户网上看车、预约到店、成交等许多环节都发生在线下。瓜子智能在线客服系统的目的是要把这些线下的活动搬到线上,对线下行为进行追溯,积累相关数据。系统连接用户、客服、电销、销售、AI机器人、业务后台等多个角色及应用,...

2018-10-30 15:57:03 481

转载 如何高效计算DAU

项目中一直有计算DAU这类的需求,业务开发者往往埋个点,其他是事情就交给数据团队了。如果自己要做一个这样的计数器怎么做呢?一个朴素的想法是通过hashmap实现,时间复杂度是O(1)。这个方法在计数对象较少的情况下还是不错的,但...

2018-10-30 15:43:22 2398

转载 HBase的表结构你设计得不对!

正如我在前面章节强调的,HBase数据模型跟关系型数据库系统有非常大的差异。因此,设计Hbase的数据表的方法和思路跟关系型数据库不一样。设计HBASE表应该在具体业务场景的上下文中回答以下问题:1、rowkey结构应该是什么,...

2018-10-30 15:32:25 194

转载 快速理解HBase和BigTable

有关系行数据库经验的人(比如我),在最初接触HBase这样的数据库时,对数据结构的理解容易遇到障碍。会不自觉的将HBase的行、列等概念映射成关系型数据库的行、列。为了加速理解HBase的一些概念,翻译了这篇文章《Underst...

2018-10-30 15:29:52 827

转载 一篇文章掌握常见的网站攻击方式

最近兼职部门的安全接口人,时不时收到信息安全部发过来的漏洞,有些漏洞看得一头雾水(没文化真可怕)。赶紧普及一下常见的安全问题。这篇文章主要描述常见的网站攻击方式(OWASP是世界上最知名的We...

2018-10-24 14:43:26 556

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除