首页投稿(暂停使用,暂停投稿)开源工具技巧程序员

o2ocrm一些经验.md

2017-01-13  本文已影响142人  jey恒

o2ocrm一些经验

工具

mac环境下

技术网站

规范

o2ocrm

系统目前情况

系统功能

Paste_Image.png

业务流程以及系统交互

Paste_Image.png
  1. 投放到不同渠道用tsid,taid标记不同的渠道和城市创业等
  2. 用户在渠道上填写用户手机号等生产线索
  3. 自动派单到外呼名下
  4. 外呼领取跟进,预约
  5. SA领取跟进
  6. 相关数据的报表

系统内解耦和系统间解耦

系统内

列子

Paste_Image.png

这个是我们crmH5系统中生成线索后的一个业务处理流程
可以看到目前有 多少条件判断

  1. 在线销售 参数idt
  2. 模式哟 ts,sa, 客户经理模式
  3. 自约单
  4. 合作商户
    总体来说是根据leads中的参数判断不同的模式处理不同的业务一般简单来说我们可能会if else if if 等

解决?个人比较喜欢的模式 基于spring 处理if else 等扩展性问题

  1. 定义各种业务处理接口
/**
 * Created by iluoxuan on 16/10/19.
 * 各种模式的业务处理
 */
public interface ModelHandler {

    /**
     * 是否支持业务
     *
     * @return
     */
    boolean support(HandlerParam param);

    void before();

    /**
     * 处理
     *
     * @param param
     * @return
     */
    HandlerResult handler(HandlerParam param);

    /**
     * 是否可以 进行去处理下一个handler
     *
     * @return
     */
    boolean isNextHandler();

    void after(HandlerParam param);

}

系统间解耦

我们目前all in one

自定义类库使用方式

/**
 * Created by iluoxuan on 16/10/12.
 */
@Configuration
@EnableCommonBean //启用common组件
@EnableSpringRedisExt //启动redis组件
@EnableRetry //起用重试
@EnableMailService // 启用邮件
public class AppConfig {

}

异步和线程池隔离

非核心业务流程能异步就异步

不同的业务定义不同的线程池隔离


 <!--开启注解调度支持 @Async @Scheduled-->
    <task:annotation-driven executor="taskExecutor" proxy-target-class="true"/>
<!-- 线程池 考虑Hystrix做隔离-->
    <task:executor id="taskExecutor" pool-size="5-15" queue-capacity="100"/>

    <!-- 收集leads反作弊信息 线程池 -->
    <task:executor id="riskCollectExceutor" pool-size="5-15" queue-capacity="1000"/>
Paste_Image.png

重复提交,分布式锁解决

定义分布式key就可以,解决并发同时提交多次的问题


Paste_Image.png

解决部署重启会话丢失重启已经多台机器session问题

监控

crmjob

已经目前解决的

任务的cron更新,重启,暂停,恢复,http接口提供,支持业务参数

待解决

Paste_Image.png

目前系统的问题

在业务稳定过程中我们可以思考什么

如何沉淀自己的类库

如何更好的设计可扩展性的代码

解决cache更新问题

解决量大情况下关联表查询问题

分布式任务

自动化bi

是否服务化,服务边界等

服务化之后,怎么做服务治理,服务追踪和监控,以及一致性问题等

上一篇 下一篇

猜你喜欢

热点阅读