全栈必备的技术栈设想

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/53239124

参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜。


实在没想到会有这么多朋友关注这个专题,会场有了些拥挤,呼吸也不那么舒服了。答应朋友们的事,今天就做到,下面是昨天的PPT内容和简要说明,详细内容还请关注CSDN 和SDCC的相关发布。


惯例是开始介绍自己,老码农,都没什么可吹嘘的地方。



看一下工程师和架构师的区别,简单地,工程师关注的是功能和代码性能,而架构师关注的是业务和系统的性能等非功能性约束。全栈不是全能,只要覆盖了所使用的技术栈就是全栈,例如LNMP,Linux+Nginx+Mysql+PHP。全栈架构师关注的是业务所采纳的全部技术栈,以及技术栈所涉及的系统性能、安全,高可用等诸多因素。



全栈(full stack developer)好像起源于facebook中对工程师的一种称谓,全栈架构师估计是老曹的杜撰。全栈的出现大概有4个方面:系统的性能瓶颈定位,团队间的沟通障碍,业务的救火灭火,以及团队的资源紧张。尤其的小型创业团队,战力的有限会导致全栈的产生。


和习武一样,我想试图探讨一下全栈的套路,很多能力不是通过当头棒喝产生的。郭大侠需要降龙十八掌,令狐冲以无招胜有招也需要独孤九剑。我觉得全栈的技术栈可以主要分为3个切面:技能,性能 和效率。下面逐一简要阐述:


工其事必利其器,环境在效率中是第一位的。具体可看《老曹眼中的开发学习环境》,不在赘述。


全栈应该掌握4种编程语言:Java,Objc/C/C++, Python,JavaScript。 语言没有优劣,不同语言有各自的胜场。


每个人都不是一个人在战斗,团队敏捷是整体效率的关键。可以使用Trello或worktile之类的工具做协同,以Jinkens等工具支持CI或者CD,了解Scrum中什么是backlog,什么是UserStory,如何控制sprint。同时,敏捷不是以质量的丧失为代价的。



再进一步,就是devops了,可以参考《DevOps 全栈必备双刃剑》。



从下向上看一下 全栈的所需技能,第一个就是操作系统,可参考《老曹眼中的Linux基础》。


数据是系统的核心,必须要了解文件系统,对象存储和关系型数据库,只有NoSQL至少要关注redis和mongodb,更多可以可参考《NoSQL与大数据》。



网络是一个覆盖更广的领域,至少要了解七层协议模型,DNS,TCP/IP,HTTP,以及网络类型对网络编程的影响,会上只有简单举例,以后择机仔细探讨一下。



框架和库使用锁采用的语言息息相关的,不同语言又有着不同的框架与库,简直是浩如烟海,对框架与库的选择主要从面相领域和面向场景入手,有比较才能有选择。


安全是个与非门,没事一切都好,有事就是大事。基本上,可以从传输,网络,代码和数据四个层面掌握有关安全的基础知识。



至于架构方法,现在最热的莫过于微服务架构了。服务的划分与业务密切相关,服务独立后要考虑服务的发现和服务间的通信,最后是服务治理,可以从这四个方面专研相关的技术。


云服务的出现使得小团队可以做大事情,关于混合云的解释可参考老曹的旧文《理解一下混合云》。


从趋势来看,大数据必将成为工程师团队的重要战力,包括专业知识,数学算法,计算环境三个方面。就计算环境而言,涵盖了Hadoop的生态圈,如果只有一个必备技能,老曹觉得就应该是Spark了,可以参考《架构大数据应用》旧文。


个人以为,性能在诸多非功能性约束中第一重要,直接影响用户体验。首先要从业务和代码层面保障性能,而单元测试是一个必要条件。正像PingCAP CTO 黄东旭所说的,“talk is cheap, show me the tests."



接下来是运行时调优,或者认为是单机性能。从加载和依赖开始,到 JVM调优,再到Linux 内核参数调优。 对于 JVM 调优,给朋友做个广告,中生代技术群中的 江南白衣 (公众号:春天的旁边)有一篇干货文章,特别向大家推荐。


数据库是整个系统中的慢性子,关注系统的性能,日志分析比不可少,LEK可能是第一首选。数据访问必须是高可用的,数据连接池的选择和使用都是考验功夫的。


缓存是减少负载,提高系统性的必备技术。可以从客户端,网络侧,服务端三个环节对缓存进行分类,具体可以参考《老曹眼中的缓存技术》。


负载均衡同样是一种以空间换时间的技术,具体可参考《老曹眼中的负载均衡》。


传输的性能可以依靠消息队列来提升,ZeroMQ可以用在系统内,而ActiveMQ是Java 程序猿的福音,对于高并发和高容错而言,RabbitMQ可能是不错的选择,Kafka是大量数据的传输必备。



啰哩啰嗦,只是想探讨一下全栈的套路,也许这本身就是一个伪命题。



这是我非常喜欢的一句话,印在公司的墙上,“以匠心,铸非凡”,送给每一个热爱技术的朋友!


微信扫一扫
关注该公众号

目录
相关文章
Google Earth Engine(GEE)——用填充后的Landsat7影像进行LST地表温度计算(C值转化为K值)
Google Earth Engine(GEE)——用填充后的Landsat7影像进行LST地表温度计算(C值转化为K值)
280 2
|
Java 关系型数据库 MySQL
ChaosBlade常见问题之box-starter 启动的时候不停的更新如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
230 1
|
存储 JSON 监控
APM监控 · 入门篇 · Android端测监控平台建设(1)
APM 全称 Application Performance Management & Monitoring (应用性能管理/监控) 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿、响应速度慢、发热严重、流量电量消耗大等问题的时候,很可能就会卸载掉我们的 App。这也是我们在目前工作中面临的巨大挑战之一,尤其是低端机型。
4252 0
APM监控 · 入门篇 · Android端测监控平台建设(1)
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
363 32
英伟达玩转剪枝、蒸馏:把Llama 3.1 8B参数减半,性能同尺寸更强
【9月更文挑战第10天】《通过剪枝和知识蒸馏实现紧凑型语言模型》由英伟达研究人员撰写,介绍了一种创新方法,通过剪枝和知识蒸馏技术将大型语言模型参数数量减半,同时保持甚至提升性能。该方法首先利用剪枝技术去除冗余参数,再通过知识蒸馏从更大模型转移知识以优化性能。实验结果显示,该方法能显著减少模型参数并提升性能,但可能需大量计算资源且效果因模型和任务而异。
284 8
|
11月前
|
弹性计算 运维 网络安全
评测报告:阿里云操作系统智能助手OS Copilot体验
评测报告:阿里云操作系统智能助手OS Copilot体验
161 3
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
605 8
|
人工智能 资源调度 机器人
揭秘重磅嘉宾!2024云栖大会看什么
2024云栖大会来了! 将于9月19日至9月21日 在杭州云栖小镇召开 汇集全球最新云计算、AI硬科技
555 8
揭秘重磅嘉宾!2024云栖大会看什么
|
人工智能 开发框架 前端开发
移动应用开发的未来趋势:跨平台框架与AI的融合
在数字化时代的浪潮中,移动应用已成为人们日常生活和工作中不可或缺的一部分。随着技术的不断进步,移动应用开发领域也迎来了新的变革。本文将探讨移动应用开发的未来趋势,重点关注跨平台框架的发展以及人工智能(AI)技术在其中的应用。通过分析当前市场上流行的跨平台开发框架,如React Native、Flutter等,以及AI技术如何改变移动应用的开发方式,我们将揭示这些技术如何共同推动移动应用开发进入一个新的时代。
309 27
|
Linux 调度
在Linux中,任务计划格式中,前面5个数字分表表示什么含义?
在Linux中,任务计划格式中,前面5个数字分表表示什么含义?