在线客服系统C109个人总结

引言

经过两个多月的开发,软工3的大作业工程终于接近尾声。在5个迭代的开发中,不断的发现问题、解决问题,学习了许多新的知识,团队成员间不断磨合,确实令人难忘。

迭代开发

曾经完成的大作业无论是单人作业还是小组作业,都只规定了一个deadline,只要在ddl之前完成即可,大多数时候都是ddl驱动,临近截止日期再加班加点地完成。这是第一次对过程要求的非常详细的作业。整个开发过程分成了5个迭代,每个迭代持续2周,将整个大作业的完成划分到了10周之中。

说不上喜欢与否,但确实是一种全新的体验。经过这么久我也不得不承认这项大作业不是突击一周两周就可以完成的。

团队协作

4人协作的团队说不上有多大,但也不像2人小组那样可以直接简单的讨论、开发了。版本管理工具的使用相当重要,我们小组的Gitlab是由我来维护的。最开始的时候对Git的使用很不熟练,因为缺少.gitignore而导致不得不删除第一个迭代的提交记录。许多命令在使用时都需要去网上查,不过后来都记在了一个专门的文件里。

成员的分工协作也颇为滞涩,虽然尽量的做到前后端分离,但仍然没能避免进度上的阻塞。由于缺少协作经验,这方面确实需要加强。

系统重构

系统重构可以说是最让人头疼的事情。起初在选择django和mysql作为后端的时候,查找到可以使用dwebsocket进行通信,然而并没有进一步的研究。真正实现时才发现,由于wsgi协议的特性,只有在runserver时websocket才能正常工作,使用uwsgi和nginx部署到服务器上之后实际上websocket无法正常工作。

因此,通讯部分的代码需要整体重构。最终我选择了django-websocket-redis作为通讯模块的核心。这也直接导致redis不得不介入django的部分。于是顺带着添加了redis的缓存机制,并利用其作为辅助数据库。这方面踩了许多坑,我记录在了我的另一篇博客 Django|Nginx|Uwsgi|Redis|Websocket配置、使用与部署 中。

定时任务

在django本身并不支持定时任务,需要引入celery来实现。在作业之初我就已经知道了这个情况,但实际使用还是超出我的预料。

由于上一段讲的,通信模块进行过一次重构。但是,虽然这个django-websocket-redis模块已经相当优秀,可以实现大多数需求,但是仍然一定程度的受到了django和wsgi协议的限制。

最大的问题在于,无法在websocket连接中断时通知后端,也缺少一个简便的接收websocket信息的途径(相反的,发送websocket信息是很方便的)。这就导致了一个严重的问题:当客服或者用户失去了网络连接(失去TCP连接,而不是关闭页面)时,其状态仍以在线状态被维护。而对于websocket信息的接收太过复杂,所以最终使用post请求来维持一个存活时间戳,使用celery定期检测,并将存活时间戳太久未更新的账号判定为下线。

同时,celery还被用于每天、每月清空统计数据,因为有部分统计数据是按周期进行计算的。

所以celery在我们的工程中是必须的。由于在曾经的后端小学期使用过celery,所以起初并没有什么困难。然而当部署到服务器上时,发现celery本身并不能作为守护进程执行。而是需要在celery工程的github上下载脚本自行配置运行。这部分详细内容我记录在了我的另一篇博客 Django|Redis|Celery 配置与部署

配置过程中又发现celery虽然可以将redis作为broker运行,但是却无法设置通过unix域套接字通信,这导致我不得不将redis的配置改回TCP。

结语

完成这个大作业收获颇丰。从课上听到了许多专业知识,但是只有亲自实践之后才能体会到这些方法的意义所在。

想来这应该是我这四年印象最深刻的大作业了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于大中台来讲,现在并没有十分严格的定义,每个企业对其的理解都是不同的,有的在技术上使用大中台模式,有的在业务上使用大中台模式,有的将两者相结合。“大中台,小前台”的机制最初阿里提出的时候,主要应用于O2O线上线下协同、电商等场景,对于电商来说,市场环境是瞬息万变的,而前台是主要的一线业务,这时就需要一个强大的技术中台提供快速设计方法和系统性后端服务,去应对市场变化,灵活快速的做出应对策略。 技术中台从技术角度出发,数据中台从业务数据角度出发,业务中台站在企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划,由基础中台、技术中台、数据中台L合支撑来建设业务中台。 本套中台案例基于真实工业界业务讲解,将多种经过工业界验证的成熟技术解决方案呈现给大家,本套课程拒绝枯燥的理论,全程代码实操,通过项目驱动的方式,让大家能够真实体验中台工业界开发过程,帮助大家建立中台思维,学习本套课程全部内容可以帮助提高自主开发一套高性能高可用高扩展的中台系统的能力。本套案例集后端+前台+测试+运维一体,多方位的带你熟悉全过程。本课程将带大家实现一个真实的工业界中台项目,该项目是基于真实的知名互联网企业项目讲解,本课程将分为4个阶段: 第一阶段:会实现中台系统的大部分核心服务,包括:会员中心,商品中心,交易中心,商家中心,支付中心,友凡商城等等。 第二阶段:进一步完善中台系统的核心服务以及优化,包括:营销中心,搜索中心,店铺中心,缓存优化,数据库优化等等。 第三阶段:进一步优化以及完善产品服务,包括:前台系统,中台系统,友凡商城 友凡生鲜,友凡超市等等。 第四阶段:项目收尾阶段以及运维阶段,包括:压力测试,系统维护,系统部署,虚拟化方案,测试方案等等。 本课程包含的技术: IDEA集成开发工具 SpringBoot 2.0.8.RELEASE SpringCloud Finchley.SR2 Thymeleaf(模板引擎技术) 支付宝支付MyCat、MySQL、Druid  持续集成解决方案(Jenkins) 认证解决方案(JWT) 网关解决方案(Zuul) 负载均衡解决方案(Ribbon) 分布式事务+多线程+事件驱动 MyBatis+Redis+Quartz Ehcache+Hystrix Nginx(Web服务器) Restful AOP技术 性能压力测试Jemter VUE+jQuery+Ajax+NodeJS VUE+Element-UI 容器部署Docker Kubertenes Lucene、ElasticSearch(搜索) 设计模式、RabbitMQ Swagger2 文档生成工具 人工智能(RNN、LSTM)多语言开发(Python、Django)课程亮点: 1.与企业无缝对接、工业界真实业务场景 2.集后端+前台+测试+运维一体,多面学习技术链 3.多语言协调开发,熟悉语言应用场景 4.支持项目快速迭代和开发 5.引入人工智能智能客服系统6.使用微服务技术栈+前后端分离构建项目 7.引入全新的设计理念 8.全链路性能压力测试 9.分布式事务解决方案 10.事件驱动设计解决方案 11.多线程技术+设计模式的实战应用 12.分布式架构下实现分布式定时调度 13.集成MyBatis实现多数据源路由实战 14.集成SpringCloud实现统一整合方案 15 Kubernetes+Docker容器化部署和管理 16.大型系统分布式部署方案 17.高性能系统(支撑海量数据) 18.高并发下的服务降级、限流实战 19.实现高并发请求和实现高可用架构解决方案 20.全程代码实操,提供全部代码和资料 21.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业落地方案。  版权归作者所有,盗版将进行法律维权。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值