后端开发需要学什么
后端开发需要学习的内容有编程语言的相关知识,例如Java、PHP语言等;数据库的相关知识,后端开发一定离开不了数据库的支持,它是用于保存数据信息的库;常用于开发框架的相关知识,框架为我们的开发提高了大量的方法封装;http协议的相关知识。
编程语言学习
对于初学者来说,Java入门是一个不错的选择。它是一门面向对象的编程语言,除了学习它的基本语法以外,我们还需要了解封装,继承,多态等特性,因为后面所学的框架中的技术都依赖于它。所以在学习Java时一定要打好基础。
数据库
做后端开发一定离开不了数据库的支持,它是用于保存数据信息的库。我们可以将数据库看成是Excel中的数据表,数据库中的每一个table就类似于Excel中的sheet,db就是每一个Excel文件,而sql语句就是一条条指令,可以帮助我们操作里面的数据。对于数据库的学习,mysql数据库最适合入门。
框架学习
框架为我们开发提高了大量的方法封装,我们可以直接调用它来解决问题,大大提高了开发效率。同时框架可以帮助我们分层编写代码利于后期维护。另外它还可以做一些安全防护,保护我们的数据安全。
http协议
浏览器与服务器通过http协议交互,其实就是相互之间传递一串特定格式的字符串。get参数,post参数,url,和cookie等信息其实都包含在这字符串里面。所以说http协议是一个重要的存在,也是我们学习后端开发一个必不可少的要点。
如果要学好后端,要拿高工资,要有更好的发展前景,后台开发服务必须学会解决三高问题:高并发、高可用、高性能.
一 高并发
我们的开发的后台服务器应付一些小并发场景绰绰有余,但是随着互联网应用业务量的上涨,对后台服务端的请求数剧增,高并发需求随之而来,高并发指的就是高 TPS 和高 QPS TPS (Transactions Per Second)每秒事务数 QPS(Query Per Second)每秒查询数等。 对于高并发服务必须改变传统的单进程模型,才能处理的过来如此海量的请求。处理高并发,我们要学习下面技术来处理这个问题
多进程
对于高并发的服务请求,由于后台服务一般都是 IO 密集型应用,IO 密集型应用就是大部分 CPU 时间用在网络 IO 上,相对的是 CPU 密集型应用大部分时间花在数据计算上。 大多数的后台服务程序都是 IO 密集型的应用,网络 IO 的时候 CPU 等待白白浪费时间, 这就告诉我们 CPU 的潜力还没有完全发挥,所以当一个进程的处理能力达到上限,我们可以多创建几个进程,这就是多进程模型。
多线程
多线程与多进程类似,实际在Linux系统中线程是由轻量级的进程 LWP(Light-weight process)实现,多线程方式实现的后台服务相对于多进程更加轻量,因为多线程是在同一个进程内部实现。 不过多线程也会带来新的问题,比如全局数据竞争和同步问题,引入线程锁还要防止死锁的发生。
协程
那什么是协程呢?协程 Coroutines 是一种比线程更加轻量级的微线程。类比一个进程可以拥有多个线程,一个线程也可以拥有多个协程,因此协程又称微线程和纤程。可以粗略的把协程理解成子程序调用,每个子程序都可以在一个单独的协程内执行。
异步回调
所谓异步回调就是,服务端发起 IO 请求的线程不等网络 IO 线程操作完成,就继续执行随后的代码,一般请求线程需要先注册一个回调函数,当IO 完成之后网络IO线程通过调用之前注册的回调函数来通知发起 IO 请求的线程,这样发起请求的线程就不会阻塞住等待结果,提高了服务处理性能
二 高性能
按以上服务模型可以提高服务本身处理能力,高性能后台服务往往还会利用多种技术、从多个维度优化提高性能。比如采用CDN(Content Delivery Network)内容分发网络,存储和分发使用户就近获取内容,缩短响应时间;采用池化技术,避免频繁的资源分配与回收;采用服务集群,横向扩展服务能力;采用缓存技术,热点数据加入缓存,减少数据库访问。
1.CND 内容分发技术
2.池化技术:数据库连接池,线程池
3.集群化
4.技术
三 高可用
高可用即保证服务的稳定性,不出现重大问题或宕机,常见的解决高可用思路是冗余和负载均衡。冗余的意思就是多部署几台服务器,当其中一台挂掉另外一台能顶上。通过负载均衡技术实现对流量的动态调配,不至于出现大量流量冲击某台机器出现请求不均匀,软件负载均衡技术可以通过DNS、Nginx、LVS等技术实现。这里主要学习的技术有:
1.负载均衡技术,软硬件负载均衡
2.限流隔离降级技术
3.应用层容灾,资源隔离熔断
4.异地多活
三高问题是后端开发的主流问题,也是作为后端开发高级工程师必须掌握的问题,要能灵活运用这些技术解决企业级项目问题,我们路还很长,与其在迷惘,不如抓紧时间学习后端开发技术,提高我们技术水平,才是后端程序员最需要做的事情。