【CTO讲堂】SaaS云客服平台技术架构探讨

  为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由 CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评。本期邀请逸创云客服CTO刘铭带来SaaS云客服平台技术架构探讨的主题分享。

  欢迎加入CTO讲堂微信群与业界大咖零距离沟通。

  

图片描述

 

  分享嘉宾: 逸创云客服CTO刘铭

  嘉宾简介: 刘铭,逸创云客服CTO,拥有多年的SaaS企业级产品研发经验。热衷于研究各种技术,从前端的界面设计延伸到后端的服务运维,熟悉分布式,缓存,消息,搜索等机制。因看好国内SaaS发展趋势,加入逸创云客服,一直从事架构设计与产品研发等核心工作,致力于打造行业领先的云客服平台。

  公司简介:逸创云客服从成立的2011年开始就本着让企业的用户更加满意,客服更加高效,管理更加轻松的宗旨,打造中国最稳定最安全的一站式客服系统,整合呼叫中心,微信客服,在线客服,工单系统,APP客服,邮件客服,表单客服,及微博客服,成就了逸创云客服:客服信赖的一站式企业级云服务平台。

  在三年的时间里,我们始终从客户,从客服,从管理者三方的角度去完善我们的产品.也是我们这样的坚持,获得了百度,360,猿题库,申通,蜜淘全球购,uber,印象笔记等国内外30000家优秀企业的信任。

  以SaaS模式为企业打造ALL IN src="http://www.netofthings.cn/upload/2016-02/160203160272062.png" alt="图片描述" width="433" height="269" />

 

  上面这张图描绘的是逸创云客服的系统架构。

  核心系统做了不同机房的灾备切换,数据库支持主从切换和多节点备份,各种应用服务都支持集群扩展,保障整个云客服平台的高可用性。

  入口层做了DNS层的负载均衡和Http层的负载均衡,充分发挥多机房与机房内web集群的优势。

  业务层主要采用了LAMP组合,后端开发框架上采用Yii,前端框架采用Ember.js、Backbone.js,实时应用部分采用了Node.js、Express,业务层均是无状态设计,具备很好的可伸缩性。

  缓存层采用了Ucloud提供的Memcache和Redis,支持分布式、持久化、自动容灾。

  数据层采用了Mysql作为数据库,根据业务进行垂直分片,支持主从同步,读写分离、灾备切换。

  文件存储层采用了阿里云提供的对象存储服务,支持多媒体转码以及图片处理。

  监控服务采用了Ucloud和阿里云提供的监控,可以通过短信和邮件得知服务状态。

  日志服务采用ELK组合,聚合各种服务的日志信息,在管理平台进行统计分析。

  其他应用服务包括即时通讯,邮件,电话,微信公众号托管,消息推送,高级搜索等。

  主持人:在产品开发过程中,对于架构的把控和设计都有哪些要点?

  刘铭: 创业公司的产品需要敏捷开发,快速迭代,敏捷不仅仅在于快速交付,实现功能。如果单单为了提高速度,而不考虑扩展性,规范性,那么就产品就会变得冗余笨重,难以持续性发展,甚至是需要重新造一次轮子。

  敏捷的关键在于快速响应变化,在速度和质量上找到平衡点,只关注真正重要的事,而且要重视,少关注占用大量时间而意义不大的事情。

  在架构的把控和设计上,就得与产品的敏捷开发相配合,不断的进行权衡取舍,下面介绍三个架构设计原则:

  明确目标:架构是为产品服务的,必须明确产品要实现的目标,才能确定架构要达到的标准。即使是同样的功能,但是目标不一样,做出来架构设计就可能不同。要充分进行沟通与思考,深入理解用户的需求,在做架构设计时,平衡好成本与性能,并保持架构的可扩展性。

  大道至简:架构设计上应当保持简单可控,不做过度设计。相信没有最好的架构,只有最适合的架构。在满足产品迭代的前提下,尽量把架构设计得简单,让架构跟随业务发展而演进。

  单一职责:把业务上的模块进行拆分,保持模块间的独立性,降低整个系统的耦合度。这样可以就对单个模块进行开发、测试、部署、升级,而不会影响其他模块。可将每个模块分配给不同的团队小组,开发时互不干扰,整体研发效率也得到提升。

  主持人:云客服关键的技术难点和挑战有哪些?