o2ocrm一些經(jīng)驗(yàn).md

o2ocrm一些經(jīng)驗(yàn)

工具

mac環(huán)境下
  • idea java開(kāi)發(fā)ide
  • datagrip 數(shù)據(jù)庫(kù)工具
  • Alfred 效率利器 (查找两波,保存密碼等)
  • iterm2 終端利器 配合zsh(git提示)
  • sublime 文本編輯器
  • MacDown markdown編寫(xiě)工具

技術(shù)網(wǎng)站

規(guī)范

  • 格式化文件 (eclipse code formatter) 統(tǒng)一java和xml格式
  • lombok 注解生成set get log 構(gòu)造 hashcode tostring等方法
  • Free Mybatis plugin + 自定義mybatis gennertor
  • 統(tǒng)一mapper接口命名規(guī)范 get get**List insert delete update
  • 擁抱JDK8扁远,lambda,盡量避免null等
  • 善于利用第三方庫(kù)

o2ocrm

系統(tǒng)目前情況

  • leads量 1153124大概116w
  • 平均線(xiàn)索量每天大約6k左右的
  • 員工數(shù) 4651, 外呼團(tuán)隊(duì)105,服務(wù)經(jīng)理3627

系統(tǒng)功能

Paste_Image.png

業(yè)務(wù)流程以及系統(tǒng)交互

Paste_Image.png
  1. 投放到不同渠道用tsid耕漱,taid標(biāo)記不同的渠道和城市創(chuàng)業(yè)等
  2. 用戶(hù)在渠道上填寫(xiě)用戶(hù)手機(jī)號(hào)等生產(chǎn)線(xiàn)索
  3. 自動(dòng)派單到外呼名下
  4. 外呼領(lǐng)取跟進(jìn),預(yù)約
  5. SA領(lǐng)取跟進(jìn)
  6. 相關(guān)數(shù)據(jù)的報(bào)表

系統(tǒng)內(nèi)解耦和系統(tǒng)間解耦

系統(tǒng)內(nèi)

  • 面向接口編程,組合等
  • guava eventbus 孵运, spring 事件,設(shè)計(jì)模式
  • 個(gè)人比較喜歡的模式

列子

Paste_Image.png

這個(gè)是我們crmH5系統(tǒng)中生成線(xiàn)索后的一個(gè)業(yè)務(wù)處理流程
可以看到目前有 多少條件判斷

  1. 在線(xiàn)銷(xiāo)售 參數(shù)idt
  2. 模式喲 ts窃祝,sa, 客戶(hù)經(jīng)理模式
  3. 自約單
  4. 合作商戶(hù)
    總體來(lái)說(shuō)是根據(jù)leads中的參數(shù)判斷不同的模式處理不同的業(yè)務(wù)一般簡(jiǎn)單來(lái)說(shuō)我們可能會(huì)if else if if 等

解決掐松?個(gè)人比較喜歡的模式 基于spring 處理if else 等擴(kuò)展性問(wèn)題

  • spring 注解獲取接口實(shí)現(xiàn)的列表,@Order排序注解控制排序
  1. 定義各種業(yè)務(wù)處理接口
/**
 * Created by iluoxuan on 16/10/19.
 * 各種模式的業(yè)務(wù)處理
 */
public interface ModelHandler {

    /**
     * 是否支持業(yè)務(wù)
     *
     * @return
     */
    boolean support(HandlerParam param);

    void before();

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

    /**
     * 是否可以 進(jìn)行去處理下一個(gè)handler
     *
     * @return
     */
    boolean isNextHandler();

    void after(HandlerParam param);

}
  • 個(gè)人使用這個(gè)處理模式粪小,基本可以解決大部分if else擴(kuò)展問(wèn)題

系統(tǒng)間解耦

  • rpc
  • 消息隊(duì)里
  • 第三方j(luò)ar類(lèi)庫(kù)

我們目前all in one

  • 共用mapper
  • 公用庫(kù) 郵件大磺,http調(diào)用封裝,短信
  • 封裝spring data redis使用探膊,分布式鎖杠愧,常用的標(biāo)記等serice

自定義類(lèi)庫(kù)使用方式

/**
 * Created by iluoxuan on 16/10/12.
 */
@Configuration
@EnableCommonBean //啟用common組件
@EnableSpringRedisExt //啟動(dòng)redis組件
@EnableRetry //起用重試
@EnableMailService // 啟用郵件
public class AppConfig {

}

異步和線(xiàn)程池隔離

非核心業(yè)務(wù)流程能異步就異步

  • 操作日志
  • 異步收集數(shù)據(jù)
  • 異步調(diào)用反作弊接口

不同的業(yè)務(wù)定義不同的線(xiàn)程池隔離

  • 不同業(yè)務(wù)數(shù)據(jù)庫(kù)連接池 (一個(gè)專(zhuān)門(mén)處理報(bào)表)【線(xiàn)上因?yàn)閳?bào)表查詢(xún)太慢導(dǎo)致druid連接池爆滿(mǎn)獲取鏈接超時(shí)】
  • spring 多線(xiàn)程池配置

 <!--開(kāi)啟注解調(diào)度支持 @Async @Scheduled-->
    <task:annotation-driven executor="taskExecutor" proxy-target-class="true"/>
<!-- 線(xiàn)程池 考慮Hystrix做隔離-->
    <task:executor id="taskExecutor" pool-size="5-15" queue-capacity="100"/>

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

重復(fù)提交,分布式鎖解決

定義分布式key就可以逞壁,解決并發(fā)同時(shí)提交多次的問(wèn)題


Paste_Image.png

解決部署重啟會(huì)話(huà)丟失重啟已經(jīng)多臺(tái)機(jī)器session問(wèn)題

  • 引入spring-session

監(jiān)控

  • 目前采用發(fā)郵件的形式流济,微信綁定郵箱
    ControllerAdvice 處理不同類(lèi)型的異常,未知異常腌闯,郵件報(bào)警

crmjob

已經(jīng)目前解決的

任務(wù)的cron更新绳瘟,重啟,暫停姿骏,恢復(fù)糖声,http接口提供,支持業(yè)務(wù)參數(shù)

待解決

Paste_Image.png
  • 目前已經(jīng)有10多個(gè)任務(wù)在運(yùn)行悦施,主要是報(bào)表數(shù)據(jù)的同步并扇,中間表數(shù)據(jù)的生成
  • 只需要編輯修改時(shí)間參數(shù) 就是重新階段同步

目前系統(tǒng)的問(wèn)題

  • 有部分重復(fù)代碼在 crmh5 和crmweb的service中,不多抡诞;大部分重復(fù)的都拆到了common中
  • mapper還存在xml和注解混用的穷蛹,命名不規(guī)范的
  • spring cache緩存失效 模糊匹配keys問(wèn)題
  • 和商城共用redis問(wèn)題(有坑)
  • crmjob分布式化,分片
  • 報(bào)表開(kāi)發(fā)每次都要修改sql沐绒,加字段重新同步數(shù)據(jù)問(wèn)題

在業(yè)務(wù)穩(wěn)定過(guò)程中我們可以思考什么

如何沉淀自己的類(lèi)庫(kù)

如何更好的設(shè)計(jì)可擴(kuò)展性的代碼

解決cache更新問(wèn)題

  • cannel訂閱binlong俩莽,更新cache

解決量大情況下關(guān)聯(lián)表查詢(xún)問(wèn)題

  • 定義sechma走es,如果處理更新索引問(wèn)題
  • cannel訂閱binlong乔遮,更新索引

分布式任務(wù)

  • 觸發(fā)一次扮超,業(yè)務(wù)參數(shù),分片蹋肮,動(dòng)態(tài)更新等

自動(dòng)化bi

是否服務(wù)化出刷,服務(wù)邊界等

服務(wù)化之后,怎么做服務(wù)治理坯辩,服務(wù)追蹤和監(jiān)控馁龟,以及一致性問(wèn)題等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市漆魔,隨后出現(xiàn)的幾起案子坷檩,更是在濱河造成了極大的恐慌,老刑警劉巖改抡,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢炼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阿纤,警方通過(guò)查閱死者的電腦和手機(jī)句灌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)欠拾,“玉大人胰锌,你說(shuō)我怎么就攤上這事∶暾” “怎么了资昧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)荆忍。 經(jīng)常有香客問(wèn)我榛搔,道長(zhǎng)诺凡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任践惑,我火速辦了婚禮,結(jié)果婚禮上嘶卧,老公的妹妹穿的比我還像新娘尔觉。我一直安慰自己,他們只是感情好芥吟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布侦铜。 她就那樣靜靜地躺著,像睡著了一般钟鸵。 火紅的嫁衣襯著肌膚如雪钉稍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天棺耍,我揣著相機(jī)與錄音贡未,去河邊找鬼。 笑死蒙袍,一個(gè)胖子當(dāng)著我的面吹牛俊卤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播害幅,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼消恍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了以现?” 一聲冷哼從身側(cè)響起狠怨,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邑遏,沒(méi)想到半個(gè)月后佣赖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡无宿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年茵汰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孽鸡。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹂午,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彬碱,到底是詐尸還是另有隱情豆胸,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布巷疼,位于F島的核電站晚胡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜估盘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一瓷患、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遣妥,春花似錦擅编、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至境钟,卻和暖如春锦担,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慨削。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工洞渔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人理盆。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓痘煤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親猿规。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衷快,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容