国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

框架組件,究竟要不要自研?

開發 開發工具
18年規劃系統介紹58到家的技術體系,15年加盟58到家后,架構部正好也是負責范圍的一部分,故談一談自己的想法,個人觀點。

一、問題的提出

詢問框架組件,是否需要自研?

18年規劃系統介紹58到家的技術體系,15年加盟58到家后,架構部正好也是負責范圍的一部分,故談一談自己的想法,個人觀點:

  • 如果公司業務不復雜,研發人數比較少,技術實力相對有限,一定不要自研框架組件
  • 如果公司業務復雜,研發人數比較多,技術能力能夠勝任,建議自研部分框架組件

[[218106]]

二、為什么早期不建議自研?

早期研發人數較少,公司也不確定能走多遠,業務相對簡單,業務以“快速迭代”為最高優先級,此時一般會選擇“自己熟悉的技術”作為選型:

  • 研發語言:熟PHP選PHP,熟Java選Java
  • 數據庫:熟MySQL選MySQL,熟SQL-server選SQL-server
  • 框架組件:熟Ruby on Rails選ROR,熟ThinkPHP選ThinkPHP,熟SSH選SSH

此時千萬不要糾結選型,選自己熟悉的,業務以快速迭代為最優先,公司得先生存下來。

多說一句,此時對于技術合伙人的技術視野就有一定要求,如果早期方向不對,例如選擇了IOE或者微軟技術體系,等公司發展若干年,數據量并發量上漲很多倍,成本以及未來的技術應對恐怕會有麻煩。

58同城早期選型是微軟技術體系,后來數據量增大,并發量增大,機器數據庫越來越多,性能扛不住,成本也扛不住(你猜一個SQL-server的licence一年多少錢?),后來老崔帶領大家轉型開源陣營:

  • Windows -> Linux
  • SQL-server -> MySQL
  • C# -> Java

雖然短痛了1-2年,但長遠來說,絕對是正確的決策。

如今,如果你再創業,選云,選LAMP或者SSH,八成不會走太大的彎路。

三、隨著規模的擴大,為什么要控制技術棧?

隨著業務越來越復雜,研發人數越來越多,如果每個leader都選擇自己擅長的框架,就會出現這樣的情況:

  • 站點框架,team A用著SSH,team B用著Spring+SpringMVC+Mybatis
  • 服務框架,team C用著REST,team D用著dubbo,team E用著thrift
  • 數據庫訪問,team X用著mybatis,team Y用著DAO,team Z用著jdbc

對于整體而言,跨部門的調用越來越麻煩,重復造的輪子越來越多,技術效率會逐步降低,研發+測試+運維成本都越來越高。

第一個觀點:即使不自研,技術棧也請盡量統一。

四、統一了技術棧,為什么建議淺淺的封裝一層?

統一了技術棧以后,如果不封裝,redis官方Java客戶端Jedis可能有這樣一些接口:

  1. String Memcache::get(String key) 
  2. String Memcache::set(String key, Stringvalue) 
  3. String Memcache::del(String key) 

淺淺的封裝一層,會變成這樣:

  1. String 58DaojiaKV::get(String key) { 
  2.          String result = Memcache::get(key); 
  3.          return result; 
  4. String 58DaojiaKV::set(String key, Stringvalue) { 
  5.          String result = Memcache::set(key, value); 
  6.          return result; 
  7. String 58DaojiaKV::del(String key) { 
  8.          String result = Memcache::del(key); 
  9.          return result; 

這有什么好處呢?

  • 對上游屏蔽底層實現的細節,調用方不用關注緩存是memcache還是redis,調用方只關注58DaojiaKV
  • 底層變化的時候,對上游透明,當memcache不能滿足需求,要切換為redis時,所有調用方不需要大的變化,升級一個最新的58DaojiaKV即可,58DaojiaKV的接口不變,實現變為:
    1. String 58DaojiaKV::get(String key) { 
    2.          String result = Jedis::get(key); 
    3.          return result; 
    4. String 58DaojiaKV::set(String key, Stringvalue) { 
    5.          String result = Jedis::set(key, value); 
    6.          return result; 
    7. String 58DaojiaKV::del(String key) { 
    8.          String result = Jedis::del(key); 
    9.          return result; 
  • 統一實現一些通用的功能,就不需要每一個上游升級了,例如,要實現一個緩存訪問時間統計的功能,所有調用方不需要大的變化,升級一個最新的58DaojiaKV即可:
    1. String 58DaojiaKV::get(String key) { 
    2.          Long startTime = now(); 
    3.          String result = Jedis::get(key); 
    4.          Long endTime = now(); 
    5.          reportKVTime(startTime- endTime); 
    6.          return result; 
    7. String 58DaojiaKV::set(String key, Stringvalue) { 
    8.          Long startTime = now(); 
    9.          String result = Jedis::set(key, value); 
    10.          Long endTime = now(); 
    11.          reportKVTime(startTime- endTime); 
    12.          return result; 
    13. String 58DaojiaKV::del(String key) { 
    14.          Long startTime = now(); 
    15.          String result = Jedis::del(key); 
    16.          Long endTime = now(); 
    17.          reportKVTime(startTime- endTime); 
    18.          return result; 

同理,如果要實現統一的告警,調用鏈跟蹤,SQL執行時間,也可以用類似的方法。

第二個觀點:第三方庫,不但要統一,還可以淺淺的封裝一層,預留未來的擴展性。

五、隨著規模的進一步擴大,為什么需要適當的造一些輪子?

業務進一步發展,研發團隊進一步擴張,雖然使用了統一的技術棧,但不同研發團隊的痛點是極其類似的:

  • 有站點,監控服務的可用性,處理時間監控需求
  • 有告警需求
  • 有自動化發布,自動化運維需求
  • 有服務治理,服務自動發現需求
  • 有調用鏈跟蹤需求
  • 有SQL監控需求
  • 有系統層面數據收集與可視化展現的需求

此時,開源的框架可能滿足不了需求了:

  • 開源框架/組件太重了,我們需要的可能只是一個輕量級的框架/組件
  • 開源框架/組件,只能滿足我們的一部分需求
  • 不了解開源框架/組件的設計理念,要二次開發成本更高(維護dubboX的同學,維護數據庫中間件Atlas的同學可以出來說兩句)
  • 有些通用的需求是和業務緊密結合的,開源框架/組件可能滿足不了

此時,如果技術實力具備,可以統一研發一些框架和組件,解決所有技術團隊的通用痛點,滿足所有技術團隊的通用需求。

未來介紹監控平臺、服務治理、調用鏈跟蹤系統、數據收集中心的時候,大家能夠更深刻的理解到“造一些輪子”的好處。

第三個觀點:適當造一些輪子。

六、58到家自研的框架組件有哪些?

通用框架+服務:

  • WEB框架,Daojia-Web-Framework,DWF
  • Service框架,Daojia-Service-Framework,DSF
  • 消息隊列,Daojia-Msg-Queue,DMQ

基礎組件:

  • 緩存訪問組件DMemcache,DJedis
  • 數據庫訪問組件DAO
  • 分庫分表組件DShard

還有一些日志,消息的組件,這些組件的架構與細節,未來再和大家細聊。

七、總結

框架組件,是否需要自研?

初期建議:不自研,用熟悉的,業務快速迭代為優先,需要一定技術視野。

長遠建議:

  • 統一技術棧
  • 淺淺封裝一層
  • 適當造輪子

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2020-11-17 09:17:58

框架組件基礎服務

2024-09-30 05:38:48

2015-07-15 10:25:44

SDN物理交換機

2019-10-23 20:19:26

Python 開發編程語言

2021-11-24 22:39:03

手機系統功能

2012-03-16 14:23:00

框架

2012-03-16 14:23:00

框架

2025-03-24 09:20:00

架構分布式ID開發

2013-11-29 14:04:42

2023-10-06 12:04:41

ORM關系型數據庫

2017-11-20 09:00:43

跳槽職場精英年終獎

2021-02-21 09:09:24

GoGOPATH代碼

2014-12-09 09:13:46

BaaS云備份備份即服務

2018-07-12 09:04:15

RAID陣列硬盤

2021-10-21 09:41:43

互聯網數據技術

2018-12-06 14:40:07

蘋果iOS 12.1.1 iOS 12

2018-11-19 09:02:53

垃圾代碼辭職入職

2020-04-20 09:32:31

VIM程序員編程

2015-10-21 16:27:45

公務員國考大數據
點贊
收藏

51CTO技術棧公眾號

亚洲成人精品久久| 五月天国产精品| 成人精品毛片| 精品国产鲁一鲁一区二区张丽 | 亚洲精品不卡| 国产精品香蕉| 亚洲美女激情视频| yiren22亚洲综合伊人22| 国产精品不卡一区| 免费毛片网站在线观看| 久久精品国产99国产| 国外成人在线视频网站| 日韩中文首页| 69久久夜色精品国产7777| 欧美日韩女优| 亚洲高清一区二| 成人午夜在线观看视频| 亚洲国产精品一区二区久久| 岳毛多又紧做起爽| 经典三级在线一区| 日本在线一区| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美激情视频一区| 99re8精品视频在线观看| 91精品国产综合久久精品性色| 在线视频网站| 天堂中文av| 欧美日韩亚洲一二三| 免费精品视频在线| 国产精品免费一区二区三区四区| 久久av中文| 91大神福利视频在线| 在线免费色视频| xxxxx成人.com| av色在线观看| 日韩一级精品视频在线观看| 国产精品久久久久久五月尺| 国产一区二区三区亚洲综合| 中文字幕亚洲欧美日韩2019| 成人直播视频| 亚洲丝袜在线视频| 影视一区二区三区| 中文字幕一区电影| av在线国产精品| 欧美成人精品xxx| 亚洲日本中文| 久久777国产线看观看精品| 祥仔av免费一区二区三区四区| 国产亚洲视频在线| 高清欧美日韩| 久久久久在线观看| 偷拍亚洲色图| 亚洲影院高清在线| 亚洲毛片av| 欧美午夜欧美| 国产精品1区二区.| 蜜臀av午夜一区二区三区| 中文字幕欧美激情一区| www.4438全国最大| 日韩欧美国产成人| 欧美激情办公室videoshd| 精品国产一区二区三区忘忧草| 欧美伦理91i| 欧美日韩亚洲一区二区三区在线观看| 99精品福利视频| 日韩欧美一区二区三区四区| 精品在线一区二区三区| 97av中文字幕| 国产精品每日更新在线播放网址| 可播放的18gay1069| 色综合久久久久综合99| 欧美aaaaaaa| 久久伊人精品天天| 欧美电影免费| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产乱人伦精品一区二区在线观看| 自慰无码一区二区三区| 亚洲欧美日韩电影| 免费在线观看av| 中文字幕在线亚洲| 日韩免费av| 免费成人av网站| 精品中文字幕在线| 精品成人一区| 一本一道久久综合狠狠老精东影业| 在线成人一区二区| 欧美色中文字幕| 国产高清视频免费最新在线| 久久久久国产精品麻豆ai换脸 | 亚洲一区二区三区四区电影| 久久不卡日韩美女| 亚洲欧美日韩另类精品一区二区三区| 久久福利电影| 不卡免费追剧大全电视剧网站| 深夜爽爽视频| 激情六月综合| 久久综合之合合综合久久| 欧美激情国产精品| 91综合视频| 精品国产乱码久久久久久浪潮| 中文字幕一区二区三区在线不卡 | 日韩电影免费在线观看网站| 久青草视频在线播放| 亚洲主播在线播放| 欧美一区久久久| 成人xvideos免费视频| 国产麻豆精品在线观看| 人成在线免费视频| 一区二区欧美在线| 伊人精品视频| 午夜免费福利在线| 精品国产一区二区三区四区四| 欧美日韩导航| 国产一区二区三区播放| 欧美专区亚洲专区| 麻豆一区一区三区四区| 午夜精品久久久久久久久久久| 超碰在线caoporn| 欧美怡春院一区二区三区| 久久99久久久欧美国产| 男女视频网站免费观看| 日韩av资源在线播放| 亚洲影视资源网| 欧美xxxx14xxxxx性爽| 激情视频一区| 香蕉521av成人网| 色婷婷久久综合| 伦理一区二区| 国产美女永久无遮挡| 制服丝袜亚洲播放| 精品毛片免费观看| 美女一区二区三区视频| 亚洲视频在线免费看| 日韩av在线免费观看不卡| 美女毛片在线看| 国产美女直播视频一区| 亚洲欧洲三级电影| 亚洲精品18| 777精品久无码人妻蜜桃| 精品91自产拍在线观看一区| 99国产精品| 午夜视频在线| 91麻豆精品秘密入口| 五月婷婷综合在线| 成人91在线| 亚洲精品少妇久久久久久| 日韩免费中文字幕| 中文字幕一区二区三区在线不卡 | 成人在线超碰| 2022亚洲天堂| 在线视频欧美日韩精品| 国产一区二区h| 亚洲美女尤物影院| 中文字幕av久久| 亚洲第一免费播放区| 久久电影国产免费久久电影| 女人高潮被爽到呻吟在线观看| 亚洲精品国产系列| 亚洲精品国产福利| 久久99九九99精品| 成人欧美一区二区三区的电影| 综合操久久久| 亚洲深夜福利在线| 不卡一区中文字幕| 国产精品国产亚洲精品| 激情五月亚洲色图| 日韩精品每日更新| 一区二区三区久久| 久草在线综合| 欧美精品videossex88| 国产女人aaa级久久久级| 一区二区三区在线资源| 亚洲欧美自拍另类日韩| 欧美壮男野外gaytube| 综合自拍亚洲综合图不卡区| 国产亚洲精品美女久久久| 在线观看视频91| 欧美裸体bbwbbwbbw| 久久99国产精品麻豆| 很黄很污的网站| 日本精品视频在线观看| 亚洲成人精品一区二区| 国产精品成人一区二区网站软件| 国产在线69| 久草视频国产在线| 久久久亚洲欧洲日产国码aⅴ| 亚洲毛片av在线| 欧美黄色精品| 182在线视频观看| 男人揉女人奶房视频60分| 性欧美长视频免费观看不卡| 一区二区三区精品在线| 欧美区国产区| 超碰97免费在线| 日本一极黄色片| 国产精品一区二区久久久| 欧美电影精品一区二区| 久久久久国产精品免费免费搜索| 日韩精品网站| 99thz桃花论族在线播放|