【京东咚咚架构演进】-- 好文收藏

索引:

目录索引

架构好文学习,攒~~

京东咚咚架构演进 -- By 【瞬息之间】

名词解释:

  Apache MINA: 百度百科

  HAProxy: 百度百科

1.0 架构笔记:

  优点:模型结构简单---理解起来简单;开发起来简单;部署起来也简单。

  缺点:效率和扩展---这个模型实际上是一个高功耗低效能的模型,不活跃的连接在那做高频率的无意义轮询,高频有多高呢,基本在 100 ms 以内,

     你不能让轮询太慢,比如超过 2 秒轮一次,人就会在聊天过程中感受到明显的会话延迟。 随着在线人数增加,轮询的耗时也线性增长,

     因此这个模型导致了扩展能力和承载能力都不好,一定会随着在线人数的增长碰到性能瓶颈。

2.0 架构笔记:

  改进点:业务功能体验的提升上---针对无法及时提供服务的顾客,可以排队或者留言。 针对纯文字沟通,提供了文件和图片等更丰富的表达方式。

      另外支持了客服转接和快捷回复等方式来提升客服的接待效率。

3.0 架构笔记:

  改进点:业务划分服务,且服务进行分层---服务化的第一个问题如何把一个大的应用系统切分成子服务系统。

      按业务重要性级别划分了 0、1、2 三个级别不同的子业务服务系统。 另外就是独立了一组接入服务,针对不同渠道和通信方式的接入端。

      服务架构&分层---a.UI接入层 --- 客服用(web/app..)系统,员工用(web/app/pc...)

                b.负载均衡层 --- TCP长连接,HTTP短连接

                c.路由服务层 --- 路由 Tracker

                d.业务服务层 --- 业务子系统及API服务

                e.基础服务层 --- 基础框架服务(安全/风控/资源分配...)

                f.资源服务层 --- DB/Cache/NoSQL/MQ....

      消息投递模型---不再是轮询了,而是让终端每次建立连接后注册接入点位置,消息投递前定位连接所在接入点位置再推送过去。

             这样投递效率就是恒定的了,而且很容易扩展,在线人数越多则连接数越多,只需要扩展接入点即可。 

             使用了 MongoDB 来单独存储量最大的聊天记录。 

4.0 架构笔记:

  拍拍网消息缺陷:a.复制工程,定制业务开发,多套源码维护成本高

          b.独立部署,至少双机房主备外加一个灰度集群,资源浪费大

  系统持续演进:面向平台---始考虑面向平台去架构,在统一平台上跑多套业务,统一源码,统一部署,统一维护。 把业务服务继续拆分,

         剥离出最基础的 IM 服务,IM 通用服务,客服通用服务,而针对不同的业务特殊需求做最小化的定制服务开发。

         部署方式则以平台形式部署,不同的业务方的服务跑在同一个平台上,但数据互相隔离。

         细粒度服务开发---更细粒度的服务意味着每个服务的开发更简单,代码量更小,依赖更少,隔离稳定性更高。

  架构VS业务: 技术架构没有绝对的好与不好, 技术架构总是要放在彼时的背景下来看,要考虑业务的时效价值、团队的规模和能力、

           环境基础设施等等方面。 架构演进的生命周期适时匹配好业务的生命周期,才可能发挥最好的效果。

                                         蒙

                                    2017-08-02 09:20 周三

原文地址:https://www.cnblogs.com/Meng-NET/p/7272108.html