啊,來到如今的窩已經好久了。。難搞,項目也作的差很少了,若是8月份沒離職的話,我對後端的下階段任務是要開始拆分服務了,這是新的挑戰,也多是我技術棧的下一個技術爆炸點,今天在學習羣裏,和幾個老哥,聊到換工做了,老哥們提議作個總結,感受挺有意思的,不只僅是樹新蜂(Tree new Bee,哈哈哈哈今天聽一個老哥講的),還有就是作下知識的鞏固,回顧下這段時間我到底都作了什麼前端
去年12月份處剛進公司,以前的項目是外包出去的,用PHP作的,老大讓我看着外包團隊給的接口文檔,讓我先從新開發一個Web系統,嗯根據接口文檔的參數設計數據庫,以及接口(差點奔潰),剛來想好好表現下,在開會上打包票,兩週就能把接口文檔上的接口所有作出來。。(下班的時候我就說了不行哈哈哈,申請延期),這裏推薦用Spring Boot + MyBatis Plus這兩個框架的確大大減小了個人開發週期,大概一個月多就把接口文檔裏的需求開發完了
產品現階段,比較依賴前端工程師,因此開發團隊只有我一個後端工程師,我是比較迷茫的,雖然我也很想承擔更多的責任,可是這個責任有點大了,之前不少我都不須要去思考,只用寫好業務的CRUD就行,哈哈哈小碼農(不過的確進步也是可觀的,各方面開發,測試,運維;職業規劃也有了新的目標)
咱們在這裏不得不提一下,外包公司是真的賺錢,一個接口1500起步,小改也要這麼多。。忽然有一種出去單幹的衝動!redis
這個階段困擾了我好久,由於產品有一個物聯網數據模塊,數據量會大的驚人,一個用戶一天至少能產生8w條數據,雖然每條數據區別不會很大,這就是IoT,當時外包團隊的設計是放入MySQL,這前期的確可這麼作,老大預期的用戶量在2到3w,我不禁惶恐,到時候我用MySQL存儲,這個鍋該扔給誰!(我不知道我是否是想多了,在一些交流羣上,大佬們安慰我不要過小看MySQL)
OK,要學習了,我去找了物聯網數據存儲的解決方案:時序數據庫(TSDB),開源有挺多的,我最後選了InfluxDB,理由是我第一個看的資料就是它,並且他也剛恰好能實現個人業務需求,有點的遺憾的是InfluxDB單機是開源的,集羣要收費,否則以個人性格通常會搭建個集羣玩玩
而後就是修改接口內部,從MySQL進行增刪查遷移到InfluxDB中(IoT數據沒有改的需求)數據庫
春節後,我和老大去了趟外包團隊的辦公地,但願他們可以幫咱們運維咱們的線上項目(減小了個人負擔^_^),而後產品的功能開發由咱們本身作,而後拿到了真正外包設計的數據庫!!!(以前項目是我本身根據接口文檔設計的,也就是說我前面的Web項目白作了。。。)
苦逼,不過好歹有了經驗,對產品理解也有了更深的體會,因此我第二次開發仍是比較順利的,就是老大想修改數據庫的結構,我舉個栗子吧,以前數據庫的用戶表,直接用一個字段存儲JSON對象(全部的用戶相關信息),這讓我以前寫修改用戶信息相關接口的時候真的很痛苦啊。。,後面的確進行了修改,把那個存儲JSON字段裏的內容拆分;沒法理解外包團隊設計的用戶表居然還有年齡這個字段
同時,春節後我也開始了寫博客的習慣,勤勞的時候一週兩三篇,懶得時候一個月也只有一兩篇哈哈哈,同時我也發現一個問題,那就是國內的互聯網,好多問題,解決都是同一個方案,但這個方案有時候並不能解決個人問題編程
這個階段,是我進步最大的階段,沒有可以直接模仿的數據庫,而後進行刪刪改改(哈哈哈 )
老大但願咱們的產品有一個社區的模塊,產品可以分享IoT項目,點贊,收藏,關注,用戶之間的私信,舉報,評論回覆;
在這以前,由於業務的需求,本來數據庫的物聯網項目管理模塊業務的開發,由於以前外包團隊的設計,讓我處理起來真的很痛苦,我不知道他們PHP是否是有什麼好的JSON第三方插件(我已經沒有力氣吐槽設計DB的人),在本來的基礎上把業務進行了拆表,由本來的物聯網項目表,拆解爲物聯網項目表(這個表包含了用戶編程的代碼,以及相關聯的字段)和物聯網設備表(可能我菜哈哈哈,這就是我理解的解耦,處理他們的關係,我至少再也不那麼痛苦了)
我開始進行社區模塊的設計,從網上知道Redis的Set數據結構很適合作點讚的功能,後面發現這個方案是可行的,但問題是,公司目前的階段,服務器也不可能上幾百G的內存,若是作的話,後期數據的遷移是很痛苦的,不管是我仍是個人後來者,不過仍是比較幸運的,找到Pika,這是一個對Redis的擴展吧,會用Redis,那麼上手Pika無壓力!Redis的存儲是在緩存,而Pika的存儲是在磁盤上,Pika是爲解決的是用戶使用redis的內存大小超過50G, 80G這樣的狀況 等等這樣的狀況,又學習到了哈哈哈,在這裏強烈推薦瞭解學習下這個NoSQL,不管是官方文檔仍是官方羣都是比較友好的,Pika的開發維護者也樂於幫助我這種小碼農解決問題,主要是學習成本也不大!
好了接下來講社區模塊,其實接口業務的開發倒沒什麼難度,基本上白天若是能解決完數據存儲的選型與設計,下班前我都能把接口開發完,走個單測(單測那能叫測試嗎?求個心理安慰哈哈哈)
在這期間,我也引入了RocketMQ,目的是爲了將舉報以及郵箱相關的接口異步化,我認爲這樣能解決服務器高峯時減小系統的壓力,若是作得不對,求噴真的!在選擇RocketMQ以前我也用過RabbitMQ,這純粹是偶然,當時是爲了學習Docker,而後在Docker了部署了RabbitMQ,前期我用的信息組件的確是RabbitMQ,但後期讓我決定使用RocketMQ,緣由是阿里開發團隊也在用這個信息組件(認真臉!哈哈哈),真正的理由是RocketMQ是由Java編寫的,RabbitMQ是由Erlang編寫的,語言使我更傾向於RocketMQ(我並非說只學一門語言,排斥其餘語言,我也有去自學過Python和Go),RocketMQ也的確能知足個人業務需求,後期的擴展,也有阿里大佬能夠提供幫助和借鑑參考(小聲bb,我之前用的是ActiveMQ)後端
產品第二版本的需求已基本開發完了,如今就是上測試服務器了,而後後面兩個月我感受我從後端開發變成了運維。。,項目部署,組件的部署,學習了Jenkins,自動化部署 誰用誰知道
搭建服務器FTP,前端的電腦真的坑,咱們去訪問都沒問題,就他有問題
部署靜態文件項目,使用的是Nginx,而後花了一天時間弄上HTTPS,挖坑踩坑填坑,很簡單的事情,搞了很久;個人系統並無部署到tomcat上,而是 直接打Jar包部署(求輕噴!給個理由說服我)
爲了圖方便,去學了Shell腳本編程,這多是收穫最大的一個吧緩存
要麼跳槽,要麼進行下階段服務拆分tomcat
更新下,沒有跳槽哈哈哈哈,被評價廣度夠了,深度不夠,下階段就是沉澱到明年春節服務器