志在指尖
用双手敲打未来

如何从传统软件开发顺利过渡到互联网技术开发:硬技艺

之前一篇《如何从传统软件开发顺利过渡到互联网技术开发》,时隔一年,再重新延伸下本文,使其更具有可操作性。
为什么要转型呢?云计算的盛行,招致很多产品曾经云化。另外,长期专注于业务开发招致技术人员盲目乏味,没有提升空间,自我存在感、成就感大幅降落,而互联网、挪动互联网、物联网、大数据、人工智能等一波又一波的浪潮,一个又一个造富神话,充溢了吸收力,并且有很大的生长空间。
本文也是基于前文的根底上,从一些简单的点动手,引入一些经常用到的开发技艺点。从单体应用开发,过渡到散布式应用开发,技术栈的变卦必然招致学习、工作上产生不小的变化,以下列出几点,来协助想要转型的朋友控制这些技艺,以便更好的融入到新团队中去。
散布式通讯技术。单体应用简直不触及到系统间的交互,或者有些经过老旧的WebService的方式停止交互,互联网散布式系统倾向于采用轻量化的、更高效率的通讯方式,比方基于HTTP、RPC协议等,理解根本的原理才干更好的运用它们,常见的,再控制所以你应当控制一些常用的散布式框架,比方常见的ApacheDubbo,SpringCloud,GooglegRPC等等。数据交互的格式以有轻量的JSON替代原先比拟臃肿的xml格式。如何从传统软件开发顺利过渡到互联网技术开发:硬技艺
缓存技术。缓存可谓是进步应用效率的大杀器,在互联网产品应用十分普遍,控制几个常见的缓存中间件是很有必要的。也很多应用场景中,也只能缓存才干保证应用的完好性,比方秒杀场景。缓存按应用场景也有辨别,如本地缓存EHcache,Guava等,散布式缓存Redis,Memcache,hazelcast等等。
非构造化数据存储。互联网产品更多会产生一些碎片化的数据,且没有严谨的数据构造,这些些场景上采用非构造化存储势在必行。依据不同的数据类型,还能够细化分为不同的NOSQL库,比方说文档数据库(MongoDB等)、KV库(Redis,LevelDB等)、图库(Neo4j)、列数据库(Hbase等)、搜索引擎(Solr、ElasticStack等)。
异步、多线程技术。同步的一问一答,能比拟及时的处置业务,但当业务量大的时分,为进步系统可用性、处置效率,常常会停止异步、多线程方式停止处置。线程池技术,高并发编程显的尤为重要。
音讯中间件。MQ自然具有系统解耦的优势,应用场景也比拟丰厚,如在散布式事务中作为中间办来谐和事务、统一的音讯(APP推送,短信等等)推送分发、延迟队列,特别是在高并发高承载的状况下停止削峰平谷,缓解系统压力。比拟常见的RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka等等。
散布式事务。单体系统的事务很容易控制,当系统扩展为很多个子系统时,事务会分面在各个子系统中,只要保证散布式事务的精确性,才干保证数据的完好性。目前如今很通用的散布式开源处理计划比拟少,大家都在采用本人的计划在做,阿里最近开源的Fescar是一个比拟有潜力的计划,还有华为的SAGA计划等等。
平安开发。平安开发在一切系统中都存在,只不过传统的单体应用开发,特别是外包行业,根本很少思索。而互联网产品面向群众,所以网络平安、数据平安更为关键,比方常见的XSS攻击、CSRF攻击、撞库、拖库等等,都需求在开发、测试、运维过程中重点关注。OWASPTOP10或CWEtop25都有比拟细致的描绘,能够关注下。
运维层面。Linux常见的操作应当控制,毕竟我们很多的效劳器都是运转的x86架构下的Linux效劳器中,即使是不同的分发版本,命令很多也是通用的。Devops文化曾经不再生疏,开发&运维曾经不可分割开来单独作业务,持续集成(CI)、持续部署(CD)技术将二者的边境变的更含糊,共生共存。
下面蝗几点高级进阶点,这些点并非必需要控制,但后续肯定会遇到,技多不压身,有条件的话,能够恰当的探究一二,扩展眼界,提升格局。
链路追踪技术。单个系统里的日志能够按系统交互的先后次第输出,单系统分拆后,系统日志分别存在于各个子系统中,再辨别恳求的先后次第难度就比拟大了,招致追踪定位问题,比拟繁琐复杂。还好Google又一次引领了潮流,Dapper论文的呈现,催生出一大批开源组件的呈现,Zipkin、Pinpoint、CAT等应用比拟普遍的几个。
集群部署。听起来比拟搞大上,无非是将原来一台机器干的事,分散在不同机器执行而已,对外提供较高的可用性、计算才能。关于每个用到的中间件简直都会有主从、主备、集群、高可用等部署战略。
高可用技术,与集群技术应该是关联性很大的,更多是来应对单点毛病,简写称为HA(Highavailable),比方可能会经常用到keepalived来保证Nginx、Apache、Tomcat的HA战略;比方会用到Supervisor来保证某些进程挂掉后,自动拉起。
容器技术。Docker应用的提高,将云原生应用的提到史无前例高度。Kubernate等容器编排工具愈加快了云原生应用(CloudNative)的提高,CNCF孵化下的各种开源中间件也为业务提供了强大的技术支撑。
由于传统软开发过程中较少的触及到如上一些技术点,所以需求在工作之余停止练习控制,这对后续的面试求职也有很大的协助。没有工作场景,就没有控制相应的技术,没有相应的技术支撑,就没有时机进入互联网行业,毕竟很多公司都是希望你来就能够上手产出价值,而不是培训一两月时间再上岗。

未经允许不得转载:IT技术网站 » 如何从传统软件开发顺利过渡到互联网技术开发:硬技艺
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载