作者:小傅哥
部落格:https://bugstack.cn
沉澱、分享、成長,讓自己和他人都能有所收穫!?
一、前言
講到技術盲區,先說說我自己。幾年前我也是從傳統行業跨到網際網路,同時還是從C#開發轉到Java開發,與其說轉不如說是迴歸Java。從上大學到畢業實習,我都是做Java的,但入職第一家公司,由於技術積累以及需要用C#與中繼器、IO板卡、攝像頭等進行互動,以及開發的軟體是部署到客戶端的,所以整套服務都是C#與少部分的C語言進行編寫。
但可能由於自身仍有一股熱愛Java的興趣,把公司裡我接觸到的C#軟體,都用Java去實現了一遍。比如Java與RS232串列埠進行通訊操作,讀取攝像頭掃描資訊等等。最終承載著這份興趣跳槽了,剛出來的時候面試也是暈的,畢竟很多技術棧的內容是我沒用過的,好在研究過Netty,算是當時一個技術亮點勉強通過,實現了我想寫Java程式碼的心願。
技術組裡的gai溜子
可能每個人或多或少都有一些未接觸的技術,雖然這些技術棧可能是整套架構中包括的,但可能由於經常忙於業務需求開發、技術組內缺少分享傳承、再者是自己懶於探索究竟,而導致自己的技術盲區越來越多,久而久之就成了技術組裡的gai溜子。
你的技術瓶頸也是一點點積累的
有一句常聽到的話是;你知道的越多,你不知道的越多
。這是積極向上學習的人總結出來的。與之相反的還有一句;你知道的越少,你不知道的越少
。
認知半徑決定了眼界目光,可掃描區域的大小決定發展軌跡。技術瓶頸往往都是因為自我學習能力被封鎖,日積月累的流逝沉澱導致。就比如,大學生畢業前有30萬行的程式碼編寫量,找工作還會很難嗎?30萬行一天平均200行而已!
二、技術棧採集問卷
1. 組織了一波採集活動
這是一波問卷收集,在兩個500人的技術群中,邀請大家填寫自己常用的技術棧。通過這樣的方式互相瞭解目前在使用的技術棧都有哪些,你用的技術棧,肯定有我沒用過的。很多時候有些技術的不知曉,就是因為各自圈子內的架構基本是固定的,所以限制了認知範圍,而大家互相補充就可以知曉還有哪些技術棧是自己沒用接觸過的。
目前技術棧採集仍會持續進行中,歡迎隨時補充並檢視;
- 採集問卷:https://docs.qq.com/form/page/DY0JsRHVNUmVyQXBZ?_w_tencentdocx_form=1
- 彙總列表:https://docs.qq.com/sheet/DY1ZTYlFQYUh6THNC
2. 彙總出來的技術棧列表
提交者(自動) | 提交時間(自動) | 你用過的技術棧(必填) |
---|---|---|
小傅哥 | bugstack.cn | 2020/7/29 11:11:56 | Drools |
檸檬楠 | 2020/7/29 11:14:00 | spring全家桶、kafka、mysql、oracle、netty、redis、docker、kubernetes、python3、zookeeper、mycat、sharding-jdbc、 |
Shing | 2020/7/29 11:14:08 | Dubbo |
不忘初心 | 2020/7/29 11:15:04 | java |
?? | 2020/7/29 11:15:20 | springboot、springcloud |
BIUBIUBIU | 2020/7/29 11:15:26 | elasticsearch |
油條 | 2020/7/29 11:16:01 | SpringBoot+Vue+MySql |
Spirit_wolf | 2020/7/29 11:16:17 | Java |
調包俠 | 2020/7/29 11:16:17 | docker kafka rabbitmq rocketmq redis cloud-alibaba dubbo nginx |
緘默 | 2020/7/29 11:16:22 | springboot mybatis redis mysql |
飛魚 | 2020/7/29 11:16:32 | java |
GROW | 2020/7/29 11:16:45 | Spark、Phoenix |
Michael | 2020/7/29 11:18:16 | Java |
子木 | 2020/7/29 11:18:18 | java,oracle,mysql,es |
寒小武 | 2020/7/29 11:18:35 | 請輸入 |
建潤 | 2020/7/29 11:19:00 | ssm |
2020/7/29 11:19:03 | spring,redis,hadoop,docker,elasticsearch | |
鎏鬫蘃鸉 | 2020/7/29 11:19:10 | java |
wangChen | 2020/7/29 11:19:19 | java、python、docker、 |
Jeao&Leon | 2020/7/29 11:19:35 | dojo |
庫裡 | 2020/7/29 11:19:46 | clickhouse |
Chord | 2020/7/29 11:19:52 | mybatis-plus |
꧁ཊ查ཏ꧂ | 2020/7/29 11:19:53 | SpringBoot+Vue |
Jeao&Leon | 2020/7/29 11:19:57 | foxbase |
向日葵不流淚 | 2020/7/29 11:20:00 | HBase |
canonnk | 2020/7/29 11:20:02 | .net sqlserver node vue react |
Chord | 2020/7/29 11:20:05 | springboot |
王慶文 | 2020/7/29 11:20:14 | Sentinel JVM-sandbox |
噼裡啪啦稀碎 | 2020/7/29 11:20:17 | Cat,apollo |
JKM | 2020/7/29 11:20:19 | 收集技術 |
Jeao&Leon | 2020/7/29 11:20:31 | ffmpeg |
罐頭 | 2020/7/29 11:20:33 | spring、mybatis、dubbo、nacos、rabbitmq、es |
無名氏?7173 | 2020/7/29 11:20:40 | flink,clickhouse |
日落黃昏下 | 2020/7/29 11:20:41 | java |
起風了 | 2020/7/29 11:20:43 | Spock |
Gavin | 2020/7/29 11:20:46 | haddop,spark, |
軍 | 2020/7/29 11:20:49 | SpringBoot |
Shing | 2020/7/29 11:21:08 | activemq,redis,Spring-security,PGsql, |
Believe ? | 2020/7/29 11:21:32 | spring-boot-cloud-security dubbo netty mybatis-plus hadoop mysql redis disruptor |
子木 | 2020/7/29 11:21:33 | java,oracle,redis,mysql,es,mybatis,vue,elementui |
康雁飛 | 2020/7/29 11:21:40 | spring boot; redis |
kirago | 2020/7/29 11:22:58 | ansible、django、flask、kubernetes、springboot、springcloud、docker、prometheus |
張彬 | 2020/7/29 11:23:00 | vert.x、vert.x、vert.x (重要的東西說三遍)、netty |
shmilylyp | 2020/7/29 11:23:11 | java |
HQRNQF | 2020/7/29 11:23:17 | GraalVm |
燈泡廠老爺 | 2020/7/29 11:23:46 | spring boot,mysql,reids,rabbitmq,elasticsearch |
張彬 | 2020/7/29 11:25:10 | vert.x、netty、RxJava、響應式程式設計、Disruptor |
調包俠 | 2020/7/29 11:25:26 | t-io netty springboot supervisor solr elasticsearch |
2020/7/29 11:25:31 | spark | |
Perry | 2020/7/29 11:26:24 | activemq-Artemis,couchbase |
傑 | 2020/7/29 11:26:39 | springboot、mybatis-plus、nacos、sentinel、gateway、redis |
Neck | 2020/7/29 11:26:52 | spring,mybatis |
小丑人 | 2020/7/29 11:27:12 | springcloud |
劉志航 | 2020/7/29 11:28:19 | Spring、SpringBoot、SpringCloud、Dubbo、zk、Redis、Nacos、apollo、xxJob、Mysql、ES、RocketMQ、Eureka |
zedomi | 2020/7/29 11:28:30 | java,redis,mysql,jfinal,sparkjava |
時光 | 2020/7/29 11:28:45 | Springboot,SpringMVC,Dubbo,SpringCloud,Redis,Vue |
唐宋元明清 | 2020/7/29 11:28:57 | consul |
唐宋元明清 | 2020/7/29 11:29:39 | kong |
小米 | 2020/7/29 11:29:51 | 機器學習 |
海洋之心 | 2020/7/29 11:29:53 | springcloud、vue、ddd、工作流引擎、elasticsearch |
超人不會飛 | 2020/7/29 11:30:27 | dubbo、spring cloud 、netty、spring |
Disappear` | 2020/7/29 11:31:10 | dubbo nacos xxljob mybatisplus |
今宵多珍重 | 2020/7/29 11:31:11 | Springboot、Mybatis、Mysql、RabbitMQ、Netty、Redis、VUE |
L | 2020/7/29 11:32:00 | vue+elementui+node |
木瓜? | 2020/7/29 11:32:12 | spring、springmvc、springboot、mybatis、mybatis-plus、redis、mongodb、mysql、springcloud全套元件、rabbitmq、shiro、spring security、xxl-job、阿里雲OSS或騰訊雲OSS |
Jack | 2020/7/29 11:32:16 | java spring spring boot spring cloud |
༺ཌༀཉི感謝郭嘉 PMP®༃ༀད༻ | 2020/7/29 11:32:37 | dubbo, zookeeper, springboot,springcloud netflix,springcloud alibaba,apollo,cat,e(f)lk, mongodb, mysql, redis, mycat, openresty, prometheus, skywalking, rocketmq, rabbitmq, docker, jenkins, nexus, k8s, kubesphere |
陳輝 | 2020/7/29 11:35:38 | docker |
@Violet | 2020/7/29 11:36:20 | zipkin, kibana,skywaking(沒用過) |
王凡01 | 2020/7/29 11:36:48 | spring boot |
王澤東 | 2020/7/29 11:36:54 | boost,asio,pthread,libuv,libevent |
2020/7/29 11:37:17 | groovy | |
summer | 2020/7/29 11:40:12 | springcloud,springboot,dubbo,docker |
弓長巨集 | 2020/7/29 11:42:08 | swoole |
zedomi | 2020/7/29 11:43:52 | java,redis,mysql,nginx,sparkjava |
紅雷 | 2020/7/29 11:51:36 | spring/dubbo |
唐宋元明清 | 2020/7/29 11:52:58 | php |
漁人碼頭คิดถึง | 2020/7/29 12:02:45 | springboot,vue,layui |
佛祖的jio不能抱 | 2020/7/29 12:02:45 | oracle,spring |
Joshua | 2020/7/29 12:05:49 | Java springboot vue react MySQL |
小辰 | 2020/7/29 13:11:41 | spring cloud alibaba dubbo |
星宿海 | 2020/7/29 13:18:47 | java python mysql redis hadoop docker spring vue |
chenkx | 2020/7/29 13:51:46 | java |
米高電氣馬偉鴻 | 2020/7/29 13:57:30 | netty |
T.Jax | 2020/7/29 14:03:08 | springboot webflux mybatis jpa redis vue uni-app |
那些年、我們不曾知道的事情 | 2020/7/29 14:14:51 | rabbitmq,kafka,hadoop,angular |
旅人 | 2020/7/29 15:03:09 | Antlr |
郭小白 | 2020/7/29 16:52:25 | github |
往南更南 | 2020/7/29 17:07:41 | springboot |
☺ | 2020/7/29 17:14:46 | java |
田小麥 | 2020/7/29 18:13:11 | guava-eventbus |
一碗小米粥 | 2020/7/30 9:03:31 | webSocket,mq,nacos |
Angel's Trumpet | 2020/7/30 9:05:40 | debezium |
自律等於自由 | 2020/7/30 9:05:42 | ssh+springboot+vue+redis+activemq |
Waiting | 2020/7/30 9:06:35 | springcloud alibaba全家桶 springboot redis nginx vue mybatis-plus emqx mqtt netty rabbitmq |
Shing | 2020/7/30 9:08:02 | spring cloud alibaba,oracle,vue, |
路斌 | 2020/7/30 9:09:16 | java,android,mybatis,spring boot |
Sniper | 2020/7/30 9:09:19 | jvmti |
向北 | 2020/7/30 9:10:47 | ssm,springboot,layui,redis,docker. |
. | 2020/7/30 9:13:12 | k8s |
小傅哥 | bugstack.cn | 2020/7/30 9:14:47 | 大規模分散式系統的跟蹤系統;dapper、Zipkin、pinpoint、appdash、cat、hydra、鷹眼、oneAPM |
咖啡八寶粥 | 2020/7/30 9:16:21 | Java、Dubbo、MySQL、Spring、Redis、Maven、Git、Nginx、C、Memcached |
小傅哥 | bugstack.cn | 2020/7/30 9:17:24 | 基於mysql binlog 的資料同步軟體;otter |
七號公路 | 2020/7/30 9:18:19 | Vert.x |
lhh | 2020/7/30 9:21:06 | nutz、 |
夢與孤獨 | 2020/7/30 9:21:09 | springboot + vue, Zuul閘道器 |
可以的 | 2020/7/30 9:23:01 | ssm、springboot、springcloud、redis、rabbitmq、mysql、mybatis-plus、springcloudalibaba、docker、layui |
清風徐來 | 2020/7/30 9:25:24 | spring boot+mybatis+nodejs+vue+kotlin |
韓俊臣 | 2020/7/30 9:40:08 | ssm+oracle+redis+nginx |
龍圖騰 | 2020/7/30 9:50:44 | spark |
韶華如夢 | 2020/7/30 10:05:04 | Rocketmq |
小傅哥 | bugstack.cn | 2020/7/30 15:12:51 | JVM監控工具;jprofilter,perfino,Yourkit,Perf4j,JProbe,MAT |
三、彙總技術架構圖
在技術彙總中,可以看到有一些是自己常用的,也有一些是當前工作經歷下沒用接觸過的。那麼這些以上的技術棧,你有想過他們是怎麼互相配合,組裝出一張技術架構圖嗎?每一個地方用什麼技術承載,這也可以考慮自己的日常開發中,都有哪些技術來支撐你們整個技術框架。
架構圖
- 這是一張把服務端開發涉及的技術棧彙總出的一張技術架構圖。
- 當然技術棧內容絕對侷限於此,還有很多的其他的框架,可以被替代,只不過這些是比較常用的。
- 這些構成你日常開發的整張技術圖,可能有些是沒用接觸的,但這樣就可以很好的讓你去補充自己的盲區。
- 以上這張圖的PPT已經彙總到面試手冊中,可以在公眾號:
bugstack蟲洞棧
,回覆下載
,把得到的連結開啟,找到ID:19
進行獲取。
1. 負載
- LVS的英文全稱是Linux Virtual Server,即Linux虛擬伺服器,主要用於多伺服器的負載均衡。
- F5是負載均衡產品的一個品牌,除此以外還有,Radware、Array、A10、Cisco等。
- Nginx就比較常見,它是由C語言編寫的,是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。
2. 閘道器
- 使用過SpringCloud的小夥伴都用過zuul,或者公司內部自研,以及把RPC介面轉換為Http介面的一種服務。
- 為了方便客戶端呼叫微服務,所以設計出了閘道器。在微服務例項地址發生改變的情況下,客戶端呼叫服務要能夠不受影響。
- 閘道器可以完成的功能:路由、反向代理、日誌記錄、許可權控制、限流、切量、黑白名單等
3. 架構
- 大家最先接觸的架構基本都是MVC,後來進入網際網路企業開始逐漸有了更加複雜的分層處理,以及接入了RPC和閘道器。
- 隨著SpringBoot的興起,DDD領域驅動設計下的微服務逐漸起來了,這種四層架構是一種設計理論,以領域為中心建模開發。
- SOA是面向服務的架構模型,它將應用程式的不同功能單元(稱為服務)進行拆分,並通過這些服務之間定義良好的介面和協議聯絡起來。
4. 治理
- 在服務的治理中一般包括;熔斷、降級、限流和服務編排等。
- 這裡的思想是為了進行統一管理控制,各業務系統都是一個個自服務,最終提供給編排系統進行管理。
5.框架語言
- 這一層就是大家日常開發的技術語言層,用到各個技術棧來滿足開發需求。
- 比如框架類;Spring、SpringBoot、Mybatis等。
- 同時這裡也會涉及到很多的盲區技術,因業務開發的特性不同,所需要的技術棧也會不同,為了不同的業務場景會引入不同的技術方案進行處理。比如;Drools、Snowflake、Finlk等。
6. 服務
- 這一層是我們在開發過程中用到的元件涉及的中心服務類配置。
- 比如Dubbo以及它的註冊中心、MQ以及它的平臺服務、分散式任務和配置中心等
7. 資料
- 資料是整個系統的價值體現,因業務的體量發展從單庫單表到分庫分表,從資料查詢到檔案系統,再到各類搜尋引擎的使用。
- 同時在DB資料的同步過程中一般會使用基於binlog的otter進行同步ES+Hbase操作。
- 以及Neo4j是一個高效能的,NOSQL圖形資料庫,它將結構化資料儲存在網路上而不是表中。它是一個嵌入式的、基於磁碟的、具備完全的事務特性的Java持久化引擎,但是它將結構化資料儲存在網路(從數學角度叫做圖)上而不是表中。
8. 環境
- 在專案開發完成後一般會部署到自己的服務上或者雲服務,以及選擇不同的服務廠商。
- 再比如現在比較火的Docker和K8S,雖然不是日常開發的一部分,但也可以擴充套件學習瞭解。
9. 支撐服務
- 這一部分包括的是;
部署
、壓測
、日誌
、JVM監控
、業務全鏈路監控
、Maven
、Nexus
、Gihub
以及其他需要的支撐功能。 - 除此之外還有一些工具類的軟體,比如:
IDEA
、navicat
、Xshell
、XMind
、Visio
等,熟練使用工具也是提升開發效率的最有效方式。
四、總結
- 在
《面經手冊》
中,我們開篇介紹了面試官會問你啥的一個總結概述,以及到本篇介紹了技術棧盲區,通過這樣兩個章節的內容,可以讓同好技術的小夥伴,有一個全域性的認知,之後我們再去逐個攻破。 - 面試只是摟草打兔子,學習才是主幹路線,千萬不要以為學了什麼神祕大招或者洗腦長文就能所向披靡,那都是湊巧的小概率事件。
- 我為技術用一年時間積累出來整套圈子;
推文的公眾號
、沉澱的部落格
、資源的Github
、交流的技術群
、分享的技術圈子[蟲洞技術棧]
、推廣的各大平臺
,歡迎加入這個生態技術圈,每個人都有自己擅長的技術方向,互相學習,共同進步。