架构不是一个职业而是一种能力,每一种架构师只不过是在不同的领域里面使用不同的技术,没有什么可对比,就好比如你问一个篮球明星和一个足球明星有什么区别一样!
01 架构师需要考虑四个问题
1. 确定系统干什么不干什么,也就是说系统的边界在哪里?
2. 确定架构内部的模块与模块之间的关系,以及模块与外部之间的关系是什么?
3. 架构确定以后,有能力去指导开发去继续设计和演化,如果开发设计和演化出来的东西和架构不一致也是有问题的。
4. 确定非功能性需求,安全性,可扩展性,可用性,可维护性。
02 Java架构方向人才
● 系统的技术选型和可行性评估;
你这可以理解为:你家的房子户型设置,硬件软件配置必须要有自己的经验,装修完之后总得适用,不浪费成本,偏激一点总不能到处是柜子。
● 分布式技术框架的把控;
你这可以理解为:你家的柜子可以做出多种组合,你家的被子是放在A柜,枕头放B柜,床单放C柜,这得看你的划分用途。
● 深入发掘和分析业务需求,重点模块的设计、方案评审与技术支持,技术难点攻坚,应用系统分布式技术的落地,撰写技术方案和系统设计,最终完成编码工作;
你这可以理解为:柜子可以用来放东西,也可以用来拼装;如果组合柜,那可以拼出一些艺术品,那就看你的空间思维了。
● 针对产品性能和架构优化,确保系统的架构质量;
你这可以理解为:柜子如果没有按照之前图纸来规划安装摆放,你就会发现有些地方是可以改进的,及时完全参照图纸,你还是会想如何改进,这就会产生一些小想法;你可能会想如何装更多的物品,如何方便取物,如何整理方便。
● 优秀的抽象设计能力,思路清晰,善于思考,能独立分析和解决问题及编写解决方案;
你这可以理解为:哇,你家的装修真棒,这时你的邻居,或亲威朋友想参考你的想法,你可以提供一整套安装配置方案,现在你就是专家,因为他们想利用空间,发挥你的空间想像力。需要你来指导装修,提高装修质量,减少控制装修成本等等。
● 熟悉linux,能熟练应用shell/python等脚本语言;
● 扎实的Java基础知识,熟悉IO、多线程及并发技术;
● 熟练掌握redis、mongodb、netty、kafka等中间件;
● 对JVM原理有扎实的理解,对服务器端设计和编程有深入理解;
你这可以理解为:你对基建设施了如指掌,编译原理很清楚,恭喜你,你已经超过我了。
● 算法基础扎实,熟悉常见的数据结构,熟悉常用的设计模式,深入理解分布式算法和主流分布式系统,了解主流消息队列工作原理;
你这可以理解为:排序,索引,存储,去重,平滑等一些算法有深入了解,恭喜你,你已经是数学专家级了。
● 有丰富的分布式、高并发、高负载、高可用性系统设计经验,熟悉分布式缓存、消息等机制。
03 大数据架构方向人才
● 针对大数据平台的设计和开发制定数据架构规范,进行核心代码编写;
你这可以理解为:有设计图纸的能力,能够指导各个组件安装部署,以及数据的数据抽象能力。
● 针对数据基础架构和数据处理体系的升级和优化,技术难题攻关,持续提升核心系统性能,保证系统的安全、稳定、高效运行;
你这可以理解为:数据的价值,在于你的抽取采集能力是否高深,是否便于加工,标注。各组件的稳定性,兼容性,是否有预警,在于你的规划和监控接口是否到位。
● 大规模数据实时化、大数据技术容器化、私有云实施方案、数据模型规范化等方面根据不同项目的技术发展路线;
你这可以理解为:引入 Docker 的镜像机制来完善自己的容器;同时计算能力、数据结构抽象、定义,要用自己的风格和规范。能用最简单的配置,迅速跑起来流式streaming或离线处理spark程序.
● 跟踪大数据相关领域的技术趋势,竞争对手的产品、技术动态;
● 大数据平台的稳定性和性能优化及技术攻关;
● 产品研发过程中关键设计的把关和研发;
● 精通大数据生态圈主流技术和产品,如Hive、Storm、Flink、Spark,ELK、Kafka,Zookeeper、Yarn,presto,Hue等,对Spark分布式计算的底层原理有深度理解,对复杂系统的性能优化和稳定性的一线实战经验;
● 精通实时数据仓库设计,深刻理解MR运行原理和机制,能进行任务执行效率的优化,熟悉开源数据交换工具如sqoop,streamset,kettle,datax等
● 熟悉elasticsearch、Lucene、Solr、Kylin、Phoenix、Alluxio等相关技
● 具有规划和决策能力,善于捕捉业务需求、架构设计存在的问题,并能给出有效的解决措施和方法 。
● 数据预测,预警,人工智能,图像识别,智能语音,物联网数据采集,标注等。线性计算,神经网络,知识图谱,都要有自己的项目,而且能迅速组建团队,成就你的客户,你就是未来的行家和赢家。
04 两者侧重点不同
★Java架构
n 开发语言
n 分布式,高可用
n 设计模式
n 支撑业务的系统架构或者工具集
★大数据架构
n 不局限开发语言,有Java,Scala,Python,Go等更有裨益
n 人工智能,商业智能,数据挖掘
n 离线,实时,高效率,高可用
n 结构化数据,半结构化数据
n Hadoop生态圈
n 使用的模型越来越复杂,计算量指数级上升
n 组件集
05 总之
了解到用户的痛点,抓住用户的喜好,改善用户的体验。
一个好的产品,一定要让用户感觉到爽。核心问题还是哪些数据值的采集,每个开发,码者都应该站在产品的角度去思考问题,如何描绘出适合我们的一套智能化,自动化的问题解决方案