架构设计和技术选型的思路总结

本文仅给出架构设计时需要考虑的知识点,并不会对具体知识点做详细介绍。

一、顶层架构
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)需要考虑的更多因素
数据量、吞吐率、性能、实时性、可扩展性、可维护性、可用性、可靠性

你可能感兴趣的:(程序员思维清单,架构&设计)