1. 程式人生 > >架構設計和技術選型的思路總結

架構設計和技術選型的思路總結

本文僅給出架構設計時需要考慮的知識點,並不會對具體知識點做詳細介紹。

一、頂層架構
Linux/Windows平臺、CS/BS架構、大資料架構、應用領域(遊戲、網際網路、傳統行業等)

二、CS中的Client的技術選型
1、GUI開發技術
(1)微軟技術體系
MFC、WinForm、WPF、UWP
(2)Java技術體系
java AWT、java swing、javafx
(3)Python技術體系
Kivy、PyQt、PyGUI、Libavg、wxPython
2、移動端開發技術
原生應用:Android、ios、wp
微信小程式
漸進式Web應用:對移動端友好的Web應用程式。
3、控制檯程式

三、BS中的Browser的技術選型
1、微軟技術體系
Asp.net、Asp.net MVC、Silverlight、IIS
2、Java技術體系
JSP+Servlet+Struts+Hibernate+Spring、tomcat
3、其他技術
html5、js、AJax、CSS3、http/https
js框架:jQuery 、Angular JS、Bootstrap、jQuery UI、Ext JS、Dojo、Prototype JS、Prototype JS(DOM解析、Ajax 處理、CSS支援、JSON支援、瀏覽器相容)

四、CS和BS中的Server端的技術選型


1、微軟技術體系
ASP.NET WebService、WCF、WebAPI
2、Java技術體系
Java WebService
3、REST、微服務
4、資料庫及其訪問技術
(1)資料庫產品
Sql Server、MySql、Oracle、DB2、Postgre、Redis
(2)資料庫訪問技術
JDBC、ADO.NET、ORM技術
5、訊息佇列技術
(1)RabbitMQ
Erlang開發的重量級的訊息佇列,支援很多的協議:AMQP,XMPP, SMTP, STOMP。對路由(Routing),負載均衡(Load balance)或者資料持久化都有很好的支援。
(2)Redis
一個Key-Value的NoSQL資料庫。但支援MQ功能。提供輕量級的佇列服務。不管資料大小,Redis出隊操作的效能要好於RabbitMQ。入隊操作的效能和資料量大小有關。
(3)ZeroMQ
號稱最快的訊息佇列系統,尤其針對大吞吐量的需求場景。技術複雜度高。ZeroMQ具有一個獨特的非中介軟體的模式,不需要安裝和執行一個訊息伺服器或中介軟體,只需要簡單的引用ZeroMQ程式庫,就可以愉快的在應用程式之間傳送訊息。ZeroMQ僅提供非永續性的佇列。
(4)ActiveMQ
類似於ZeroMQ,它能夠以代理人和點對點的技術實現佇列。
(5)Jafka/Kafka
kafka是一個高效能跨語言分散式Publish/Subscribe訊息佇列系統,而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。快速持久化、高吞吐、完全的分散式系統、支援Hadoop資料並行載入。
(6)kestrel
快速、小巧、永續性、 可靠性、叢集支援、靈活的配置。使用scala開發,執行在JVM上。執行時,佇列是儲存在記憶體中,同時在硬碟上保留了日誌進行持久化。支援多請求協議:memcache協議、text協議、thrift協議。
(7)msmq
穩定性、訊息優先順序、離線能力、事務性訊息處理、安全性、故障恢復能力、適用於windows平臺。

五、大資料技術
1、hadoop技術元件
HDFS:Hadoop分散式檔案系統
Hive:資料倉庫
Hbase:分散式資料庫
Zookeeper:分散式應用程式協調服務
Sqoop:將關係資料庫匯入到HDFS的工具
Thrift:跨語言的服務部署框架
Map/Reduce:分散式計算框架
YARN:Hadoop中的資源管理系統
Kafka:分散式釋出訂閱訊息系統
Flume:Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統

2、spark技術元件
Spark Core
Spark SQL
Spark Streaming
Spark MLlib
Graphx

3、NoSql資料庫
Cassandra
Mongodb
CouchDB
Redis
Riak
Membase
Neo4j
HBase

4、大資料安全技術

六、大資料庫以外,你還需要了解的這些未來技術
1、人工智慧、機器學習和深度學習
技術:決策樹學習、推導邏輯規劃、聚類、強化學習和貝葉斯網路等各種傳統演算法;人工神經網路;
應用:無人駕駛(百度、谷歌)、智慧問診(”沃森”)、搜尋引擎(語音、影象)、機器翻譯、語音助手(siri、小娜、小冰、科大訊飛)、智慧推薦、下圍棋。
2、雲端計算
技術:虛擬化技術、IAAS技術、PAAS技術、SAAS技術
應用:雲物聯、雲安全、雲端儲存、私有云、雲遊戲、雲教育等。
3、物聯網
技術:RFID技術、GPS技術、北斗系統、GSM/GPRS/CDMA移動通訊技術、GIS技術、感測器技術技術、嵌入式系統技術。
應用:智慧交通、智慧建築、數字家庭、數字圖書館、數字檔案館、數字博物館、文物保護、環境保護、現代物流管理、食品安全控制、數字醫療、防入侵技術、零售、定位導航。
4、容器技術
(1)常用容器技術
基於Linux的Docker容器、Solaris Zone還是FreeBSD Jail。
微軟正與Docker合作,開發Windows容器。
(2)容器技術和虛擬機器技術的區別
容器具有輕量級特性,所需的記憶體空間較少,提供非常快的啟動速度,而虛擬機器提供了專用作業系統的安全性和更牢固的邏輯邊界。
5、VR、AR、MR技術
VR:虛擬現實是利用電腦模擬產生一個三維空間的虛擬世界,提供使用者關於視覺、聽覺、觸覺等感官的模擬,讓使用者如同身歷其境一般,可以及時、沒有限制地觀察三度空間內的事物。
AR:增強現實通過電腦技術,將虛擬的資訊應用到真實世界,真實的環境和虛擬的物體實時地疊加到了同一個畫面或空間同時存在。
MR:混合現實既包括增強現實,也包括增強虛擬,指的是合併現實和虛擬世界而產生的新的視覺化環境。在新的視覺化環境裡物理和數字物件共存,並實時互動。

七、其他
1、編碼規範制定
2、軟體工程階段制定
QA -PG-IT-ET-OT-ST
3、程式碼管理技術
SVN,CVS,Git
4、Bug管理技術
jira、BugFree
5、單元測試及自動化測試技術
6、設計模式及設計模式的六大原則
7、MVC/MVP/MVVM
8、其他需要考慮到的技術點
(1)容器技術
(2)多執行緒
(3)同步與非同步
(4)程序或執行緒間的通訊
(5)通訊協議
(6)資源管理
(7)記憶體洩漏
(8)日誌系統
(9)異常系統
(10)校驗系統
(11)需要考慮的更多因素
資料量、吞吐率、效能、實時性、可擴充套件性、可維護性、可用性、可靠性