专栏首页歪脖贰点零如何从传统软件开发顺利过渡到互联网技术开发-硬技能

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

之前一篇《如何从传统软件开发顺利过渡到互联

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

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

  • 分布式通讯技术。单体应用几乎不涉及到系统间的交互,或者有些通过老旧的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),作者:mavenTalk

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试人员正在逐步被自动化取代

    最近这半年,我觉察到,在一线的互联网大圈里,产品研发的工程模式,已在悄悄的发生转变。

    歪脖贰点零
  • 几张关于微服务、大数据、存储设计的思维导图

    提到存储,必然是涉及到文件系统、数据库。常见的文件存储基本上分布式文件系统,比如之前文章中提到的Zimg,FastDFS等都是,从结构上划分:结构化数据库,非结...

    歪脖贰点零
  • 软技能:软件开发者职业生涯指南

    看标题是不是有些眼熟,如果你还对之前的一篇还有印象的话《软技能:代码之外的生存指南》,初读此书,确实为之眼前一亮,悔不早读。而此书,便于作者下一篇的延续,更偏向...

    歪脖贰点零
  • 亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

    对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术。然而,行业里很多朋友对缓存技术的了解与掌握,仅...

    李鹏
  • mybatis 详解(九)------ 一级缓存、二级缓存

      上一章节,我们讲解了通过mybatis的懒加载来提高查询效率,那么除了懒加载,还有什么方法能提高查询效率呢?这就是我们本章讲的缓存。   本篇源码下载链接:...

    IT可乐
  • Mybatis中的延迟加载 一级缓存 二级缓存

    问题:在一对多中,当我们有一个用户,它有100个账户。 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来?

    韦恩少爷的背
  • Spring-AOP实践 - 统计访问时间

    公司的项目有的页面超级慢,20s以上,不知道用户会不会疯掉,于是老大说这个页面要性能优化。于是,首先就要搞清楚究竟是哪一步耗时太多。 我采用spring aop...

    Ryan-Miao
  • java系统高并发的解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要...

    MonroeCode
  • java系统高并发的解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求...

    MonroeCode
  • USACO全部月赛及GateWay数据

    月赛: 以07年open为例,网站如下 http://contest.usaco.org/OPEN07 其他的格式是http://contest.usaco.o...

    HansBug

扫码关注云+社区

领取腾讯云代金券