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

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

一、頂層架構
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)需要考慮的更多因素
數據量、吞吐率、性能、實時性、可擴展性、可維護性、可用性、可靠性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章