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

为何要转型呢?云计算的盛行,致使不少产品已经云化。另外,长期专一于业务开发致使技术人员自觉乏味,没有提高空间,自我存在感、成就感大幅降低,而互联网、移动互联网、物联网、大数据、人工智能等一波又一波的浪潮,一个又一个造富神话,充满了吸引力,而且有很大的成长空间。面试

本文也是基于前文的基础上,从一些简单的点入手,引入一些常常用到的开发技能点。从单体应用开发,过渡到分布式应用开发,技术栈的变动必然致使学习、工做上产生不小的变化,如下列出几点,来帮助想要转型的朋友掌握这些技能,以便更好的融入到新团队中去。数据库

  • 分布式通信技术 。单体应用几乎不涉及到系统间的交互,或者有些经过老旧的WebService的形式进行交互,互联网分布式系统倾向于采用轻量化的、更高效率的通信方式,好比基于HTTP、RPC协议等,了解基本的原理才能更好的使用它们,常见的,再掌握因此你应当掌握一些经常使用的分布式框架,好比常见的Apache Dubbo,Spring Cloud,Google gRPC等等。数据交互的格式以有轻量的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攻击、撞库、拖库等等,都须要在开发、测试、运维过程当中重点关注。 OWASP TOP 10 或 CWE top 25 都有比较详细的描述,能够关注下。多线程

  • 运维层面 。Linux常见的操做应当掌握,毕竟咱们不少的服务器都是运行的x86架构下的Linux服务器中,即使是不一样的分发版本,命令不少也是通用的。Devops文化已经再也不陌生,开发&运维已经不可分割开来单独做业务,持续集成(CI)、持续部署(CD)技术将两者的边界变的更模糊,共生共存。架构

下面蝗几点高级进阶点,这些点并不是必需要掌握,但后续确定会遇到,技多不压身,有条件的话,能够适当的探索一二,扩展眼界,提高格局。

  1. 链路追踪技术 。单个系统里的日志能够按系统交互的前后顺序输出,单系统分拆后,系统日志分别存在于各个子系统中,再区分请求的前后顺序难度就比较大了,致使追踪定位问题,比较繁琐复杂。还好Google又一次引领了潮流,Dapper论文的出现,催生出一大批开源组件的出现,Zipkin、Pinpoint、CAT等应用比较普遍的几个。

  2. 集群部署 。听起来比较搞大上,无非是将原来一台机器干的事,分散在不一样机器执行而已,对外提供较高的可用性、计算能力。对于每一个用到的中间件几乎都会有主从、主备、集群、高可用等部署策略。

  3. 高可用技术 ,与集群技术应该是关联性很大的,更可能是来应对单点故障,简写称为HA(High available),好比可能会常常用到keepalived来保证Nginx、Apache、Tomcat的HA策略;好比会用到Supervisor来保证某些进程挂掉后,自动拉起。

  4. 容器技术 。Docker应用的普及,将云原生应用的提到史无前例高度。Kubernate等容器编排工具更加快了云原生应用(Cloud Native)的普及,CNCF孵化下的各类开源中间件也为业务提供了强大的技术支撑。

因为传统软开发过程当中较少的涉及到如上一些技术点,因此须要在工做之余进行练习掌握,这对后续的面试求职也有很大的帮助。没有工做场景,就没有掌握相应的技术,没有相应的技术支撑,就没有机会进入互联网行业,毕竟不少公司都是但愿你来就能够上手产出价值,而不是培训一两月时间再上岗。

做者:growithus来源:歪脖贰点零

相关文章
相关标签/搜索