当前位置: 首页 > 科技观察

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

时间:2023-03-20 12:46:55 科技观察

题图:来自pixabay上一篇文章《如何从传统软件开发顺利过渡到互联网技术开发》,时隔一年,我将重新扩展这篇文章,使其更具可操作性。为什么我们需要转型?云计算的盛行导致许多产品被云化。此外,长期专注于业务发展,导致技术人员感到乏味,没有提升空间,自我存在感和成就感急剧下降。另一个创造财富的神话,充满吸引力并有很大的增长空间。这篇文章也是在上一篇文章的基础上,从一些简单的点入手,介绍一些常用的开发技巧。从单体应用开发到分布式应用开发,技术栈的变化必然带来学习和工作上的大量变化。下面列出几点,帮助想转型的朋友掌握这些技巧,以便更好的融入新的团队。分布式通信技术。单体应用几乎不涉及系统之间的交互,或者一些以旧的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)技术已经模糊了两者之间的界限,它们共存共存。下面是一些进阶的进阶点。这些要点不一定要掌握,但后面肯定会遇到。如果技能比较多,可以适当探索一两个,开阔眼界,完善格局。链接跟踪技术。单个系统中的日志可以按照系统交互的顺序输出。单体系统拆分后,系统日志分别存在于各个子系统中,更难区分请求顺序,导致跟踪定位问题繁琐复杂。.Dapper论文的出现催生了大量的开源组件,Zipkin、Pinpoint、CAT等被广泛使用。集群部署。听起来比较雄心勃勃,但无非是把原来机器所做的工作分配到不同的机器上,对外提供高可用性和计算能力。几乎每一个使用到的中间件,都会有主从、主备、集群、高可用等部署策略。高可用技术应该与集群技术密切相关。它更多用于处理单点故障。简称为HA(Highavailable)。比如keepalived可能经常被用来保证Nginx、Apache、Tomcat的HA策略;比如Supervisor会用来保证某些进程挂掉后自动拉起。容器技术。Docker应用的火爆,让云原生应用更上一层楼。Kubernetes等容器编排工具加速了云原生应用(CloudNative)的普及,CNCF孵化的各类开源中间件也为业务提供了强大的技术支持。由于以上技术要点在传统的软件开发过程中很少涉及,所以在工作之余有必要去实践和掌握,这对后续的求职面试也有很大的帮助。没有工作场景,就没有相应的技术。没有相应的技术支持,你就没有机会进入互联网行业。毕竟很多公司都希望你来了就能上手,能产生价值,而不是先培训一两个月再上岗。